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. 23 Introduction Handouts, Course Web Site  
Aug. 23 Paradigms   [Watt90]
Aug. 23 Course Planning    
Aug. 25 Functional Paradigm [Thompson96] Ch. 1 [Hudak89], [Watt90]
Aug. 30-Sept. 15 Haskell [Thompson96] Ch. 2-7, 9-10, and 12-17, code for eval (version 1), code for eval (version 2) [Hudak-Peterson-Fasel00], [Hudak00], [Jones-etal02], [Jones-etal02b], [Thompson96] Ch. 8, 11, and 18-20
Sept. 20-29 Laziness, Syntactic Sugars [Thompson96] Ch. 17 and 18 [Jones-etal02], [Thompson96] Ch. 19, [Wadler97]
Oct. 4-6 λ-Calculus [Gunter92] Ch. 2 and 8 [Hudak89], [Hennessy90], [Schmidt94] Ch. 6
Oct. 11 Exam 1 [Thompson96] Ch. 1-17 [Hudak-Peterson-Fasel00], [Hudak00], [Jones-etal02], [Jones-etal02b], [Thompson96] Ch. 19-20, [Watt90]
Oct. 13-18 Monads [Thompson96] Ch. 18 [Jones-etal02], [Wadler97]
Oct. 20 Course Review and Planning    
Oct. 20 Object-Oriented Paradigm   [Watt90]
Oct. 20-Nov 15 Scala [Odersky-etal04] [Odersky05] [Odersky-etal05] [Odersky-etal05a] [ScalaWeb]
Nov. 17 Exam 2 [Gunter92] Ch. 2 and 8 [Odersky-etal04] [Odersky05] [Hudak89], [Hennessy90], [Schmidt94] Ch. 6 [Odersky-etal05] [Odersky-etal05a] [ScalaWeb], [Watt90]
Nov. 22-Nov. 24 Thanksgiving Break, no class    
Nov. 29 Course Review and Planning    
Nov. 29-Dec 6 AspectJ [Laddad03] [AspectJTeam02], [Kiczales-etal97], [Kiczales-etal01], [Kiczales-etal01b] [Kiselev03]
Dec. 8 Course Summary    
Dec. 8 Course Evaluations    
Dec. 15 (Thurs.), 12:00pm-2:00pm Final Exam [Laddad03] [AspectJTeam02], [Filman-Friedman00] [Kiczales-etal97], [Kiczales-etal01], [Kiczales-etal01b], [Kiselev03], [Watt90]

Return to top

Bibliography

[AspectJTeam02]
The AspectJTeam. The AspectJ(TM) Programming Guide. http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-home/doc/progguide/index.html
[Filman-Friedman00]
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. http://ic.arc.nasa.gov/~filman/text/oif/aop-is.pdf
[Gunter92]
C. A. Gunter. Semantics of Programming Languages: Structures and Techniques. MIT Press, Cambridge, Mass., 1992.
[Hennessy90]
Matthew Hennessy. The Semantics of Programming Languages. Wiley, New York, NY, 1990.
[Hudak89]
Paul Hudak. Conception, Evolution, and Application of Functional Programming Languages. ACM Computing Surveys 21(3):359-411, Sep. 1989.
[Hudak00]
Paul Hudak. The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press, New York, NY, 2000.
[Hudak-Peterson-Fasel00]
Paul Hudak, John Peterson, and Joseph Fasel. A Gentle Introduction to Haskell: Version 98. June 2000. http://www.haskell.org/tutorial/
[Kiczales-etal01]
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.
[Kiczales-etal01b]
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. http://portal.acm.org/citation.cfm?doid=383845.383858
[Kiczales-etal97]
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.
[Kiselev03]
Ivan Kiselev. Aspect-Oriented Programming with AspectJ. Sams Publishing, 2003.
[Laddad03]
Ramnivas Laddad. AspectJ in Action: Practical Aspect-Oriented Programming. Manning, Greenwich, CT, 2003.
[Jones-etal02]
Simon Peyton Jones, et al. Haskell 98 Language: The Revised Report. 2002. http://www.haskell.org/definition/
[Odersky-etal04]
Martin Odersky, Philippe Altherr, Vincent Cremet, Burak Emir, Sebastian Maneth, Stéphane Micheloud, Nikolay Mihaylov, Michel Schinz, Erik Stenman, and Matthias Zenger. An Overview of the Scala Programming Language. École Polytechnique Fédrale de Lausanne, 1015 Lausanne, Switzerland. Technical Report IC/2004/64, 2004. http://scala.epfl.ch/docu/files/ScalaOverview.pdf
[Odersky-etal05]
Martin Odersky, Philippe Altherr, Vincent Cremet, Burak Emir, Sebastian Maneth, Stéphane Micheloud, Nikolay Mihaylov, Michel Schinz, Erik Stenman, and Matthias Zenger. The Scala Language Specification Version 1.0. http://scala.epfl.ch/docu/files/ScalaReference.pdf
[Odersky-etal05a]
Martin Odersky, Philippe Altherr, Vincent Cremet, Burak Emir, Sebastian Maneth, Stéphane Micheloud, Nikolay Mihaylov, Michel Schinz, Erik Stenman, and Matthias Zenger. An Introduction to Scala. http://scala.epfl.ch/docu/files/ScalaIntro.pdf
[Odersky05]
Martin Odersky. Scala by Example. Draft of October 15, 2005. http://scala.epfl.ch/docu/files/ScalaByExample.pdf
[Jones-etal02b]
Simon Peyton Jones, et al. Haskell 98 Libraries: The Revised Report. 2002. http://www.haskell.org/definition/
[ScalaWeb]
The Scala Programming Language: Documentation. Web site, http://scala.epfl.ch/docu/index.html, accessed August 24, 2004.
[Thompson96]
Simon Thompson. Haskell: The Craft of Functional Programming, Second Edition. Addison-Wesley Longman, 1996. ISBN 0-201-34275-8.
[Schmidt94]
David A. Schmidt. The structure of typed programming languages. MIT Press, Cambridge, Mass., 1994.
[Watt90]
David Watt. Programming language concepts and paradigms. Prentice-Hall, New York, NY, 1990.
[Wadler97]
Philip Wadler. How to declare an Imperative. ACM Computing Surveys, 29(3):240-263, Sep. 1997.

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 Tuesday, November 8, 2005.

This web page is for the Fall 2005 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.iastate.edu.