Java Programming
Fall 2011

Course number: CSPP51036-2
Location: Ryerson 276
Time: Mon 5:30-8:20

Professor: Adam Gerber
Office: Ryerson 154
Email:gerber@cs.uchicago.edu
Office Hours: 3:30-5:30

TA: Jing Tie
Office: Jones 209 (5747 S. Ellis Avenue)
Office Hours: 6:00pm to 8:00pm Thu
Recitation:
Email: jtie@uchicago.edu

TA: Shashank Sharma
Office: Ryerson 251
Office Hours: 8:30pm to 10:30pm Wed
Recitation:
Email: ss-sharma@live.com

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:

  • 45% homework
  • 35% final project (take home) Due 5:30pm
  • 20% two in-class quizzes (not announced, so come to class prepared)

    Criteria for evaluation on homework and final project

  • 40% does the program perform per spec
  • 30% is the algorithm elegant/efficient or clumsy/wasteful
  • 20% have you handled exceptions properly
  • 10% code style; naming variables, formatting, ease of reading, documented

    Submitting homework and final project Tar you project using eclipse. See video called eclipseCreateTar posted to course web-page. Homework file naming: hw + [number]+ hyphen + [lastname] + [firstInitial of firstName] .tar Homework file name examples John Smith: hw1-smithj.tar, hw2-smithj.tar Final project file naming example: fp-smithj.tar Email to me gerber@cs.uchicago.edu and cc Jing jtie@uchicago.edu and Shashank ss-sharma@live.com.
    Late homework/final project is penalized 5% every day late for two days, after which time, no more homeworks will be accepted. Because I must coordinate the release of homework answers with the other Java Programming section, there is an absolute deadline for homework on the Wednesday at midnight following the due date (Monday at 5:30pm). Homework answers will be released shortly after midnight on Wednesday, and no homework submissions will be accepted thereafter, and students who fail to submit by Wednesday at midnight will recieve a zero for that assignment.

    Getting Help: I will be available both by appointment and at office hours, before class each Monday. The pace of this course if rapid, so please come to office hours if you feel you're falling behind or need help. I have office hours this Autumn quarter from 3:30-5:30 every Monday. Also, please feel free to email me or post to the listhost; see below. The course listhost is the best place to get help quickly. Instructors and TAs will monitor the course listhost 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, Volume I: Fundamentals, 8th Edition,by Gary Cornell, Cay S. Horstmann
    ISBN: 978-0132354769

    Recommended Texts (not required)


    Required Software

    Important Links:



    All course material (updated throughout course)


    Lectures


    Week 1 : Introduction

  • Some simple programming strategies (needed for homework)
  • Intro to objects and classes -- some basics


    Week 2 : Object Basics



    Week 3 : Interfaces and abstract classes


    Week 4 : More complex Object relationships


    Week 5 : io, exceptions, other language features


    Week 6 : Swing



    Week 7 : Collections


    Week 8 : Threads


    Week 9 : Inner classes, etc.


    Week 10


    Week 11