Computer Science Department

Programming Languages

CS 331 - Spring 2008

Below is a tentative schedule


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

1Slides and code handouts will be made available in advance at: /shared/furcyd/cs331/

Programming languages links