CSC324 Programming Languages

Fall 2019

Course Notes

Midterm Remark Requests

Remark requests are due by Wednesday, November 6th. Submit the remark request on Markus, explaining the exact issue with the grading. Your entire midterm will be regraded, so your grade can potentially decrease.


The midterm take place October 23rd, during the first hour of lecture, in the usual lecture room. You must attend the lecture section in which you are enrolled.

The midterm covers the first five weeks of the course: The midterm covers both Haskell and Racket. It may include material from lectures 1-5, worksheets, labs 1-5, exercises 1-4, and assignment 1.


  • Length: 50 minutes
  • Written on paper. No computers, calculators, notes, etc.
  • Closed book
  • An aid sheet will be provided to you as part of the midterm. Here is the Aid Sheet

Midterm Topics

You may be asked to do any of the following in the midterm:

  • Explain what functional programming means
  • Write recursive functions in Racket
  • Predict the behaviour of recursive functions in Racket or Haskell
  • Identify tail recursion and write tail-recursive functions
  • Use pattern matching in Racket and Haskell to simplify the way functions are written
  • Explain what currying means, and the behaviour of function currying in Haskell
  • Explain the difference between Eager vs. Lazy Evaluation, and the behaviour of programs in Racket and Haskell
  • Explain the difference between Strict vs. Non-Strict Evaluation, and the behaviour of programs in Racket and Haskell
  • Explain how closures are built, and build environments (as in the exercises)
  • Explain the difference between Lexical vs Dynamic scoping
  • Expand macros
  • Write new macros to solve problems
  • Build upon the my-class macro from Lecture
  • Implement parts of an interpreter (like in the exercises)
  • Explain the various terminology defined in class

Old Midterms

A usual, course coverage changes from term to term: there may be materials covered in the past that wasn't covered this term. Likewise, there may be materials that we covered that wasn't covered in previous terms.