General Information
- Date: Friday, May. 16th, 2025 from 6:30 to 8:30 PM
- Time/Location: If you are in the 11 AM Class, go to HJP 0226. If you are in the 12 PM Class, go to ESJ 0224
- Duration: 120 minutes
- Closed-book, Closed-notebooks, No Computers/Calculators.
- Use a pencil/mechanical pencil (no pen) to answer the exam.
- Bring a good eraser
- Posting any information in Piazza about the exam after taking it
is considered an academic integrity violation.
- Do not separate the pages of the exam (e.g., remove the staple).This
will interfere with the scanning process.
-
You need to bring your student id to the exam.
-
We provide space in the exam to be used as scratch area (you cannot
bring your own scratch paper).
Exam Structure
- Short answer questions: This includes for example, multiple
choice, true/false, and fill-in-the-blank type questions.
- Code analysis questions: We will give a short segment of code and
you may be asked to identify syntax and logical errors, generate code
output, etc.
- Code Writing: Write a program/code snippets to solve a given
problem. You should be prepared to give a complete program/class, but we may also
ask you to provide just a single method or a code fragment.
Topics
The exam will include ALL the material covered in Discussion Sessions (labs),
Lectures, quizzes, 3 exams, and projects including the following topics:
- Object-Oriented Programming Principles (Abstraction, Encapsulation,
etc.)
- Algorithm Complexity
- ADT: List, Stack, Queue, Deque, Sets, Maps, Priority Queues
- Data Structures: Arrays (1 and 2D), Linked Lists (all variations), Hash Tables (open addressing and separate chaining), Binary Search Trees, and Binary Heaps (both min and max heaps)
- Multithreading and synchronization in Java
- Graphs
- Free Trees
- Rooted Trees
- Graph Representation(Adjacency Matrix and Adjacency List/Map)
- BFS/DFS
- MST (Prim, Kruskal)
- Dijkstra's Algorithm
- Sorting algorithms: Bubble, Selection, Insertion, Quicksort, Merge Sort, and Heapsort
- Searching algorithms: Linear and Binary
- Log Rules and Powers of 2 up to 2^16 (no calculators)
- Specific Java Topics
- Definition and use of classes in inheritance relationships
- Definition and use of Java Interfaces
- Instance variable initialization (both static and non-static)
- The 4 types of nested types: inner, local, anonymous, and static nested
- Defining Generic Classes and methods with unbounded and bounded types (e.g. using extends)
- Wildcards and bounded wildcards with extends and super keywords
- Comparable Interface
- Comparator classes
- Autoboxing and Unboxing
- Exceptions Fundamentals (Checked and Unchecked)
- JCF: ArrayList, 3 Sets, 3 Maps, and PQ
- Java hash code contract
- Enhanced for loop
- Enumerated types
- Method Overloading/Overriding (e.g. equals)
- Iterators (be able to write one with next and hasNext)
- Constructors
- References
- "this"
- "super"
- Collection class methods (e.g. sort)
- Visibility Modifiers
- Abstract classes, methods
- Packages
- Final classes, fields
- Lambda Expressions
- clone method
- Topics covered in exam 1, exam 2, exam 3, and CMSC 131
The exam will NOT cover the following topics:
Practice Material
Historically, we have never given out an old recent final exam, and this term will be the same.
There are some material that are available on old CMSC 132 sites, and I am making them available below.
However, I think they will be of limited use due to the format/topics (there are some topics mentioned not even covered in Spring 2025).
In other words, use the material below if it is of benefit, but don't forget to focus on what we did in Spring 2025.