![]() |
Computer Science Department |
Programming Languages
CS 331 - Spring 2008
| Date | Topic | Handouts1 | Assignments | |
|---|---|---|---|---|
| 1. | 2/5/08 | BNF grammars |
syllabus using vnc slides1.pdf |
a1.pdf |
| 2. | 2/7/08 | BNF extensions; Introduction to ML | slides2.pdf slides2.sml ML in emacs |
|
| 3. | 2/12/08 | ML lists; Introduction to XML and DTDs | slides3.pdf slides3.sml |
|
| 4. | 2/14/08 | Type systems and type inference; ML functions and pattern matching | slides4.pdf slides4.sml type_safe.cpp type_safe.pl |
a2.pdf |
| 5. | 2/19/08 | Parametric polymorphism; Let expressions in ML; Higher-order functions; Computational patterns: filtering and mapping | slides5.pdf slides5.sml mystery.cpp MysteryClass.java |
|
| 6. | 2/21/08 | Anonymous functions; Currying | slides6.pdf slides6.sml | |
| 7. | 2/26/08 | More currying; Computational pattern: folding; ML datatype declarations | no new slides | a3.pdf |
| 8. | 2/28/08 | polymorphic types; recursive types | slides7.pdf slides7.sml |
|
| 9. | 3/4/08 | `Let' as syntactic sugar in ML; scoping issues; Free versus bound variables | slides8.pdf slides8.sml |
|
| 10. | 3/6/08 | Introduction to the lambda calculus | slides9.pdf slides9.sml |
|
| 11. | 3/11/08 | Substitution, alpha-conversion, beta-reduction | slides10.pdf | a4.pdf |
3/12/08 - First exam - 5:00PM |
||||
| 12. | 3/13/08 | Evaluation strategies: normal order versus application order | slides11.pdf value_name.cpp |
|
| 13. | 3/18/08 | Reduction strategies (continued); Defining booleans, numbers (Church numerals), etc., in the pure lambda calculus | no new slides | a5.pdf |
| 14. | 3/20/08 | Defining recursion in the pure lambda calculus using the Y combinator | no new slides | |
SPRING BREAK |
||||
| 15. | 4/1/08 | An interpreter for the applied lambda calculus | slides12.pdf | |
| 16. | 4/3/08 | Scanning and parsing in ML; adding new features to the interpreted language | slides13.pdf | a6.pdf |
| 17. | 4/8/08 | Non-functional features of ML; references; "tying the knot" | slides14.pdf imperative.sml |
|
4/9/08 - Second exam - 5:00PM |
||||
| 18. | 4/10/08 | Parameter passing: 3 variants of call-by-value | slides15.pdf value_reference_copyrestore_macro.cpp swap.cpp ExceptionExample.java exception.cpp dynamic_scoping_by_macro.cpp |
|
| 19. | 4/15/08 | Call-by-macro-expansion and call-by-name parameter-passing mechanisms | slides16.pdf | |
| 20. | 4/17/08 | Infinite sequences/lazy lists in ML | slides17.pdf | a7.pdf |
| 21. | 4/22/08 | Principles of object-oriented languages | slides18.pdf Slide11.java Slide13.java |
|
| 22. | 4/24/08 | Implementing object-oriented language features | slides19.pdf | |
| 23. | 4/29/08 | Introduction to parallel programming and JCSP | slides20.pdf RankSort.java ParMergeSort.java Sieve1.java Sieve.java |
a8.pdf Part 1 |
| 24. | 5/1/08 | BitTorrent simulation | slides21.pdf | Part 2 of A8 is included in the slides for today initial configuration pure seed demo random load balancing demo systematic load balancing demo |
| 25. | 5/6/08 | Bitonic sort | slides22.pdf binary_split.pdf |
|
| 26. | 5/8/08 | Binary Merge sort; wrap-up | no new slides | |
| 27. | 5/13/08 | Q&A | ||
5/14/08 - Third exam - 5:00PM |
||||