Java Programming
Fall 2009

Course number: CSPP51036
Location: Eckhart 202
Time: Mon 5:30-8:20

Professor: Andrew Siegel
Office: Ry175-B
Email:asiegel@cs.uchicago.edu
Office Hours: 3:30-5:30 Mon

TA: Zhao Zhang
Office:
Office Hours: by appt
Recitation: 7-8 Tue; 7:30-8:30 Wed, Ry 277
Email: zhaozhang@uchicago.edu

Grader: Ned Ruggeri
Email: ruggeri@uchicago.edu

Course description: This is a fast-paced first course in Java for students with some prior programming experience, though not necessarily in an object-oriented language. A strong emphasis will be placed on understanding basic fundamentals of OO design -- inheritance, polymorphism, composition, etc, and more generally on applying sound principles of modern software engineering to real-world problems. In the latter half of the course more advanced OO design patterns will be studied in the context of certain Java libraries (e.g. Swing). However, the main focus will be on using the "core language" to write good software rather than a detailed study of particular high-level libraries.

Course Format: Instructor lecture with significant student participation. Please come prepared.
The final grade is determined as:

  • 70% bi-weekly assignments
  • 20% Periodic Quizzes
  • 10% participation (either in-class or listhost)

    Getting Help: The TA will have a group review session followed by more informal office hoursy. He will also be available by appointment. The Instructor will be available both by appointment and at regular office hours, before class each Tuesday. The course listhost is the best place to get help quickly. We will monitor it as frequently as possible and often be able to answer immediately. Students are encouraged to help their peers on the listhost by contributing when it is convenient. Please register here.

    Required text Core Java 2, Volume I: Fundamentals (7th or 8th Edition) by Gary Cornell, Cay S. Horstmann

    Recommended Texts (not required)


    Required Software

    Important Links:



    All course material (updated throughout course)


    Lectures


    Week 1 Oct 5: Introduction




    Week 2 Oct 12: Object Basics



    Week 3 Oct 19: Interfaces and abstract classes


    Week 4 Oct 26: More complex Object relationships


    Week 5 Nov 2: io, exceptions, other language features


    Week 6 Nov 9: Swing



    Week 7 Nov 16: Collections



    Week 8 Nov 23: Threads


    Week 9 Nov. 30: Inner classes, etc.