General Information
- Date: Friday, Oct 19, 2018
- Time/Location: Your exam will take place in lecture.
- Duration: 50 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 (#1, #2, #3, #4) including the following topics:
- Object-Oriented Programming Principles (Abstraction, Encapsulation,
etc.)
- OO Design
- Testing/Program Correctness
- Code Coverage
- Algorithmic Complexity
- Levels of Copying
- Model View Controller
- Specific Java Topics
- Definition and use of classes in inheritance relationships
- Definition and use of Java Interfaces
- Abstract Classes
- Arrays
- ArrayList
- StringBuffer (be familiar with the append method that takes a string
as a parameter and
the constructor that takes a String as parameter)
- Iterators
- Comparable Interface
- Comparator Interface
- Iterable Interface
- "this"
- "super"
- Collections class methods (those used for the projects)
- Enhanced for loop
- Enumerated types
- Autoboxing and Unboxing
- Exceptions
- Visibility Modifiers
- Method Overloading/Overriding
- equals method
- Packages
- Inner Classes
- Lambda Expressions
- clone method
- Initialization blocks
- Definining Generic Classes
- Recursion
- Program Testing (Writing JUnit tests)
- Iterator, Marker, State, and Decorator Design Patterns
- Memory Maps
The exam will NOT cover the following topics:
- Eclipse, UML, Linked lists, Sets/Maps, File I/O, Java FX
Practice Material
Previous semesters' exams can be found at PreviousExams.zip.
You may also want to see the previous exams we posted for the first exam.
The best way to prepare is to practice problems (e.g., previous exams) and problems you can
come up as you study. The more you practice, the better you will do in the exam. If you just
practice one or two exams, that is probably not enough.