Overview

This course will have two midterm examiniations and one final examination. The final exam will be cumulative.

Review Problems

The review set is meant to give you questions indicative of those that will appear on the midterm exam. These are not graded and are meant to be a structured system to evaluate your mastery of the material in preparation for the written exams.

Materials

You are allowed to bring one sheet of paper notes (one page, 8.5x11", both sides). You can print whatever you like on it. These exams are not open book. You may not use any electronic devices.

You can use any notes you want, and you can use "read-only Internet." This means that you can review material on the internet, but you cannot post questions anywhere on the internet (e.g., Chegg or StackOverflow) or ask anyone aside from course staff for help. Piazza will be locked and only used for clarifying questions during the exam day. We will not answer any exam review questions during the exam day.

You must complete the exam alone. Exams may contain randomly-generated questions that are unique to you.

All electronic devices must be put away. If we see you glancing at a phone, looking intently at another exam, or witness strange behavior (e.g., reading the label of a water bottle), we will consider it cheating and you will receive a 0 for the exam.

Exam 1

Exam 1 covers all material referenced in class or on the course website before the date of the exam. This will include topics such as COOL syntax, regular langauges, regular expressions, finite automata, context-free grammars, grammars, ambiguity, and various forms of parsing. Additionally, this may include material from PA1 through PA3.

Exam 2

Exam 2 covers all material referenced in class or on the course website since the first exam. This will include topics such as semantic analysis, COOL typechecking, inference rules, runtime organization, code generation, control flow analysis, and computer organization. Additionally, this may include material from PA4 and PA5.