General Rules and Information
Coverage
- The intention is for the final to focus on the
material after the midterm, specifically the units on
sorting, graphs, parallelism, concurrency, and amortization.
Given the limited time of the exam, not all topics from each unit will
be covered.
-
This material is in the class materials for lectures 12 through 25
(not including lecture 24.5). See also the textbook chapters on
sorting and graphs and the reading notes, "A Sophomoric
Introduction to Parallelism and Concurrency." You are responsible
only for topics discussed in class or section.
-
Naturally some of this material builds on some key ideas presented in
the first half of the course and such material is fair game. For
example, Dijkstra's algorithm uses a priority queue. As another
example, we used a number of data structures as examples when studying
concurrency. And of course asymptotic analysis remained central
throughout the course.
- You should be familiar with features of Java and its
libraries that we used for learning the material. While the
intellectual content of questions will mostly be about the general concepts,
you may be expected to read and write relevant Java code.
Old Final Exams
These caveats are the same caveats we had for the midterm exam.
Usual caveats: Every offering of the course is different and every
exam covers a different set of topics given the limited time
available. The exams below do not necesarily imply anything about the
nature of our midterm, but they are drawn from course offerings with a
very similar schedule.
Additional caveats: While the exam will have some drill
problems related to how data structures work, your instructor tends to
have fewer of these problems in favor of higher-level concepts and
questions about why data structures have the behaviors they do. The
Spring 2010 exam below was written by your instructor, so it may be
the best example, but all the exams below contain useful practice
problems.