CS 2102: Object-Oriented Design Concepts
Final Exam Preparation
The final exam will be given on Thursday, December 14.
What Should You Expect?
- The questions will focus on material since the midterm, but some material from the first part of the course may be needed to set up problems on the material from the back part of the course.
- The exam is pencil-and-paper. You may not use a computer.
- You will not be graded on the details of Java syntax. You should know what info goes where (i.e., where fields go, what goes into each of interfaces and classes, where public/private annotations go, etc). You will not lose points for a missing semicolon or unbalanced braces as long as your indentation makes it clear what goes where. You don't have to provide any import statments.
What You May Bring
- You may bring a single sheet of paper with whatever notes, examples, comments, etc that you wish. You may use both sides of the paper. Typeset or handwritten is fine. The exam is otherwise closed-book, closed-notes.
- Although you may work with others on creating your sheet of notes, you may not share notes with others during the exam (each student must have their own copy of the notes).
What You are Expected to Know
The final will focus on the following topics that we have done since the midterm. Topics from the first half of the course, such as class hierarchies, could show up indirectly, but won't be the focus of any particular question
Specifically, you are expected to know:
- What hashtables and graphs are and when to use them
- Java Hashmaps: how to create, put data into, and get data from them
- Exceptions: how and when to throw and catch them, how Java figures out which method catches an exception, what code does and doesn't run as the result of throwing an exception
- For the various data structures we've studied, their operations, shapes and requirements, and their efficiency at each of their core operations. The data structures covered on the exam are lists, sorted lists, binary trees, binary search trees, AVL trees, heaps, hashmaps, graphs, stacks,
queues, sets, and priority queues. You don't need to know the efficiency metrics on graphs.
- Access modifiers (public/private): what they do and when to use them
- How to use generics (type variables) and how to write a class that has generic types
- How to create cyclic data
- How to write functions over graphs and make those functions terminate
- Putting methods in the same class as their data (one form of encapsulation)
- How to encapsulate a data structure in its own class
- How to identify a good set of tests for a method or problem
Sample Exam
Here is an exam that was given in a previous offering of the course. I don't provide answers to sample exams - here's why.
If you have any questions, see us during office hours or post on InstructAssist. Good luck!