Course Syllabus

The table below gives the planned syllabus for the course. This syllabus is subject to change. If 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. 26 Introduction Handouts, Course Web Site  
Aug. 26 Paradigms   [Watt90]
Aug. 26 Course Planning    
Aug. 28 Expressive Power [Felleisen91] [Mitchell93]
Aug. 28 Functional Paradigm   [Hudak89], [Watt90]
Aug. 28-Sept. 11 Haskell [Thompson96] Ch. 1-7, 9-10, and 12-17 [Hudak-Peterson-Fasel00], [Hudak00], [Peyton-Jones-Hughes99], [Peyton-Jones-Hughes99b], [Thompson96] Ch. 8, 11, and 18-20
Sept. 16 λ-Calculus [Gunter92] Ch. 2 and 7 [Hudak89], [Hennessy90], [Schmidt94] Ch. 6
Sept. 18 Reasoning about Functional Programs [Thompson96] Ch. 8 [Thompson96] Ch. 19
Sept. 23 Module Systems [Thompson96] Ch. 2.4 Ch. 15 [Schmidt94] Ch. 4, [Watt90] Ch. 4
Sept. 23 Course Review and Planning    
Sept. 25 Object-Oriented Paradigm   [Budd02], [Watt90]
Sept. 25-Oct. 2 Smalltalk [Goldberg-Robson89] Ch. 1-14 [Winston97] Ch. 1-31, 38-39
Oct. 7-14 Object-oriented Type Systems [Cardelli88b] [Abadi-Cardelli96]
Oct. 16 Exam 1 [Felleisen91], [Goldberg-Robson89] Ch. 1-14, [Gunter92] Ch. 2 and 7, [Thompson96] Ch. 1-17 [Budd02], [Hennessy90], [Hudak89], [Hudak-Peterson-Fasel00], [Hudak00], [Mitchell93], [Peyton-Jones-Hughes99], [Peyton-Jones-Hughes99b], [Schmidt94] Ch. 4, [Thompson96] Ch. 19-20, [Winston97] Ch. 1-31, 38-39, [Watt90]
Oct. 21 Course Review and Planning    
Oct. 21-Nov. 14 AspectJ [Kiczales-etal01], [Kiczales-etal01b] [AspectJTeam02], [Kiczales-etal97], [Kiselev03], [Laddad03]
Nov. 18 Semantics of Aspect-Oriented Languages [Filman-Friedman00] [Clifton-Leavens02] [Kiczales-etal01], [AspectJTeam02]
Nov. 25-Nov. 27 Thanksgiving Break, no class    
Dec. 2-9 Formal Semantics of Aspect-Oriented Languages [Abadi-Cardelli96] Ch. 6, [Clifton-Leavens-Wand03] [Kiczales-etal01], [AspectJTeam02]
Dec. 11 Course Summary    
Dec. 11 Course Evaluations    
Tues., Dec. 16, 12:00pm-2:00pm Final Exam [Abadi-Cardelli96] Ch. 6, [Cardelli88b] [Clifton-Leavens02] [Clifton-Leavens-Wand03] [Filman-Friedman00] [Kiczales-etal01], [Kiczales-etal01b] [Abadi-Cardelli96] [AspectJTeam02], [Kiczales-etal97], [Kiczales-etal01], [Kiselev03], [Laddad03]

Return to top


Martin Abadi and Luca Cardelli. A Theory of Objects. Springer-Verlag, NY, 1996
Ken Arnold and James Gosling and David Holmes. The Java Programming Language Third Edition. Addison-Wesley, Reading, Mass., 2000.
The AspectJTeam. The AspectJ(TM) Programming Guide.
Timothy Budd. An Introduction to Object-oriented Programming, Third edition. Addison-Wesley, Boston, Mass, 2002.
Luca Cardelli A Semantics of Multiple Inheritance. Information and Computation 76(2/3):138-164, Feb/Mar. 1988.
Curtis Clifton and Gary T. Leavens. Spectators and Assistants: Enabling Modular Aspect-Oriented Reasoning. Iowa State University, Department of Computer Science, TR #02-10, Oct. 2002.
Curtis Clifton, Gary T. Leavens, and Mitchell Wand. Parameterized Aspect Calculus: A Core Calculus for the Direct Study of Aspect-Oriented Languages. Iowa State University, Department of Computer Science, TR #03-13, Oct. 2003.
Matthias Felleisen. On the Expressive Power of Programming Languages. Science of Computer Programming 17(1-3):35-75, Dec. 1991.
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.
Adele Goldberg and David Robson. Smalltalk-80: The Language. Addison Wesley, 1989. ISBN 0201136880.
James Gosling and Henry McGilton. The Java Language Environment: A White Paper. Sun Microsystems, June 1996.
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.
Gary T. Leavens and Todd D. Millstein. Multiple Dispatch as Dispatch on Tuples. In OOPSLA '98 Proceedings, pages 374-387 (Volume 33, number 10 of ACM SIGPLAN Notices October 1998).
Also Department of Computer Science, Iowa State University, TR #98-03b, April 1998, Revised May 1998, July 1998. [abstract] [postscript].
Barbara Liskov with John Guttag. Program Development in Java. Addison-Wesley, Boston, Mass, 2001.
John C. Mithcell. On abstraction and the expressive power of programming languages. Science of Computer Programming 21(2):141-163, Oct. 1993.
James Noble and Jan Vitek and John Potter. Flexible Alias Protection. In Eric Jul (ed.), ECOOP '98 --- Object-Oriented Programming 11th European --- Conference, Brussels, Belgium, pages 158-185. Volume 1445 of Lecture Notes in Computer Science, Springer-Verlag, New York, NY, July, 1998.
Simon Peyton Jones, John Hughes, et al. Haskell 98: A Non-strict, Purely Functional Language. February 1999.
Simon Peyton Jones, John Hughes, et al. Standard Libraries for Haskell 98. February 1999.
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.
David Watt. Programming language concepts and paradigms. Prentice-Hall, New York, NY, 1990.
Patrick Henry Winston. On To Smalltalk. Benjamin Cummings, New York, NY, 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 10, 2003.

This web page is for the Fall 2003 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 leavens@cs-DOT-iastate-DOT-edu (after replacing -DOT- with `.').