Introduction to Object Oriented Programming using Java

Summer 2005


Course number: CSPP51035
Location: Ryerson 276
Time: Tue 5:30-8:20

Teaching staff:

Professor:  Mark Shacklette

Office: Ryerson Hall 175-A
Email: mark@cs.uchicago.edu
Office Hours: 3:00-5:00 Tuesdays

TA: ( Tony ) Yu Hu
Office: Ry258
Tel: 773-398-6376 ( Cell )
Email: yuhu@cs.uchicago.edu

Office Hours and Tutorial: Attention : Please Check the Web Often since sometime the time could be rescheduled!

Office Hour Default: Thursday 2:00pm - 5:00pm

Tutorial Default: Thursday 5:00pm - 6:00pm

If any special, I will update the page and send email to mailing list.

Week 5: Have two office hours concerning you have a little bigger assignment to due at July 19th.
- July 18th (Monday) 3:00pm - 6:00pm;
- July 21st (Thursday) 2:00pm - 5:00pm.

Week 6: Since I am out of town from Tuesday. the office hour will be
- July 25th (Monday) 2:00pm - 6:00pm.

The rest weeks will have normal office hours (2:00pm - 6:00pm) Thursday.


Desp of Course:
This is a fast-paced first course in Java for students with some prior programming experience, though not necessarily in Java or even in an object-oriented language. A strong emphasis will be placed on understanding basic fundamentals of Object Oriented design--inheritance, polymorphism, composition, delegation, exceptions, etc. In the latter half of the course we will explore fundamental Object Oriented design patterns and their implementations. We will also explore inter-JVM communication in Java network programming, including Java RMI. Advanced topics will be explored and investigated, including Java  Native Interface, multithreaded programming in Java,  and Java JDBC.  A central though not exclusive focus will be on the core language and pattern implementations.

Course Format:  Lecture with significant student participation. Please come prepared.

HomeWork Submission Instruction:  

1. Put all your Source file in right relative structure.
2. Put a detailed ReadMe file. In Readme file, you should have
2.1 Your design. ( Concisely );
2.2 Your classes name and useness;
2.3 How to compile your program;
This is very important because every one could have different
environment setting. Thus, you have to tell me how to setup
your program.
Remember, if I can't compile your code when I follow your readme,
you could get "ZERO" on your homework !!
So, put sometime on your Readme.
2.4 How to run your code.

In a word, readme should be really like a "REAdMe". Otherwise, I can't
guarantee to grade your homework correctly.

3. If you submit homework late, I will minus some points depending on the
cases.
4. The folder you should create for your homework should be like
"yuhu_hw1".

5. Zip or Tar your folder into "yuhu_hw1.tar" or "yuhu_hw1.zip".

6. Send to my both emails :
yuhu@cs.uchicago.edu
yuhu1978@gmail.com ( this is for backup, please send to it to both addresses.)

You will receive a confirmation of your submission.

The final grade is determined as:

Final Course Grade Evaluation:

A:    90 - 100 Percent
B:    80 - 89 
Percent
C:    70 - 79 
Percent
D:    60 - 69 
Percent
F:    below 60
Percent

ACADEMIC INTEGRITY

Students are expected to have read and understood the University's policy on Academic Integrity. This policy is detailed in the Student Manual of University Policies and Regulations, available online at http://www.uchicago.edu/docs/studentmanual/academic_honesty.html.

While students are encouraged to help one another in understanding the complexities involved in this course, by providing mentoring and explanations, students may not share code in the form of complete Java source files.  Short code snippits showing, for example, how one connects to the database with JDBC, how one binds to a RMI object, Makefiles, etc., is allowed.

Getting Help: The TA will hold office hours (time will be discussed the first day of class) and will also be available by appointment. The Instructor will be available both by appointment and at regular office hours. In addition, when possible, all technical questions should be discussed over the course listhost: Subscribe To The Mailing List

Required texts:

        Core Java 2, Volume I: Fundamentals, 7th Ed., Hosrtmann & Cornell, Prentice Hall, 2005, ISBN:  0131482025, (H&C I below)

        Core Java 2, Volume II:  Advanced Features 7th Ed., Hosrtmann & Cornell, Prentice Hall, 2005, ISBN: 0131118269 (H&C II below)

Recommended Texts:

       Java Programming with Oracle JDBC , Bales, O'Reilly, 2001, ISBN: 059600088X
Beginning Java 2 , Horton, Wrox Press, 1999, ISBN:  1861002238

Thinking in Java , Bruce Eckel, Prentice Hall, 1998, ISBN:  0136597238

Java I/O , Harold, O'Reilly, 1999, ISBN: 1565924851, esp. chapters 1,2,3,5,11

Design Patterns, Gamma, et. al., Addison Wesley, 1995, ISBN: 0201633612

Object Oriented Design & Patterns, Cay Horstmann, Wiley, 2004 ISBN: 047131966X

The Java Programming Language, 3rd Ed., Arnold, Gosling, et. al., Addison Wesley, 2000, ISBN: 0201704331

Java: How To Program, 2nd Ed., Deitel & Deitel, Prentice Hall, 1998, ISBN:  0130176087

Required Software

OF THE UTMOST IMPORTANCE:

For each part of the assignment there are detailed descriptions of what you should turn in. You should include ALL supporting files (source files, data files, jar files, etc.) as attachments to the submission email (a single message).  Please send only UNIX-readable (text) files (that is, no MS Word documents!!!).  Word documents will be considered a personal affront to the instructor and will result in public ridicule resulting in ignominy and a high probability that you will eventually turn to drink.  All work is graded using the Sun JDK 1.5_0_02 on the LINUX CLUSTER (not Borland's JBuilder on Solaris, not IBM's WebSphere Application Developer on Windows XP, etc.)

FAILURE TO PROVIDE AND DELIVER TO THE GRADERS ALL SCRIPTS, ALL COMMANDS, AND ALL SUPPORTING FILES, TEXT OR SOURCE, YOU USED TO DELIVER AND PRODUCE THE SOLUTION WILL RESULT IN A LOSS OF POINTS.  IF THE GRADERS, WORKING SOLELY ON THE LINUX CLUSTER, CANNOT REPRODUCE YOUR SOLUTION OR ANY PART OF YOUR SOLUTION FROM THE SET OF INFORMATION YOU PROVIDE, YOU WILL LOSE PARTIAL OR FULL CREDIT.

Note: Assignments are due as scheduled below. Assignments turned in late will be penalized 3 points for each day (calculated as the 24-hour period immediately following the due date/time) they are late after the due date.  There will be no exceptions to the penalty.  Assignments turned in more than 5 days after the due date will receive 0 points and will no longer be accepted and will not be graded.  The purpose of quizzes is to encourage students to do the required reading preparation BEFORE class lecture.

The instructor reserves the right to alter the course contents, dates, times or percentage of credit based on time allowed and class progress through the course material. The instructor also reserves the right to curve grades if he deems it in the best interest of the majority of students.

Important Links:



All course material


Class/Date
Lecture Topics
Required Reading Schedule
Homework & Assignments
Class 1
June 21
Course Introduction, Java Language overview, Core datatypes, overview of fundamental structures
Compilation, Packaging, CLASSPATH
H&C I, Ch. 1 - 2
Class 2
June 28
Introduction to OO Programming in Java
Class Basics, Objects, Object Construction
Datatypes:  Strings, Arrays, Conversions, Basic Java I/O, Random Numbers
H&C I, Ch. 3 - 4
Class 3
July 5
Class Inheritance
Abstract Classes
H&C I, Ch. 5-6 HW 1 due before class 5:30pm
Solution to Hw1
Class 4
July 12
Classes & Polymorphism

H&C I, Ch. 5-6

Class 5
July 19
Interface Inheritance
Composition and Delegation
Upcasting and Downcasting
H&C I, Ch. 5-6
HW 2 due before class 5:30pm
Solution to Hw2
Class 6
July 26
Inner Classes
Basic Design Patterns
Java Exception Handling
Java I/O Streams & Files
Object Serialization
Object Copying
H&C I, Ch. 11-12

Class 7
August 2
The Java 2 Collections Framework
Java 5 Generics
Java Database Programming with  JDBC
H&C II, Ch. 2
H&C I, ch. 13
H&C II, Ch. 4

Class 8
August 9
Java Network Programming
Java Sockets
Java Remote Method Invocation (RMI)
H&C II, Ch. 3, 5
HW 3 due before class 8/9 5:30 pm
Solution to Hw3
Class 9
August 16
Java Multithreaded Programming with the Java Thread API
Threading Architecture Issues and Abstraction
Callback Methods
Problems and Solutions
H&C II, Ch. 1
Class 10
August 23
Final Exam (Live)

HW4 due 11:59 pm Sunday, August 28, 2005