COMS 1007: Object Oriented Programming and Design in Java General Description Requirements Readings Topics Policies Schedule COMS W1007: Object Oriented Programming and Design in Java General Information Time: Monday and Wednesdays, 11 AM - 12:15 PM Location: 173 Macy, Teacher's College. Map. Instructor: Bert Huang. Office hours Wednesday 2-4 PM, CEPSR 624 (or by appointment) TA: John Graham jwg2116 Office hours Sunday 1-3 PM, TA Room. Map. TA: Lauren Pully lep2128, Office hours Friday 11 AM - 1 PM, TA Room TA: Yipeng Huang, yh2315, Office hours Wednesday 4-6 PM, TA Room Courseworks site (message board etc.): http://courseworks.columbia.edu/ Course Homepage (this page): http://www.cs.columbia.edu/~bert/courses/1007/ Description From the university bulletin: The second course for majors in computer science. A rigorous treatment of object-oriented concepts using Java as an example language. Development of sound programming and design skills, problem solving and modeling of real world problems from science, engineering, and economics using the object-oriented paradigm. Requirements/Prerequisites COMS W1004: Introduction To Computer Science And Programming In Java, or AP Computer Science with a grade of 4 or 5. CUNIX account (all registered students should have this automatically) Textbook Object Oriented Design and Patterns by Cay Horstmann. ISBN: 0-471-74487-5 Author's page (includes errata, downloadable copies of the code examples): http://www.horstmann.com/design_and_patterns.html The publisher, Wiley, keeps a student companion site including solutions to half of the exercises in the book: http://bcs.wiley.com/he-bcs/Books?action=index&itemId=0471744875&bcsId=2561 Additional reading may be assigned via in-class handouts on the website. Topics (This list is not in any particular order, nor is it comprehensive. It should however provide an idea of what the course will cover.) Programming style Classes and methods UML diagrams Programming by contract: preconditions, postconditions and invariants Designing interfaces Polymorphism Encapsulation Inheritance Design patterns Frameworks Java graphics and user interface programming Multithreading Course Policies Grading The course will have five homework assignments distributed throughout the semester. Each will be a combination of programming problems and written problems. There will be a midterm exam and a final exam. Both will be closed book and closed notes. The final grade will be a weighted sum of the following: 50% Homework 20% Midterm Exam 30% Final Exam Late Homework Policy Homework that is submitted late without permission will be penalized according to the following formula: (Penalized score) = (Your raw score) * (1-0.1*(# of days past deadline)) For example, if your raw score is 10 points and you submit two days late, your penalized score will be 10*(1-(1-0.1*2)) = 10*(1-0.2) = 8. This formula will apply for up to three days, after which, the homework will not be accepted and will receive a grade of zero. Avoid invoking these penalities by starting early and seeking extra help. Academic Honesty Read through the department's policies on academic honesty, located at http://www.cs.columbia.edu/education/honesty/, especially the section on procedures and penalties. In this course all work is to be done individually. Note that academic dishonesty is extraordinarily easy to catch in computer science. Schedule of classes (tentative) Click here for the slides directory. And click here for some example code. # Date Topics Readings and Assignments 1 Jan. 20, 2010 Introduction Course survey (1 point extra credit on final grade!) 2Jan. 25, 2010 Java review, Programming style Horstmann Ch. 1. Cunix help 3Jan. 27, 2010 Design tools (UML, CRC cards, Use cases) Horstmann Ch. 2 Feb. 1, 2010 Class canceled; Distinguished Lecture 4Feb. 3, 2010 Designing classes, programming by contract, more examples Homework 1 assigned. Horstmann Ch. 3 5Feb. 8, 2010 Introduction to Java graphics Code. Horstmann Ch. 4 (4.6-4.9) Feb. 10, 2010 Interfaces and Polymorphism. Extra office hour in 624 CEPSR Horstmann Ch. 4 (4.1-4.5, 4.10) 6Feb. 15, 2010 Interfaces and Polymorphism 7Feb. 17, 2010 Introduction to programming patterns Homework 1 due at 11 AM. Homework 2 assigned. Example menu file menuFile.txt 8Feb. 22, 2010 Java GUI programming 9Feb. 24, 2010 Java GUI programming continued Horstmann Ch. 6 10Mar. 1, 2010 Inheritance and hierachy Horstmann 7.1-7.4 11Mar. 3, 2010 Types in Java (the hierarchy of Java) Homework 2 due. Horstmann 7.1-7.4 12Mar. 8, 2010 Midterm review Mar. 10, 2010 Midterm Exam Spring Break 13Mar. 22, 2010 The Object Class Homework 3 assigned. Horstmann 7.5-7.6 14Mar. 24, 2010 Generics Horstmann 7.6-7.7 15Mar. 29, 2010 Frameworks Horstmann 8.1-8.3 16Mar. 31, 2010 Case study: Graph Editor Framework Horstmann 8.4 17Apr. 5, 2010 Multithreading Homework 3 due at 11 AM. Homework 4 assigned. Horstmann 9.1 18Apr. 7, 2010 Multithreading continued Horstmann Ch. 9 19Apr. 12, 2010 Data Structures, the Collections Framework 20Apr. 14, 2010 More Data Structures 21Apr. 19, 2010 Leftover Design Patterns Homework 4 due at 11 AM. Homework 5 assigned. Horstmann Ch. 10 22Apr. 21, 2010 Networking 23Apr. 26, 2010 More Networking 24Apr. 28, 2010 Recursion, OOP and CS 25May 3, 2010 Final review Homework 5 due at 11 AM. 26May 10, 2010 Final exam. 9AM-noon