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)

Geoffrey Mainland
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

Midterm Study Guide

The midterm will cover the material through week 4 of the course—Haskell will not be included on the midterm.

You may be asked to write some small functions in Scheme—you will not lose points for minor syntactic errors.

You may bring a single, hand-written, two-sided, 8.5” x 11” sheet of notes to the exam. This sheet must have your name on it, and it will be collected with your exam.

No electronic devices may be used during the exam. Please ensure that all electronic devices are out of sight during the exam. You may not listen to music on your phone during the exam.

I suggest you focus on the following topics:

  1. Lambda calculus. Do not worry about the evaluation rules—we will see those again in the second half of the course.

  2. Recursive functions in Scheme. Understand base and inductive/recursive cases.

  3. State. Understand set!.

  4. Streams. Understand how they are implemented using force and delay, and understand how to construct and use streams.

  5. Higher-order functions. Understand map, filter, and the various varieties of reduce/fold.

  6. The environment model of evaluation. You should be able to explain how an expression will be evaluated without asking an interpreter to evaluate it for you.

  7. The metacircular interpreter.

  8. Lazy evaluation.

  9. Implementing search. Understand how the amb interpreter implements search.