230 likes | 235 Views
COMS S1007 Object-Oriented Programming and Design in Java. August 7, 2007. Final Exam Logistics. Thursday, 5:40-8:40pm No calculators, books, notes, electronic devices, etc. Graded exams will be available for viewing starting next Tuesday. What’s on the final exam?.
E N D
COMS S1007Object-Oriented Programming and Design in Java August 7, 2007
Final Exam Logistics • Thursday, 5:40-8:40pm • No calculators, books, notes, electronic devices, etc. • Graded exams will be available for viewing starting next Tuesday
What’s on the final exam? • All material covered in lecture • Programs discussed in lecture and posted on the class website • Assigned readings • Emphasis will be on material covered in class
Assigned readings • Java basics: chapters 1-7 • Designing classes: 8.1 – 8.9 • Interfaces, Inheritance: 9.1 – 9.5, 10.1 – 10.8 • Graphics: 2.11 – 2.13, 3.9, 18.1 – 18.4 • Testing: 2.8, 3.6, 5.5, 7.8 • Event handling: 9.6 – 9.10 • Threads: 20.1 – 20.5 • Networking: 21.1 – 21.5 • Exceptions: 11.1 – 11.6 • Data structures: 15.1 – 15.4, 16.1 – 16.7
What’s NOT on the final? • Extra material in textbook, such as: • Common Errors • How Tos • Quality Tips • Productivity Hints • Random Facts • ….unless covered in lecture!! • Advanced Topics covered last week
Format of the exam • 10-15 short-answer “concept” questions • 4-5 writing Java methods • 1-2 writing Java classes • “Find the bugs” question • 3-4 determining output of Java code
Studying for the exam • Review your class notes, particularly the descriptions of Java classes and APIs • Review and make sure you understand the source code that we looked at in class and in the textbook from the assigned readings • Review the comments made on your homeworks • Use the discussion board on CourseWorks
Taking the exam • Note how much each question is worth • Look through the entire exam and start by working on problems that you think you can do quickly and that are worth a lot of points • Read the questions carefully to see what is expected of you • Ask the proctor if you have any questions
More advice • Concept questions • Don’t write too much, but try to be detailed • Give an example if you can’t explain it • Writing Java code • You are graded on accuracy of syntax and semantics (your code must “compile”) • Pay attention to stylistic issues • You will not be provided with any API docs
More advice • “Find the bugs” question • Look for compile-time (syntax, semantic) errors before trying to find logic errors • Be sure it’s a bug (look out for tricks) • Understanding Java code • Review the different APIs to know what they do
Classes you should know well • Math: random, pow, sqrt… • String: charAt, indexOf, size… • Scanner: constructors, hasNext, next, nextLine… • JFrame: setSize, setVisible, add… • Graphics: setColor, drawString, fillOval… • Object: equals, hashCode, toString, clone… • These are not the only ones that may appear on the exam, but are the ones you should know best
Java Basics (chapters 1-7) • OOP: classes and objects • Encapsulation: public and private • Methods and constructors • Object references and aliases • Pre- and post-increment • Lazy evaluation of boolean expressions
Coding style • Avoid calling the same method multiple times • Use lazy evaluation • Use constants • User errors vs. programmer errors • Avoid side effects • Member variables vs. local variables • Aliasing a parameter
Designing classes (8.1 – 8.9) • Classes vs. methods • Classes are nouns, methods are verbs • Cohesion: everything belongs together • Coupling: co-dependence • Side effects: modifying an object passed as an explicit parameter
Interfaces & Inheritance (9.1 – 9.5, 10.1 – 10.8) • Interfaces: collection of abstract methods • Polymorphism • Inner classes • Inheritance • Abstract classes • Object: the global superclass
Graphics and Java GUIs(2.11 – 2.13, 3.9, 18.1 – 18.4) • JFrame and its methods • JComponent • Drawing with the Graphics object • Java Swing components • JPanel, JTextField, JButton, etc.
Testing (2.8, 3.6, 5.5, 7.8) • The “assert” statement • Unit testing • Boundary values and equivalence classes • Integration and systems testing • Regression testing
Event handling (9.6 – 9.10) • Event sources and listeners • Not just for GUI events • Java GUI Listeners • MouseAdapter • MouseMotionAdapter • KeyAdapter • ActionListener • MouseEvents, KeyEvents, ActionEvents
Threads (20.1 – 20.5) • Why use threads? • The Thread class and Runnable interface • Invoking a new Thread and important methods • start: begins a new line of execution • run: starting point of executable code • Race conditions • Locks and synchronization
Networking (21.1 – 21.5) • The ServerSocket class • constructor binds to a port • “accept” method waits for a connection • The Socket class • “connect” method connects to a port • Input and Output streams
Exceptions (11.1 – 11.6) • Exception hierarchy • The try/catch/finally blocks • Throwing exceptions • Custom exceptions • Using exceptions for control flow
Data structures (15.1 – 15.4, 16.1 – 16.7) • Linked Lists • LinkedList and ListIterator class • Linked Lists vs. arrays • Stack: LIFO, push/pop • Queue: FIFO, add/remove • Set: add, remove, contains • Map: get, put • Hashing functions and hash tables • Trees
Final Exam Logistics • Thursday, 5:40-8:40pm • No calculators, books, notes, electronic devices, etc. • Graded exams will be available for viewing starting next Tuesday