Fall 2004 Course Overview
From the Blue Book:
"Methods for synthesizing functional programs from formal specifications and verifying correctness properties of programs. Topics include higher-order functions, pattern-matching, abstract algebraic data types, polymorphic types, advanced typing issues such as type classes and higher-order modules, lazy/eager evaluation, equational reasoning, and realization of effects via continuations and monads. The functional language Haskell and/or ML is used." [In fact Haskell will be used this term.]
Note: this course is quite a bit different from the functional programming ideas learned in CS201, for three reasons: (1) the language used, Haskell, is very different from both Scheme and ML, (2) many more advanced ideas will be explored, such as monads, monad transformers, arrows, type classes, kinds, lazy evaluation, etc., and (3) several interesting "multimedia" applications will be explored, such as graphics, animation, computer music, and robotics.
Also, although the ideas taught in this course do not appear in many mainstream languages such as Java or C++, they are nevertheless powerful tools that can be used in the construction of any robust, modular, and effective software system. Many of the ideas can be used to at least think about and structure Java programs, for example, and many of the ideas are likely to appear in future mainstream languages, just as Java uses many ideas invented 20 years ago in programming language research.
You should have taken CS-201 and CS-202 (or equivalents), and have a couple of years of programming experience. CS-223 (or equivalent) is also recommended, but not required.
Meeting time and place:
MWF, 10:30-11:20 AM, in AKW 200.
Web Page and Discussion Forum:
This web page (plucky.cs.yale.edu/cs429) will
source of programming assignments, solutions, reading material, and other relevant information.
We will also use the Yale Classes Server (classes.yale.edu)
as a resource for a chat room and, more importantly, a discussion forum.
Please read the forum regularly -- it may contain
important information, such as hints for and/or corrections to homework assignments!
To use the forum, you need to enroll in the course, log into
classes.yale.edu , and then click on "Forum"
at the bottom of the webpage.
Your grade will be based on a combination of homework assignments and the final exam (or final project). You are expected to do all of the homework assignments, which will count as a significant part of your grade!
Happy Haskell Hacking!!