There will be three one-hour exams throughout the semester. There is no final exam. Content for the exams may come from lecture, readings, and programming assignments and is cumulative. Make-up exams will not be given for absences unless pre-approved by the instructor, a note from a medical professional is provided, or in extreme circumstances.

You are allowed two paper-sides of notes (either one page [front and back] or two fronts). You may print them using some micro font if you like, but it may not really help you (you'll spend much of your time squinting and looking up information on your cheat sheet). You are much better off writing your note sheets by hand.

The exams are **closed book**. You may not use electronic
devices of any kind.

These exercises are not graded assignments. Instead, they are provided for students to gain extra practice with topics covered in class. Students may find these exercises helpful when preparing for exams. The instructor and the teaching assistants will be happy to go over exercise answers during office hours. Additional exercises will be added as the semester progresses.

- [Functional] Programming Exercises
- Lexing, Regular Expressions, Finite Automata Exercises
- Context-Free Grammar Exercises
- More Parsing Exercises
- Type Checking Exercises
- Runtime Organization and Code Generation
- Operational Semantics
- Garbage Collection
- Optimization
- Debuggers and Concurrency

Here are some practice exams from other similar courses (both at UVA and other universities). These courses are not exactly the same as this one, so these practice exams may not be indicative.

- UVA CS 4501 - Spring 2016 - Midterm 1 (Solutions)
- UVA CS 4610 - Spring 2015 - Midterm 1
- Berkeley CS 164 - Spring 2006 - Midterm 1
- Berkeley CS 164 - Spring 2004 - Midterm 1
- Berkeley CS 164 - Spring 2003 - Midterm 1 (Solutions)
- Berkeley CS 164 - Spring 2002 - Midterm 1 (Solutions)
- Berkeley CS 164 - Spring 2001 - Midterm 1 (Solutions)
- Berkeley CS 164 - Fall 2000 - Midterm 1 (Solutions)
- Berkeley CS 164 - Spring 2000 - Midterm 1 (Solutions)

- UVA CS 4501 - Spring 2016 - Midterm 2 (Solutions)
- UVA CS 4610 - Spring 2015 - Midterm 2
- Berkeley CS 164 - Spring 2006 - Midterm 2 (Solutions)
- Berkeley CS 164 - Spring 2003 - Midterm 2 (Solutions)
- Berkeley CS 164 - Spring 2001 - Midterm 2 (Solutions)
- Berkeley CS 164 - Fall 2000 - Midterm 2 (Solutions)