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