CS558 Programming Languages Winter 2017
TA Office Hours: M 4:15-5:15 in the "fishbowl" outside the CS Dept. offices.
- Introduction; High-level and Low-level Languages; Stack Machines 1/10/17 (pdf)
- Concrete and abstract Syntax; Grammars; Expressions 1/19/17 (pdf)
- Imperative Programming 1/24/17 (pdf)
- Axiomatic Semantics 1/26/17 (pdf)
- Names, Binding, Scope; Memory Storage 1/31/17 (pdf)
- Large Values, Procedures and the stack, Calling conventions 2/2/17 (pdf)
- Recursion; Exceptions 2/14/17 (pdf)
- Functional Programming: First-class functions 2/16/17 (pdf)
- Closures; Purity; Continuations 2/21/17 (pdf)
- Types; Type Checking; Type Inference 2/23/17 (pdf)
- Details of how to solve the type inference equations on slide 17
- Sample proof tree for a typing derivation using the typing rules from this lecture
- Polymorphism 2/28/17 (pdf)
- The Type Zoo 3/2/17 (pdf)
Additional required reading/work: Download and work through this Haskell file,
following the instructions at the top of the file. Solutions to the exercises are here.
- Type Equivalence 3/7/17 (pdf)
- Modules and Abstract Data Types 3/9/17 (pdf)
- Object-oriented languages 3/14/17 (pdf)
- Program from slide 11 translated to C++, with and without virtual functions.
- Scala example illustrating use of traits for subtyping (similar to Java interfaces).
Scala Language Resources
- Scala (version 2.11.6) is available on the CS linuxlab machines as scala (interactive interpreter) or scalac (compiler)
- Official Scala website
- The latest version (2.12.1) can be downloaded from here
- Documentation can be found here
- Recommended book Programming in Scala (1st edition).