CS 360
Winter 2018
Programming Language Concepts
CS 360-001 Tuesday/Thursday 15:30-16:50 (Rush 209)
CS 360-002 Tuesday/Thursday 14:00-15:20 (Rush 209)
CS 360-003 Tuesday 18:30-21:20 (UCross 151)

Instructor:
Geoffrey Mainland
mainland@drexel.edu
Office: University Crossings 106
Office hours: Mondays 4pm–7pm; Thursdays 5pm–6pm.
Teaching Assistant:
Xiao Han
CLC office hours: Tuesday 12pm–2pm; Thursday 6pm–8pm
Allen Yang
CLC office hours: Wednesday 6pm–8pm

Course Schedule

This schedule is tentative and may be modified at the instructor’s discretion. CS 360-003 will cover the entire week’s material on Tuesday; if you are in that section, please come to class having read all readings for the week.

Please come to lecture having read the listed chapters. If readings are marked “for reference,” then you do not need to read them before class, but they will help you understand the material in that lecture. Readings are from the following sources:

Video recordings of all three sections are available on Blackboard under echo360 Class Recordings.

The examples from lecture are available on GitHub in the DrexelCS360/lectures repository. Solutions to lecture examples are not distributed—you must come to class (or watch the video) to see them.

Lecture Date Material Covered Reading Lecture Material
Week 1 1/9 Introduction to Programming Languages Lecture 1 Notes pdf
1/11 Functional Programming in Scheme Lecture 2 Notes pdf
1/12 (Fri) 11:59PM Homework 0: GitHub
Week 2 1/15 (Mon) 11:59PM Homework 1: Scheme
1/16 Programming with State SICP 1.1, 3.1 Lecture 3 Notes pdf
1/18 Environment Model of Evaluation; Streams SICP 3.2, 3.5.1, 3.5.2 Lecture 4 Notes pdf
Week 3 1/22 (Mon) 11:59PM Homework 2: More Scheme
1/23 The Metacircular Evaluator SICP 4.1 Lecture 5 Notes pdf
1/25 A Lazy Interpreter SICP 4.2 Lecture 6 Notes pdf
Week 4 1/29 (Mon) 11:59PM Homework 3: Working with the Metacircular Interpreter, Parts I–III
1/30 Lambda calculus redux TAPL 5 if you really want more info (you are not expected to read this) Lambda Calculus Course Notes
Lecture 7 Notes pdf
2/1 Tail Recursion; CPS; amb interpreter SICP 4.1, 4.3 Lecture 8 Notes pdf
Week 5 2/5 (Mon) 11:59PM Homework 3: Working with the Metacircular Interpreter, Parts IV
2/6 Haskell LYAH 1–8 Lecture 9 Notes pdf
2/8
Week 6 2/13 Midterm Midterm study guide
2/15 Introduction to semantics SWA 1 Semantics Course Notes
Lecture 10 Notes pdf
Week 7 2/19 (Mon) 11:59PM Homework 4: Haskell
2/20 Operational semantics of $\While$ SWA 2 Lecture 11 Notes pdf
2/22 Abstracting computation LYAH 8–13 (for reference) Lecture 12 Notes pdf
Week 8 2/26 (Mon) 11:59PM Homework 5: Implementing Semantics
2/27 A Larger Language: Mini-Scheme MiniScheme Course Notes
Lecture 13 Notes pdf
3/1
Week 9 3/6 Regular expressions and finite automata FOCC 10, MCD 2 (for reference) Lecture 14 Notes pdf
3/8
3/9 (Fri) 11:59PM Homework 6: Implementing Mini-Scheme
Week 10 3/13 Grammars and parsing; Parser combinators FOCC 11, MCD 3 (for reference) Lecture 15 Notes pdf
3/15 Continuations and amb; course wrap-up Lecture 16 Notes pdf
3/16 (Fri) 11:59PM Homework 7: Finite Automata and Regular Expressions
Week 11 3/20 Final Exam for CS 360-001 and CS 360-002
15:30–17:30 (RANDEL 327)
Final exam study guide
3/20 Final Exam for CS 360-003
18:30–20:30 (UCross 151)