Advanced Java Programming

CSPP51037

Summer 2012




Professor: Andrew Siegel
Location : Reyerson 277
Time : Mon 5:30-8:20
Office: Ry175-B
Email:asiegel@cs.uchicago.edu
Office Hours: Mon 3:30-5:30 and by appointment

TA:A. Alkhafaji
Office: Ryerson, 4th floor
Email:alkhafaji@uchicago.edu
Study sessions:TBA

Course Description: This is an advanced course designed for students with a good foundation in Java programming. Basic familiarity with C is also assumed. The course focuses on designing distributed, multithreaded applications with the Java platform. It is an application programming course. Emphasis is placed on applying technology rather than studying API design and implementation. Topics proceed (roughly) from "low-level" to high level network programming concepts: socket byte streams, object serialization, Remote Method Invocation, Java/CORBA (minimal), Web Services, and (briefly) Enterprise Java Beans. While any of these topics alone could form the basis for an entire course, the emphasis is on providing students with an adequate foundation for pursuing individual topics in greater depth. Along the same lines, a major focus of the course is to help students determine when to best apply a given Java technology in a real world, multi-tier application.

Course Format: Instructor lecture with significant student participation. Please come prepared.

Grading: The course grade will be determined by three homework assignments and two in-class quizzes. There is no midtern or final exam. Click here for detailed discussion of homework grading policies.

Getting Help: The TA will hold weekly group sessions to go over homework-related topics in more depth. He will also be available by appointment. When possible, all technical questions should be discussed over the course listhost: cspp51037@cs.uchicago.edu

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

Recommended Texts:

Required Software

Important Links:

Lectures:

Week 1 (June 17): Java Network Programming: (CJ-II Ch. 3) notes (.ppt)
-Homework 1 assigned

Week 2: Java Remote Method Invocation: (CJ-II Ch. 10) notes (.ppt)

Week 3: Java multithreading Part I: (CJ-I Ch. 14) notes (.ppt)

Week 4: Java multithreading Part II : (CJ-I Ch. 14) notes (.ppt)
-Homework 1 due
-Homework 2 assigned

Week 5:
Java multithreading wrap-up
-Quiz 1 (1 hour)

Week 6:
- Java Native Interface: (CJ-II Ch. 14)
Advanced language constructs: Designing generic classes (CJ-I Ch. 12), Annotations (CJ-II Ch. 11), Inner classes (CJ-I Ch. 6)

Week 7:Server-side models: Servlets, JSP, (JDBC): notes (.ppt)
-Homework 2 due
-Homework 3 assigned

Week 8: Java & XML, DOM and SAX Parsers, POX, SOAP: (CJ-II Ch. 2) notes (.ppt) notes (.ppt)
-Quiz 2 (30 min)

Week 9:Open