General Information
- Date: Friday, Aug 8
- Time: 10:30am to 12:30pm (NOTICE IS 30 MINUTES BEFORE USUAL CLASS/LAB TIME)
- Location: Usual Classroom
- Duration: 120 minutes
- Closed-book, Closed-notebooks, No Computers/Calculators.
- Use a pencil/mechanical pencil (no pen) to answer the exam.
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, including
full class heading, import, package statement, and main methods, but we
may also ask you to provide just a single method or a code fragment.
- Regarding Recursion: For questions requiring a recursive solution,
you will not get any credit if you solve a problem without recursion.
In addition, you will get 0 credit if in a problem requiring recursion you
make use of any iteration statement (while, do while, for loop).
Topics
The exam will include all the material covered in discussion session
(lab), lecture, quizzes, 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
- Graphic User Interfaces (GUIs) & MVC model
- Software Development
- Software Life Cycle
- Software Process Models (Waterfall, Iterative...)
- Problem Specification
- Program Design
- Program Testing
- 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)
- Inner 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)
- Program scope
- Visibility Modifiers
- Abstract classes, methods
- Packages
- I/O Streams
- Final classes, fields
The exam will NOT cover the following topics:
- Eclipse
- UML
- Advanced Tree Structures (AVL, Red-Black Trees, Multi-way Search Trees, etc.)
- Advanced Concurrency
- Kruskal's Algorithm
- Networking
Practice Material
Practice Questions
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.
Web Accessibility