General Information
- Date: Thursday, Dec 14
- Time: 4pm to 6pm
- Location (Make sure you take the exam in correct room as we have a fixed number of exam copies per room)
-
Pedram's sections (01XX, 02XX, 03XX): TYD 0130
Nelson's sections (04XX and Honors): SKN 0200
- Duration: 120 minutes
- Closed-book, Closed-notebooks, No Computers/Calculators.
- Use a pencil/mechanical pencil (no pen) to answer the exam.
- Bring a stapler if you like to separate the exam pages.
- Do not discuss anything about the exam after you have taken it as we may have a makeup.
- Bring your student id card.
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 are not responsible for any necessary import statements.
- Regarding Recursion: For questions requiring a recursive solution,
you will lose most of the credit if you use 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
- Event-Driven Programming
- 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
- File I/O
- Final classes, fields
- Lambda Expressions
The exam will NOT cover the following topics:
- Eclipse
- UML
- Advanced Tree Structures (AVL, Red-Black Trees, Multi-way Search Trees, etc.)
- Kruskal's Algorithm
- Networking
- Compression/Huffman Encoding
- JavaFX
- Computing asymptotic complexity of recursive algorithms (use of recurrence relation).
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