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) 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 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
3/1
Week 9 3/5 (Mon) 11:59PM Homework 6: Implementing Mini-Scheme
3/6 Regular expressions and finite automata FOCC 10, MCD 2 (for reference)
3/8
Week 10 3/12 (Mon) 11:59PM Homework 7: Finite Automata and Regular Expressions
3/13 Grammars and parsing; Parser combinators FOCC 11, MCD 3 (for reference)
3/15 Continuations and amb; course wrap-up
Week 11 3/20 Final Exam for CS 360-001 and CS 360-002
15:30–17:30 (RANDEL 327)
3/20 Final Exam for CS 360-003
18:30–20:30 (UCross 151)