The exam will be closed-book closed-note except that you may reference the Java 6 API Documentation on the lab computers. You will not be allowed to use your laptops, Eclipse, or browse any other website on the lab computers.
The exam will take the entire class time of 65 minutes. It is important to manage your time wisely, and focus first on questions you understand and know how to answer. This will help maximize your overall exam score.
The exam will be written, and will consist of several short answer questions. You may be asked to write short code snippets as well. The exam will cover all lectures, code examples, homework, and quizzes covered thus far in class. The topics include:
You are responsible for reviewing all of the materials provided in-class and online. The answers to the quizzes will not be released, but if there is a question you are unsure about you can contact us for help.
More details on each topic will be provided next.
Please refer to the Java Basics lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
You need to understand what each keyword in Java means. This includes keywords: public, protected, private, static, final, class, abstract, interface, and synchronized.
Understand the difference between a primitive data type versus an Object. Primitive data types include: boolean, char, byte, short, int, long, float, double.
Understand how to use different conditional statements, including if, else, else if, switch, for, while, try/catch, and how to use keywords such as break, continue, return with these conditional statements.
You should understand how to create and use String and array objects.
You should understand how to use the new keyword.
You must also understand how to create and use classes, including the meaning of terms like: constructors, methods, and members.
You should understand the difference between pass by value and pass by reference, and when both are used in Java.
Please refer to the Data Structures lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
Understand how to use and the difference between built-in data structures such as HashMap, ArrayList, and so on.
Understand how to access and iterate through elements in a nested data structure.
How would you design, create, and use an adjacency list data structure? What about a sorted file list?
Please refer to the Classes and Objects lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
Understand the basic components that go into a class, including: members, constructor, get/set methods, helper methods, and other methods.
Understand how to create and design a new class, putting thought into how the class might be used in multiple contexts.
Understand how to design a class that is generalized and encapsulated.
Understand how to overload methods (i.e. create methods of the same name with different parameters).
Please refer to the Software Testing lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
Why do we need testing?
Who can perform testing? What are the pros and cons of each choice?
What quality attributes can you test?
When can testing be performed?
What are the different levels you can perform testing?
What is the difference between testing for verification versus validation?
What is the difference between white box and black box testing?
What is unit testing?
How do you create jUnit tests?
Please refer to the Regular Expressions lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
Which Java classes do you use when dealing with regular expressions?
How do you create a character class (for example, that will match any character except the $ dollar sign)?
What are some predefined character classes?
What is the difference between a greedy versus reluctant quantifier?
What do the ? * + and {n} quantifiers mean?
How do you create a capturing group?
How do you create a non-capturing group?
What do the i m and s flags do when embedded in a regular expression (for example, what will (?i)hello match)?
Please refer to the Inheritance lecture pages for details. Some example topics (non-comprehensive) that you may want to study include:
Understand terms such as superclass, subclass, direct, and indirect.
Understand the difference between an interface and abstract class.
Understand how to create nested classes.
Understand how method overriding occurs when extending a class or implementing an interface.
Understand upcasting and downcasting, and where they are useful.
Please refer to the Exception Handling lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
Understand the difference between checked and unchecked exceptions
Understand how to catch exceptions
Understand how to throw exceptions
Understand how to chain exceptions
Please refer to the File I/O lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
Understand how to read to and write from files.
Understand where and why you might want to use a try/catch/finally block when dealing with file IO.
Understand how to read line-by-line, and why this might be a good idea.
Please refer to the Multithreading lecture page for details. Some example topics (non-comprehensive) that you may want to study include:
Understand the pros and cons to multithreading.
Understand how to split a problem up into subproblems for multithreading.
Understand how to use the Runnable interface to create a Thread instance, and how to extend the Thread class to create a Thread instance.
What are the states a thread can be in at any time?
Understand how to use thread-related functions, including the functions wait() and notify() in the Object class and the functions start(), sleep(), join() in the Thread class.