General Information
- Date: Thursday, Dec 13, 2018
- Time: 4-6 pm
- Location: (Make sure you have the correct room as we don't have extra exams)
- Duration: 120 minutes
- Closed-book, Closed-notebooks, No Computers/Calculators.
- Use a pencil/mechanical pencil (no pen) to answer the exam.
- Please take a look at the general exam rules available at
Exam Rules.
- We may curve in this course. After you taken the exam, do not discuss
anything associated with the exam with other students that have
not taken the exam yet.
- 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.
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 session (lab),
lecture, quizzes, exercises, and projects including the following topics:
- Object-Oriented Programming Principles (Abstraction, Encapsulation,
etc.)
- Testing/Program Correctness
- Event-Driven Programming
- Generics (be prepared to define generic classes)
- Algorithm Complexity
- Linear Data Structures (linked lists, stacks, queues, etc.)
- Sets, Maps
- Hashing
- Program Testing - JUnit testing
- Recursion
- Trees
- Binary Search Trees
- Heaps
- Priority Queues
- Event-Driven Programming
- MVC model
- Software Development
- Object-Oriented Design
- Multithreading & synchronization in Java
- Graphs
- Graph Representation
- BFS/DFS
- Dijkstra's Algorithm
- Sorting algorithms
- Algorithm strategies
- Design patterns
- Effective Java
- 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)
- Nested Classes
- Comparable Interface
- Comparator classes
- Autoboxing and Unboxing
- Exceptions Fundamentals
- ArrayList
- Enhanced for loop
- Enumerated types
- Method Overloading/Overridding
- Iterators
- Constructors
- References
- "this"
- "super"
- Collection class methods (those used for the projects)
- Visibility Modifiers
- Abstract classes, methods
- Packages
- Final classes, fields
- Lambda Expressions
The exam will NOT cover the following topics:
- Eclipse
- UML
- JavaFX
- File I/O
- Computing asymptotic complexity of recursive algorithms (use of recurrence relation).
Practice Material
Notice that the practice questions may include material we did not
cover this semester.
Previous Exams
We have included selected previous exams for the course in the file PreviousExams.zip. Keep in mind that the
material covered by the exams may not be the same material we are covering
this semester. We recommend you complete the exams in the allocated time
specified in the exam. In addition, do not read a problem and assume you know
how to solve it; try to solve it.