Assignments:

**Assignment 1: Chapter 2, #6, 8, and 12 - Due Wednesday, 2/15/2017 - Please hand in your work on hardcopy (paper). ** **Assignment 2: Chapter 3, #26 and 27 - Due Wednesday, March 8, 2017. ** /* Assignment 2: Chapter 4, #12 - Note that the code in the book is available on our course wiki. You will not need to implement Comparable any more, nor will you need to create a compareTo() method. Please include a junit testing framework and tests for your methods. Place the program in a subdirectory of your CS203 directory and upload from your CS203 directory to your private github repository - Due Thursday, October 27, 2016 Assignment 2: Chapter 4, exercise 4.20. Due 3/9/16 **NOTE:** Extended deadline to 3/31/16 Assignment 3: Read Extreme Programming Explained, up to page 82. We'll talk about it in class after we cover chapter 5 in Horstmann. Assignment 4: Exercise 5.4. Create a folder called "slider" for your program within your cs203 folder. Backup your work locally using git (see lab 1). When you are done, upload the cs203 directory to github. Remember to cd to the cs203 directory before running the git commands. NOTE: JUnit tests are not so valuable for testing GUI components. The best way to test the user interface is to use it. Assignment 2: Create a class BankingSystem that maintains a list of account objects of class BankAccount that implements the comparable interface. Bank accounts have a name and a balance. Create a class BankApp that contains a main() method that creates a BankingSystem, and asks the banking system to add several accounts. Main() can supply the names and balances individually without user interaction. Have main() ask the banking system to print the list, to sort the list on increasing balance, and to print the list again. Keep it simple, do not add unneeded features. This is an exercise in the use of the comparable interface. Create your program in a folder called Banking within your cs203 folder, and store the cs203 folder again on github when the program is done. - Due Wednesday October 7, 2015 Assignment 3: Chapter 7, #5, 6, 7, 23, 24 - Due Monday, 12/7/2015 - Notes: For problem 23, create a PairApp class with a main method that uses the class Pair. For problem 24, Pair must implement Cloneable and Serializable, and E must extend Cloneable and Serializable. The PairApp should test these features. */ /* Assignment 2: Chapter 4, #12 - Please include a junit testing framework and tests for your methods. Upload to your private repository - Due Wednesday, October 7, 2015 Assignment 3: Read pages 1 - 82 of "Extreme Programming Explained. Due 3/27/14 Assignment 2: Chapter 4, exercise 4.4. For simplicity, your project should create several bank accounts without user input, print the arrayList, then sort and print the arrayList again. Hint: Keep it simple. Put your project in your personal private git hub at Vassar-cs203 - Due 10/9/13 Assignment 3: Chapter 4, exercise 4.20. Due 10/23/13 Assignment 4: Finish the bank account program, the graphics program, and the vending machine (without the graphical user interface). Read chapters 1 through 7 of Extreme Programming Explained. - Due 10/21/13 */ ----

Labs:

* [[courses:cs203-201602:Lab1:top|Lab 1: Setting up Git]] * [[courses:cs203-201602:Lab2:top|Lab 2: Using Javadoc]] * [[courses:cs203-201602:Lab3:top|Lab 3: Intro to JUnit]] * [[courses:cs203-201602:Lab4:top|Lab 4: Car Rental Agency Design]] * [[courses:cs203-201602:Lab5:top|Lab 5: Car Rental Agency Implementation]] * [[courses:cs203-201602:Lab6:top|Lab 6: Animation]] * [[courses:cs203-201602:Lab6.5:top|Lab 7: Comparator]] * [[courses:cs203-201602:Lab8:top|Lab 8: Alarm Clock]] /* * [[courses:cs203-201602:Lab7:top|Lab 7: Banking App Part 1]] * [[courses:cs203-201602:Lab8:top|Lab 8: Alarm Clock]] * [[courses:cs203-201601:Lab5:top|Lab 5: Banking App Part 1]] * [[courses:cs203-201601:Lab6:top|Lab6: Encrypted Reader and Writer]] * [[courses:cs203-201601:Lab7:top|Lab7: Cloneable and Serializable]] * [[courses:cs203-201501:Lab5:top|Lab 5: Animation]] * [[courses:cs203-201501:Lab6:top|Lab 6: Alarm Clock]] */ /* Note to self: provide code in book. * Lab 3: Calculator. Here is some information gathered from our class: http://cs.vassar.edu/~jones/CalculatorInformation.txt */ ----

Exams:

**Midterm Exam:** April 4, 2017 * Covers chapters 1 through 4 * You may bring in one 8.5x11.5 sheet of paper with handwritten notes, both sides if necessary, no photo reduction. Topics include: * UML diagrams - Class diagrams with relationships and cardinalities - Sequence diagrams * Quality of class design * Write a program with Pre- and Post- conditions * Demeters Law * References for objects * Comparators / Comparable /* * You may bring in one sheet of 8.5x11 inch paper with handwritten notes, no photo-reduction. You may use both sides of the paper. * The exam covers chapters 1 through 4. * The topics will be a subset of: * object references, parameter passing * analysis, design, and implementation phases * finding classes methods and attributes from a problem description * UML - class diagrams, sequence diagrams, state diagrams, CRC cards * relationships between classes (aggregation, etc.) * encapsulation, accessor, mutators, side effects, quality of interface * programming by contract, preconditions, postconditions, invariants * comparable, comparator * JOptionPane, frames, listeners, timers, shapes */ **Final Exam:** Wednesday May 17 9AM, SP105 More info to come . . . /* * You may bring in one sheet of 8.5x11 inch paper with handwritten notes, no photo-reduction. You may use both sides of the paper. * The exam covers chapters 5 through 7. * The topics will be a subset of: * Chapter 5: Patterns * Iterator * Observer * Strategy * Composite * Decorater * Recognizing Patterns * Chapter 6: Inheritance and Abstract Classes * Inheritance * Abstract Classes * Template Pattern * Exception Classes (try-catch clauses) * Liskov Substitution Principle * Adapter Classes * Chapter 7: Java Object Model * Java Type system * Type Inquiry * Object Class * Shallow and Deep Copy - Cloning * Serialization * Reflection * Generics - NOT wild cards ("?") * NOT Java Beans */ /* Wednesday, October 28, 2015 * You may bring in one 8.5x11" page of handwritten notes - no photo-reduction * Topics: Chapter 1 - Structured Programming: Flow chart representations - sequence, repetition, selection Chapter 2 - Identifying classes, responsibilities, relationships - UML class diagrams - UML sequence diagrams Chapter 3 - Quality of an interface (public interface of a class or its protocol) - The 5 'C's - Programming by contract (pre- and post- conditions, class invariants) Chapter 4 - Comparable - Comparator - Frames and user interface - Icons and shapes **Exam 2:** Monday November 23, 2009 Topics: - Chapters 6 - 7 - One page of notes - Synchronization, Transactions, Serializability, Timestamps, Deadlock characterization, prevention, avoidance, detection, recovery, Bankers algorithm, CS203 Exam 2 Thursday, 4/23/09 \\ One page of notes \\ Topics: - Chapter 8 - Pointers, references, dereferencing, passing by value and reference, relationship between pointers and arrays - Chapter 9 - Constructors and destructors - the big 3 - copy constructor, destructor, assignment operator - Chapter 10 - Composition - classes composed of other classes, new and delete, - Chapter 11 - Operator overloading - Chapter 12 - Inheritance - Chapter 13 - Polymorphism - Chapter 14 - Templates **Final Exam:** Monday, December 14, 9:00AM, RH310 One page of handwritten notes allowed \\ Topics: - Chapter 5 * What is a pattern? * Describe the patterns we covered * Identify the correct pattern for a situation - Chapter 6 * Inheritance * Liskov Substitution * Abstract classes - Chapter 7 * Equality * Clone / shallow copy and deep copy * Reflection and type inquiry * Generics / wildcards One page of handwritten notes allowed \\ Topics: - Chapter 3 * Good Class Design * Quality of interface (cohesion, etc.) - Chapter 5 * What is a pattern? * Describe the patterns we covered in Horstmann and Shalloway * Identify the correct pattern for a situation - Chapter 6 * Inheritance * Liskov Substitution * Abstract classes - Chapter 7 * Equality * Clone / shallow copy and deep copy * Reflection and type inquiry * Generics / wildcards */ ----

Projects:

* [[courses:cs203-201602:FinalProject:top|Final Project: Banking System]] /* * [[courses:cs203-201601:Project1:top|Project 1: Car Rental Agency]] * [[courses:cs203-201601:FinalProject:top|Final Project: Banking Application - Due 5/24/2016 at the latest]] */ /* * Project 1: Consider a program for a car rental agency. Customers should be able to reserve a car, pick it up, return it, and pay for it. The rental agency keeps information about the customers (address, etc.), the cars (type, price, availability, etc.), and the rentals ( customer, current state, payment or payment due, etc.). Create a class diagram showing the classes, their attributes,and methods, and the relationships between the classes, including the cardinalities (one to many, etc.). Make it a tool rental store * Project 2: Exercise 4.12 page 171 (Comparator program). Due 3/25/14 * Project 3: Exercise 4.20 page 172 (Car Animation). On pages 166 to 169 there are four classes which you will have to modify. Due 4/1/14 * [[courses:cs203-201401:Final Project:top|Final Project: Employee Management Program - Due May 20, 2014]] Final Project: Due 12/16/2016 at the latest. * This is meant to be done by yourself, not in a team. * The project will be graded on quality of code, adherence to the requirements, and quality of the testing framework. * Please upload your project to your git repository. * A word to the wise: Remember that the last 10% of your project takes 90% of the time. * Do not wait until the last day or two to create this application. Start as early as possible. Requirements: * Create a Banking application with an Account class, and several subclasses, SavingsAccount and CheckingAccount, that inherit from Account. * Create a ListOfAccounts class that uses a single Arraylist of Savings and Checking accounts. * An Account has a name and balance. * A Checking account has a transaction fee of $.10 per check, deposits are free. * A Savings account earns interest of 0.01% daily and has no fees. * Create a BankApplication class with a main() function. * The BankApplication should create a ListOfAccounts object and populate it with accounts of various types. * BankApplication should start a GUI (BankAppGUI), and use the MVC pattern. * The user should be able to type in the amount to deposit or withdraw in the GUI, and have a 'submit' button next to the input field or fields. * The user should be able to create new accounts through the GUI. * The user should be able to deposit and withdraw from each account with appropriate fees and interest. * The GUI should be able to display a single account, found by name. * The GUI should be able to display all the savings accounts in the list. * The GUI should be able to display all the checking accounts in the list. * The GUI should be able to display the entire account list. */ ----