Course Syllabus

The table below gives the planned syllabus for the course. This syllabus is subject to change, as topics will be decided upon during the first few course meetings. When it becomes necessary to revise the schedule, then this page will be updated to reflect the changes.

The references in the readings are given in the bibliography below.

Dates Topics Readings Optional Readings
Aug. 24 Introduction Handouts, Course Web Site  
Aug. 24 Paradigms   [Watt90]
Aug. 24 Course Planning    
Aug. 26 Functional Paradigm [Thompson96] Ch. 1 [Hudak89], [Watt90]
Aug. 26-Sept. 16 Haskell, code for eval (version 1), code for eval (version 2) [Thompson96] Ch. 2-7, 9-10, and 12-17 [Hudak-Peterson-Fasel00], [Hudak00], [Jones-etal02], [Jones-etal02b], [Thompson96] Ch. 8, 11, and 18-20
Sept. 21-23 λ-Calculus [Gunter92] Ch. 2 and 8 [Hudak89], [Hennessy90], [Schmidt94] Ch. 6
Sept. 28 Laziness, Syntactic Sugars, Monads [Thompson96] Ch. 17 and 18 [Jones-etal02], [Thompson96] Ch. 19, [Wadler97]
Sept. 30 Course Review and Planning    
Sept. 30 Declarative Paradigm   [Watt90]
Sept. 30 λProlog [Miller98] Ch. 2-4 [Miller98] Ch. 1, [Sterling-Shapiro86]
Oct. 5 Exam 1 [Gunter92] Ch. 2 and 7, [Thompson96] Ch. 1-17 [Hennessy90], [Hudak89], [Hudak-Peterson-Fasel00], [Hudak00], [Jones-etal02], [Jones-etal02b], [Schmidt94] Ch. 4, [Thompson96] Ch. 19-20, [Watt90]
Oct. 7-12 λProlog [Miller98] Ch. 2-4 [Miller98] Ch. 1, [Sterling-Shapiro86]
Oct. 12-21 λProlog semantics [Miller98] Ch. 10 [Miller98] Ch. 5-9, [Sterling-Shapiro86]
Oct. 21-26 Operational Semantics   [Hennessy90] Ch2, 4
Oct. 26 Course Review and Planning    
Oct. 28-Nov. 11 AspectJ [Laddad03] [AspectJTeam02], [Kiczales-etal97], [Kiczales-etal01], [Kiczales-etal01b] [Kiselev03]
Nov. 16 Exam 2 [Miller98] Ch. 2-4, 10 [Hennessy90] Ch2, 4 [Miller98] Ch. 1, 5-9, [Sterling-Shapiro86]
Nov. 18 AspectJ [Laddad03] [AspectJTeam02], [Kiczales-etal97], [Kiczales-etal01], [Kiczales-etal01b] [Kiselev03]
Nov. 23-Nov. 25 Thanksgiving Break, no class    
Nov. 30-Dec. 2 AspectJ [Laddad03] [AspectJTeam02], [Kiczales-etal97], [Kiczales-etal01], [Kiczales-etal01b] [Kiselev03]
Dec. 7 Semantics of Aspect-Oriented Languages [Filman-Friedman00], [Kiczales-etal01], [Wand-Kiczales-Dutchyn02] [AspectJTeam02]
Dec. 9 Course Summary    
Dec. 9 Course Evaluations    
Dec. 13 (Mon.), 12:00pm-2:00pm Final Exam [Filman-Friedman00] [Kiczales-etal01], [Laddad03], [Wand-Kiczales-Dutchyn02] [AspectJTeam02], [Kiczales-etal97], [Kiczales-etal01], [Kiczales-etal01b], [Kiselev03], [Watt90]

Return to top


The AspectJTeam. The AspectJ(TM) Programming Guide.
Robert E. Filman and Daniel P. Friedman. Aspect-Oriented Programming is Quantification and Obliviousness. In OOPSLA 2000 Workshop on Advanced Separation of Concerns, Minneapolis, MN, Oct, 2000.
C. A. Gunter. Semantics of Programming Languages: Structures and Techniques. MIT Press, Cambridge, Mass., 1992.
Matthew Hennessy. The Semantics of Programming Languages. Wiley, New York, NY, 1990.
Paul Hudak. Conception, Evolution, and Application of Functional Programming Languages. ACM Computing Surveys 21(3):359-411, Sep. 1989.
Paul Hudak. The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press, New York, NY, 2000.
Paul Hudak, John Peterson, and Joseph Fasel. A Gentle Introduction to Haskell: Version 98. June 2000.
Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An Overview of AspectJ. In J. Lindskov Knudsen (ed.), ECOOP 2001 --- Object-Oriented Programming 15th European Conference, Budapest Hungary, pages 327-353. Volume 2072 of Lecture Notes in Computer Science, Springer-Verlag, Berlin, June, 1997.
Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. Getting started with AspectJ. Communications of the ACM 44(10):59-65, Oct. 2001.
Gregor Kiczales, John Lamping, Anurag Menhdhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-Oriented Programming. In Mehmet Aksit and Satoshi Matsuoka (eds), ECOOP '97 --- Object-Oriented Programming 11th European Conference, Jyväskylä, Finland, pages 220-242. Volume 1241 of Lecture Notes in Computer Science, Springer-Verlag, New York, NY, June, 1997.
Ivan Kiselev. Aspect-Oriented Programming with AspectJ. Sams Publishing, 2003.
Ramnivas Laddad. AspectJ in Action: Practical Aspect-Oriented Programming. Manning, Greenwich, CT, 2003.
Dale Miller. λProlog: An Introduction to the Language and its Logic, 1998.
Simon Peyton Jones, et al. Haskell 98 Language: The Revised Report. 2002.
Simon Peyton Jones, et al. Haskell 98 Libraries: The Revised Report. 2002.
Simon Thompson. Haskell: The Craft of Functional Programming, Second Edition. Addison-Wesley Longman, 1996. ISBN 0-201-34275-8.
David A. Schmidt. The structure of typed programming languages. MIT Press, Cambridge, Mass., 1994.
Leon Sterling and Ehud Shapiro. The Art of Prolog. MIT Press, Cambridge, Mass., 1986.
David Watt. Programming language concepts and paradigms. Prentice-Hall, New York, NY, 1990.
Philip Wadler. How to declare an Imperative. ACM Computing Surveys, 29(3):240-263, Sep. 1997.
Mitchell Wand, Gregor Kiczales, and Chris Dutchyn. A Semantics for Advice and Dynamic Join Points in Aspect-Oriented Programming. In Gary T. Leavens and Ron Cytron (eds), FOAL 2002 Proceedings: Foundations of Aspect-Oriented Languages Workshop at AOSD 2002, pages 1-8. Department of Computer Science, Iowa State University, Technical Report #02-06, April 2002.

Return to top

Course Content and Policies

The course's content and grading polices are described on separate web pages. See the links on the top left of this page.

Return to top

Last modified Wednesday, December 8, 2004.

This web page is for the Fall 2004 offering of Com S 541 at Iowa State University. The details of this course are subject to change as experience dictates. You will be informed of any changes. Please direct any comments or questions to Gary T. Leavens at