CS558 Programming Languages Winter 2018
Office Hours: Wednesdays 1-2pm or by appointment, in FAB120-23.
- Extra office hour Friday March 16 1-3pm
TA Office Hours (in the "fishbowl" outside the CS Dept. offices): Mondays 3-4:30 pm
- Midterm will cover all material presented in lectures 1a,1b,2a,2b,3a,4a
or in required reading through Jan 30, except Winskel. (Lecture 3b, the Winskel reading, and
Scott 5.5,9.4-5 are not included on the midterm.)
- You are allowed one 8.5x11" sheet (one side only) of hand-written notes.
- Practice Midterm Exam and sample solutions.
- Practice Final Exam and sample solutions
- Final exam may cover material from the entire course, but will focus on material covered
after the midterm.
- You are permitted to bring a one-sided 8.5x11" sheet of handwritten notes to the final.
Additional Required Reading
- Introduction; High-level and Low-level Languages; Stack Machines 1/9/18 (pdf)
- Concrete and Abstract Syntax; Grammars; Expressions 1/11/18 (pdf)
- Imperative Programming 1/16/18 (pdf)
- Axiomatic Semantics 1/18/18 (pdf)
- Names, Binding, Scope; Memory Storage 1/25/18 (pdf)
- Large Values, Procedures and the stack, Calling conventions 1/30/18 (pdf)
- Recursion; Exceptions 2/13/18 (pdf)
- Functional Programming: First-class functions 2/15/18 (pdf)
- Closures; Purity; Continuations 2/20/18 (pdf)
- Types; Type Checking; Type Equivalence 2/27/18 (pdf)
- Type Inference and Polymorphism 3/1/18 (pdf) [updated 3/1/18 at 3:35pm]
- Details of how to solve the type inference equations on slide 8
- The Type Zoo 3/6/18 (pdf)
- Modules and Abstract Data Types 3/8/18 (pdf) [updated 3/8/18 at 3:45pm]
- Object-oriented languages 3/13/18 (pdf)
- Continuation-passing style example in Scala from review session 3/15/18
Scala Language Resources
- Scala is available on the CS linuxlab machines as scala (interactive interpreter) or scalac (compiler). By default, you'll get version 2.11.6, but version 2.12.3 is available by using addpkg (in which case you should add java8 as well).
- Official Scala website
- The latest version (2.12.4) can be downloaded from here
- Documentation can be found here
- Recommended book Programming in Scala (1st edition).
- Our Scala SExprLibrary code for interpreter exercises. (Useful if you want to do development outside WebLab.)