Exams



Midterm Details


Midterm Policies

The midterm will be a 48-hour take-home exam, though it is only intended to take you 1 - 4 hours (assuming you have spent time beforehand studying for the exam!). You will be given the entire window to work on the exam.

The midterm will be released Mon May 2, 11:59pm, and will be due Wed May 4, 11:59pm (48 hours)

The exam will be run via question prompts in Gradescope and may involve using computational artifacts (i.e., text, source, assembly, and executable files) on a computer terminal. Responses are submitted via Gradescope.

For more details, please see:


Midterm Topics

  • Memory, Data, and Addressing: pointers, endianness, data sizes, bitwise operators
  • Number Representation: binary, integers, floating point
  • x86-64 Topics: registers, instructions, control flow
  • Procedures and the Stack: stack structure, calling conventions, register conventions, recursion
  • Building an Executable: compiling, linking, loading

Some of the old exams may contain questions on topics that we did not cover before the midterm this quarter; you should skip over such questions.


Midterm Practice

The following Midterm Review packet will be used in Section 5 ("Midterm Review").


Winter 2020
Exam   |   Solutions   |   Anderson
Autumn 2019
Exam   |   Solutions   |   Hsia
Summer 2019
Exam   |   Solutions   |   Wolfson
Spring 2019
Exam   |   Solutions   |   Anderson
Winter 2019
Exam   |   Solutions   |   Willsey
Autumn 2018
Exam   |   Solutions   |   Hsia
Summer 2018
Exam   |   Solutions   |   Hsia
Spring 2018
Exam   |   Solutions   |   Grossman
Winter 2018
Exam   |   Solutions   |   Wyse
Autumn 2017
Exam   |   Solutions   |   Hsia
Spring 2017
Exam   |   Solutions   |   Anderson
Winter 2017
Exam   |   Solutions   |   Ceze
Autumn 2016
Exam   |   Solutions   |   Hsia
Spring 2016
Exam   |   Solutions   |   Holt
Winter 2016
Exam   |   Solutions   |   Grossman
Autumn 2015
Exam   |   Solutions   |   Anderson

Final Details


Final Policies

The final will be a 72-hour take-home exam, though it is only intended to take you 1 - 4 hours (assuming you have spent time beforehand studying for the exam!). You will be given the entire window to work on the exam.

The final exam will be released Sunday June 5, 11:59pm, and will be due Wednesday June 8, 11:59pm (72 hours)

The exam will be run via question prompts in Gradescope and may involve using computational artifacts (i.e., text, source, assembly, and executable files) on a computer terminal. Responses are submitted via Gradescope.

For more details, please see:


Final Topics (not cumulative)

  • Arrays and Structs: alignment, fragmentation, buffer overflow
  • Caching: locality, associativity, cache parameters and performance, AMAT
  • Processes: fork, execv, exceptions, context switching, zombies
  • Virtual Memory: paging, address translation, disk and swap space, protection and sharing
  • Dynamic Memory Allocation: fragmentation, free lists (implicit, explicit, segregated), garbage collection, memory bugs
  • C and Java: object representation, dynamic dispatch

Some of the old exams contain questions on topics that we did not cover this quarter; you should skip over such questions.


Final Practice

The following Final Review packet will be used in Section 10 ("Final Review"):


Autumn 2019
Exam   |   Solutions   |   Hsia
Summer 2019
Exam   |   Solutions   |   Wolfson
Spring 2019
Exam   |   Solutions   |   Anderson
Winter 2019
Exam   |   Solutions   |   Willsey
Autumn 2018
Exam   |   Solutions   |   Hsia
Summer 2018
Exam   |   Solutions   |   Hsia
Spring 2018
Exam   |   Solutions   |   Grossman
Winter 2018
Exam   |   Solutions   |   Wyse
Autumn 2017
Exam   |   Solutions   |   Hsia
Spring 2017
Exam   |   Solutions   |   Anderson
Winter 2017
Exam   |   Solutions   |   Ceze
Autumn 2016
Exam   |   Solutions   |   Hsia
Spring 2016
Exam   |   Solutions   |   Holt
Winter 2016
Exam   |   Solutions   |   Grossman
Autumn 2015
Exam   |   Solutions   |   Anderson