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

The exam will be delivered electronically. A special link will be posted on the Piazza. You will be able to take the exam at any time during the day of the exam, from 12:01AM to 11:59PM Central time. Once you begin the exam, you will have 120 minutes to complete and submit your exam. We will not consider late submissions.

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.

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.