260 likes | 274 Views
This document provides information about the logistics of the final exam for the course "Object-Oriented Programming and Design in Java", including the exam content, format, and studying tips.
E N D
COMS S1007Object-Oriented Programming and Design in Java August 12, 2008
Final Exam Logistics • 825 Mudd (usual classroom) • Thursday, 5:40-8:40pm • Note the start time • No calculators, books, notes, electronic devices, etc.
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 • Software Engineering • chapter 12 • Software Testing • 2.8, 3.6, 5.5, 7.8, 8.10; slides from 7/10 • Interfaces, Inheritance • 9.1 – 9.5, 10.1 – 10.8 • Graphics • 2.11 – 2.13, 3.9, 10.9 – 10.11, chapter 18
Event handling 9.6 – 9.10 Threads chapter 20 Networking chapter 21 Exceptions chapter 11 Data structures chapters 15 & 16 Design patterns not in the book!! Assigned Readings
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 (tentative) • 10-15 short-answer “concept” questions • 2-3 problem solving and analysis • 4-5 writing Java methods • 1-2 writing Java classes • 1-2 “Find the bugs” questions • 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 • Office hours by appointment on Thursday
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 • Problem solving and analysis • Show your work to get partial credit • Clearly state any assumptions you make
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) • 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, except for classes not previously seen
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 • Call-by-reference vs. call-by-value
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 • White box and black box 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
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
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 thread of execution • run: starting point of executable code • Race conditions • Locks and synchronization
Exceptions (11.1 – 11.6) • Exception hierarchy • The try/catch/finally blocks • Throwing exceptions • Custom exceptions
Data structures (15.1 – 15.4) • Linked Lists • LinkedList and ListIterator class • Stack: LIFO, push/pop • Queue: FIFO, add/remove • Either can be implemented with arrays or with LinkedLists
More Data Structures(16.1 – 16.10) • Set: add, remove, contains • Map: get, put • Hashing functions and hash tables • Trees and traversal techniques • Heaps and Heapsort
Design Patterns • What are design patterns used for? • What are the three GoF classes of patterns? • Singleton: limit to a single instance • Composite: treat a collection of objects with the same interface as individual ones • Observer: publish/subscribe
Final Exam Logistics • 825 Mudd (usual classroom) • Thursday, 5:40-8:40pm • Note the start time • No calculators, books, notes, electronic devices, etc. • Chapters 1-12, 15-16, 18, 20, 21