Java Programming
Autumn 2012
Course number: CSPP51036
Location: Ryerson 251
Time: Tue 5:30-8:20
Professor: Adam Gerber
Office: Faculty Offices: Ryerson 4th floor Computer Lab
Email: gerber@cs.uchicago.edu
Office Hours: Tue 3:30 – 5:30pm
TA: Jonathan Ozik
Office: Ryerson 401
Email: jozik@uchicago.edu
Office Hours: Thu 4:30 – 6:00pm
Grader: Ali A. Alkhafaji
Email: ali.a.alkhafaji@gmail.com
Course description: This is a fast-paced first course in Java for students with some prior programming experience, though not necessarily Java or any other 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 contemporary software engineering to real-world problems. In the latter half of the course, we will cover threads and advanced OO design patterns, as well as certain Java libraries such as Swing. However, the main focus will be on using the core language features to write good software rather than a detailed study of any particular high-level library. At the following url, you will find the entire content of this course, including important instructional videos, and assignments.
Course Content: http://www.classes.cs.uchicago.edu/archive/2012/fall/51036-1/content/
Course Format: Instructor lecture with student participation. The final grade is determined as:
· Quizz 10%
· Midterm exam 15%
· Final exam 25%
· 4 homeworks 28% (7% each)
· Final project 12%
· Student participation 10%
Criteria for evaluation on homework and final project
· 34% does the program perform per spec, or as expected
· 33% is the algorithm elegant/efficient, have you handled exceptions properly
· 33% code style; naming variables, formatting, ease-of-reading, well-documented
Submitting homework and final project See video called submitProjects2012 posted to course-content. You will be assigned a grader; see table below. When submitting either homeworks or your final-project, attach your tar file to an email and send it to your assigned grader, and copy me: gerber@cs.uchicago.edu. Late projects (homeworks or final-project) are penalized 10% every day late. All projects (homeworks and final-project) are due at 11:59pm on the due date – typically a Monday.
Table of assigned graders:
lastName firstName studentCode assignedGrader
Chiu Amy chiua jozik@uchicago.edu
Dai Jiacheng daij jozik@uchicago.edu
Fruin Brian fruinb jozik@uchicago.edu
Gao Song gaos jozik@uchicago.edu
Hall Dylan halld jozik@uchicago.edu
Hao Mingzhe haom jozik@uchicago.edu
He Qile heq jozik@uchicago.edu
Henry Samuel henrys jozik@uchicago.edu
Hilton Duane hiltond jozik@uchicago.edu
Huo Rongbin huor jozik@uchicago.edu
Kaushal Varun kaushalv jozik@uchicago.edu
Li Jie lij jozik@uchicago.edu
Li Yuzhou liy jozik@uchicago.edu
Malandruccolo Joseph malandruccoj jozik@uchicago.edu
Najjar Dana najjard jozik@uchicago.edu
Nelson Allen nelsona jozik@uchicago.edu
Pradhan Sachin pradhans jozik@uchicago.edu
Ramos Jonny ramosj ali.a.alkhafaji@gmail.com
Roales Paul roalesp ali.a.alkhafaji@gmail.com
Roush Jakuelyn roushj ali.a.alkhafaji@gmail.com
Safdar Yasir safdary ali.a.alkhafaji@gmail.com
Sandoval Anthony sandovala ali.a.alkhafaji@gmail.com
Shen Zhongchen shenz ali.a.alkhafaji@gmail.com
Silva Alejandro silvaa ali.a.alkhafaji@gmail.com
Soliman Julie solimanj ali.a.alkhafaji@gmail.com
Srivastava Madhur srivastavam ali.a.alkhafaji@gmail.com
Stevens Shawn stevenss ali.a.alkhafaji@gmail.com
Sun Jilong sunj ali.a.alkhafaji@gmail.com
Timpone Robert timponer ali.a.alkhafaji@gmail.com
Vecchio Thomas vecchiot ali.a.alkhafaji@gmail.com
Whiting Correll whitingc ali.a.alkhafaji@gmail.com
Wilson Andrea wilsona ali.a.alkhafaji@gmail.com
Yu Yichen yuy ali.a.alkhafaji@gmail.com
Zhang Tianxiang zhangt ali.a.alkhafaji@gmail.com
Zhang Yueling zhangy ali.a.alkhafaji@gmail.com
Getting Help: I have office hours this Autumn quarter from 3:30-5:30pm every Tuesday. Jonathan has office hours from 4:30 to 6:00pm on Thursdays. We are also both available by appointment. The pace of this course if rapid, so please come to office hours if you feel you're falling behind or need help. 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. Instructor, TA, and graders 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. Listhost address: https://mailman.cs.uchicago.edu/mailman/listinfo/cspp51036-1_fall2012
Required text Core Java, Volume I: Fundamentals, 8th
Edition,by Gary Cornell, Cay S. Horstmann
ISBN: 978-0132354769
Recommended Texts (not required) Big Java by Cay Horstmann, The Java Programming Language by Arnold and Gosling
Required Software
>Java JDK SE 6 update
35 – See video called installJDK2012 in
course-content.
>Eclipse IDE Juno 4.2 – See video called installEclipse2012
in course-content.
>WindowBuilder plugin by Google –See video called installWB2012 in course-content.
>OjbectAid UML – See video
entitled objectAid in course-content
Some Useful Links:
· Oracle's Java Website
· Java SE 6 online API
· JGuru's Java tutorials (see Introduction to Java course link on right panel)
· JavaWorld's everything-about-java pages.
· Java IAQ
· Java Language Specification
· Event Model: http://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html
· Eclipse shortcuts: http://codeofdoom.com/wordpress/2009/03/05/favorite-eclipse-shortcuts/
· More cool links: http://www.classes.cs.uchicago.edu/archive/2012/fall/51036-1/content/videos/moreCool.txt
· Good videos on multi-threading http://www.caveofprogramming.com/category/java-video-tutorials-advanced/java-multithreading/
Week 1 :: Oct 2 :: Introduction
Overview of Java Language
First Java Program
Java primitive (native) datatypes
Quick overview of fundmental programming structures
Pseudocode
Strings
Arrays
Type conversions (Integer.parseInt, etc.)
Keyboard Input, etc.
Random numbers
Intro to objects and classes -- some basics
Eclipse
Required readings:
Core Java, ch. 1-3
Suggested readings:
Eclipse home page
Common compiler/interpreter problems
Homework:
homework1 due Oct 15th at 11:59pm. See instructions in homeworks
directory under course-content.
Week 2 :: Oct 9 :: Object Basics
Basic Objects, cont.
Constructors
Methods -- static vs. non-static, calling semantics
Object Composition
Packages
Required readings:
Core Java, ch. 4
Suggested readings:
Sun's Object Concepts tutorial
Week 3 :: Oct 16 :: Interfaces and abstract classes
>>Quizz<<
Rules for interfaces and abstract classes
Upcasting/downcasting
Polymorphism
Techniques for writing general code
Homework:
homework2 due Oct 29 at 11:59pm.
See instructions in homeworks directory under
course-content.
Week 4 :: Oct 23 :: More complex Object relationships
Implementation inheritance
Simple design patterns
More on abstract classes
Object composition
Required readings:
Core Java ch. 5
Week 5 :: Oct 30 :: io, exceptions, other language
features
Java i/o libraries
Overriding Object methods
Required readings:
Core Java ch. 6 & 7
Suggested readings:
Discussion of access privileges:
public, private, protected
Oracle's good Java io tutorial
Some examples of formatted
output
Homework:
homework3 due Nov 12 at 11:59pm.
See instructions in homeworks directory under
course-content.
Week 6 :: Nov 6 :: Swing
>>Midterm Exam<<
Intro to Swing Java GUI Library
varargs
autoboxing
Reflection and metadata
Enumerations
Introduction to Exceptions
Required readings:
Core Java ch. 8 & 9
Week 7 :: Nov 13 :: Advanced Swing
More event model
Assertions
Advanced Debugger
JUnit
Robot
Serialization
Required readings:
Core Java ch. 11
Suggested readings:
Simple explanation of MVC
Homework:
homework4 due Nov 26th at 11:59pm.
See instructions in homeworks directory under
course-content.
final-project due Dec 6th at 11:59pm. See instructions in final-project directory under course-content.
Week 8 :: Nov 20 :: Collections and Data Structures
Collections Framework
Algorithms and Order-of-growth
Build Tetris
Required readings:
Core Java ch. 12 (pgs
613-625) & 13
Week 9 :: Nov 27 :: Threads
Threads
Thread-safe collections
Multithreading
More Tetris
Required readings:
Core Java ch. 14
Week 10 :: Dec 4 :: Advanced Topics
Socket programming
SwingWorker
Advanced Data Structures
Deploying applications and the JAR
Suggested readings:
Full JAR file specification
Week 11 :: Dec 11 :: Student Presentations, Party, and Awards Ceremony
>>Final Exam<<
Selected student presentations
Party and awards ceremony