CS558 Programming Languages Fall 2017
Office Hours: Tuesdays 1-2pm (but not Oct. 24) or by appointment in FAB120-23.
Special Office Hour: Monday, Oct. 23 2-3pm
TA Office Hours (in the "fishbowl" outside the CS Dept. offices):
Oct. 5 (Thursday) 4-5:30 pm
Oct. 9 (Monday) 2-3:30 pm
Oct. 16 (Monday) 2-3:30 pm
Oct. 20 (Friday) 4-5:30 pm
Oct. 24 (Tuesday) 4-5:30 pm
Fridays 4-5:30pm thereafter (except Nov. 10)
Nov. 13 (Monday) 2-3:30 pm
WebLab page (see instructions in syllabus)
Slack channel (lightly monitored by course staff) Note: the first time you use this link, it will take you to the general page for the pdx-cs workspace; you need to sign in to access the cs558-specific channel.
- Midterm will cover all material presented in lecture or required reading in weeks 1-4.
- You are allowed one 8.5x11" sheet (one side only) of hand-written notes.
- Practice Midterm Exam and sample solutions [updated 10/23/17 2:50pm].
- 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 9/25/17 (pdf)
- Concrete and Abstract Syntax; Grammars; Expressions 9/27/17 (pdf)
- Imperative Programming 10/2/17 (pdf)
- Axiomatic Semantics 10/4/17 (pdf)
- Names, Binding, Scope; Memory Storage 10/9/17 (pdf) [updated 10/9/17 @ 6:15pm]
- Formal Operational Semantics 10/11/17 (pdf) [updated 10/11/17 @ 6:20pm]
- Large Values, Procedures and the stack, Calling conventions 10/16/17 (pdf)
- Recursion; Exceptions 10/18/17 (pdf)
- Functional Programming: First-class functions 10/30/17 (pdf)
- Closures; Purity; Continuations 11/1/17 (pdf) [updated 11/3/17 12:20pm]
- Types; Type Checking 11/6/17 (pdf)
- Type Inference and Polymorphism 11/8/17 (pdf)
- Details of how to solve the type inference equations on slide 17
- The Type Zoo 11/13/17 (pdf)
- Type Equivalence 11/20/17 (pdf) [extended 11/18/17, 7:45pm]
- Modules and Abstract Data Types 11/22/17 (pdf)
- Object-oriented languages 11/27/17 (pdf) [fixed slide 17 on 11/29/17, 11:45am]
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.3) 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.)