CSCI 330: exams

midterm sample solutions
final exam preliminary solutions

There will be one midterm, held in lecture on Thu. Feb. 13th, worth 20% of your final grade.
Note on midterm: In the review lecture (Tuesday the 11th) I'll talk about let-over-lambda, and question (5ii) on the exam will ask about this. I'm going to treat (5ii) as a bonus question since we really didn't get to the topic when I'd planned.

CHANGES TO FINAL EXAM: the final exam is still worth 40% of your overall grade, and will still be held on Monday April 20th, but will now be held as a take-home exam.

I will be available on discord and email for questions from noon to 5pm (PDT) that day.

The intent is to release the exam both by git and on the course webpage by 8:00am on the 20th (PDT), and it will be due 24 hours later. Exams can be returned as git submissions (if you obtained it via the git repo) or as a PDF email attachment to Note that the only acceptable format is PDF. It will be available at (Until it is officially released it will just show a sample version of the front page of the exam.)

EDIT: under the circumstances, I'll waive the requirement to pass the final exam in order to pass the course.

The midterm will be closed book, closed notes, no electronics permitted. The use of earplugs/protection is permitted, but the use of headphones/headsets (with or without connected devices) is not.
If you get your phone or similar device out during an exam it is an automatic and immediate zero!

A lisp reference sheet will be provided for both exams, and both a lisp and C/C++ reference sheet will also be provided for the final exam. (EDIT: no reference sheet for the take-home final, since it is open book) Note: the reference sheets are just quick syntax summaries, with very little explanation included, and don't cover all language features (especially the C/C++, which assumes the reader is already familiar with all the core aspects of the language). For example, the lisp doesn't cover loop, catch/throw, tagbody/go, unwind-protect, etc. I strongly advise making yourself familiar with the reference sheets before the exam: if the there are other features of the language that you like using then you'll have to remember the syntax for them.

The midterm will cover all lecture/lab material through Thursday Feb. 15th, i.e. lisp and functional programming.

Any and all course topics can be included on the final exam, but its focus will be on the language design and implementation material that was not covered by the midterm.

Examinable material will include everything discussed in the lectures and the labs prior to the date of the exam.

Many of the questions will focus primarily on a reasoned analysis of programming language design issues, and as such will be distinctly open-ended. Expect to dedicate roughly 15-20 minutes to each question.

Copies of some old final exams are provided as an example of question styles. (Exams prior to 2016 are omitted as the course content differed substantially.)

There are some lisp/functional programming midterm practice questions here
plus some final exam practice questions (some with solutions).

Old exams (those prior to 2016 omitted due to major content differences)
recent midterms:
recent finals: