22C:22 Object-Oriented Software Development
Spring 2006
MWF 1:30, 210 MacLean Hall
Professors:
Jim Cremer, 14D MLH, cremer@cs.uiowa.edu, office hours: W 8:30-9:30, Th 9-10 and by appt
Ted Herman, 201M MLH, herman@cs.uiowa.edu, office hours: by appt
Teaching Assitsant:
Zhihong Wang, 311 MLH, zhihwang@cs.uiowa.edu, office hours: T 9:30-10:30 and by appt
WHAT'S NEW (Last updated Saturday, 5/12/07)
- All scores have been posted. Mapping of scores to grades will be posted soon.
Contents:
The intended outcomes of this course are:
- deeper understanding of object-oriented programming
- increased Java programming skills, including user interface/interaction, graphics and multimedia, concurrency and network programming, and exceptionsn
- some understanding of higher-level software design and development principles and tools (development models, UML, unit testing, ...)
- experience with a substantial group project
Required Textbook

Object-oriented Software Development Using Java, Second Edition. Xiaoping Jia, Addison Wesley, 2003
ISBN: 0201737337
Author's web page for the textbook, and a page
with the source code for all examples in the book (download the jar file - it has all of the examples, while some are missing if you simply follow the individual chapter links on the same page).
A page of errata for the book (though I don't think this was done by the author, so it's possible he might
not agree with everything.)
Course grades will be based on homework assignments, exams (one midterm and a final), and a group project.
I expect each component represent approximately one third of your grade (but reserve the right
to change this significantly up through Spring Break):
- 35% for approximately 6-8 homework assignments (often including programming)
- 30% for exams (15% for midterm, 15% for final)
- 30% for group project
A more detailed expected breakdown will be available on 1/19.
- Week 1 1/17-19 Introduction, start of UI/event-driving programming
- Week 2 1/22-26 Java application, UI and event-driven programming (including Sec. 8.3 of textbook).
- Week 3 1/29-2/2 Java: review, abstraction, inheritance, polymorphism (Secs. 4.1-4.6 of textbook)
- Week 4 2/5-9 Classes and Inheritance, including overloading, polymorphism,
interfaces, multiple inheritance (Ch. 5 of textbook)
- Week 5 2/12-16 UML, incl. class diagrams, sequence and state diagrams (2.1-2.3), use-cases and use-case diagrams (2.4), and a bit on collections (8.2)
collections Software design models, UML
- Week 6 2/19-23 (Mon=finish material from prev. week). Design of classes, contracts, invariants, and assertions (6.1-6.3)
- Week 7 2/26-3/2 Contracts, invariants, assertions, canoncical form of classes (6.3), unit testing (6.4) and intro to design patterns (7.1)
- Week 8 3/5-9 Review (Mon.), exam (Wed. 3/7, in class), project introduction (Fri.)
- 3/12-16 SPRING BREAK
- Week 9 3/19-23 Project info, applet and thread programming
- Week 10 3/26-30 Project info, applet and thread programming
- Week 11 4/2-6 Design Patterns (Ch 7)
- Week 12 4/9-13 Design Patterns (Ch 7)
- Week 13 4/16-20 Design Patterns (Ch 10)
- Week 14 4/23-27 Sockets and network programming (Ch 12)
- Week 16 4/30-5/4 Project presentations
- 5/9 FINAL EXAM, 7:30 A.M.
- Homework 1. Due Monday, 1/22.
- Homework 2. Due Wednesday, 1/31.
- Homework 3. Due Friday, 2/9.
- Homework 4. Due Monday, 2/19.
- Homework 5. Due Monday, 2/26.
- Homework 6. Due Friday, 3/9.
- Homework 7 is included in the project description. Due Wednesday, 3/28.
- Homework 8 is included on the project page (see below). Due Friday, 4/6.
- Homework 9 is included on the project page (see below). Due Friday, 4/11.
- Homework 10 (scribe report #2) is included on the project page (see below). Due Friday, 4/20.
- Homework 11 is included on the project page (see below). Due Friday, 4/23.
- Homework 12 (scribe report #3) is included on the project page (see below). Due Monday, 4/30.
- Homework 13 (final project submission) is included on the project page (see below). Due Monday, 4/30.
- Project information is here.
COURSE GRADES:
> 214 A+
195-214 A
186-194 A-
166-185 B+
151-165 B
145-150 B-
135-144 C+
123-134 C
115-122 C-
90-114 D
< 90 F
Note: both of these lists use the class-specific ID I generated for and gave to each of you.
Note: HW 13 scores are final project scores. The distribution of the
scores is significantly higher than on earlier phases of the project.
Adequate, but perhaps minimal, overall project performances received scores
of 12 to 15. Thus, a project could meet all basic requirements but
receive a score in that 12 to 15 range.
Note: HWs 8, 10, and 12 are scribe reports 1, 2, and 3.
Each student will only have a score for one of the three.
Computers available
For implementing homework assignments, there are Linux PCs in 301 MLH and B5 MLH.
You can access departmental Linux machines from off-site using a secure shell program (e.g. you can download good ones from the ITS software download site. Rather than trying to remember the names of particular departmental Linux machines, you should simply use "linux.divms.uiowa.edu" as the host name when you connect; our system will then automatically connect you to one of the Linux machines (not always the same one).
IDEs, Java documentation, and other related potentially useful resources
Documenting and submitting programs
For assignments that contain programming components, you must submit via
the 'submit' command:
- your source code (and supporting files such as makefiles, when appropriate)
- a README file documenting, very briefly
- the structure of your program (both file organization and high-level
functional organization)
- the status of your program (e.g. you think it works completely, it
compiles but doesn't run, it compiles and runs but doesn't work in certain
cases, etc.)
- what hardware platform(s) you tested it on
- how to compile the program (e.g. "javac *.java") and how to run it (e.g. "java myimplementedclass 1 2 3").
and also turn in hardcopy of:
- your source code
- your README file
Important Notes
Your 'submit'ed source code must compile without any modification. If
it does not, or if the instructions you give for compilation are incorrect, you
may receive a 0 for the assignment.
It is very important that programs be well-written and clear. Clarity,
style, organization will be considered in grading programs. Your code should include
precise comments where appropriate. On the other hand, avoid the approach of ritualistically
filling your code with comments, especially those that are pointless (e.g. "this
is a variable declaration") or imprecise (e.g. "this loop goes around and around
until it figures out the answer"). Ambiguous or inaccurate comments can be worse
than none at all.
Using the 'submit' command
You will use the 'submit' command to submit program code and documentation. The
files that you want to turn in should be included in one folder/directory, e.g. 'hw1files'.
To submit the directory, execute 'submit hw1files' on one of the CS department's
Linux machines. The program will then ask you
the course you are submitting for. Respond with 'c022'. Then it will request a "Location:".
To this, you should respond with the name associated with a particular assignment.
The name will be included in the homework assignment (and will typically be something
like 'hw1').
All assignments are due at the beginning of class. Submission of any code and
programs via 'submit' must also be executed by the beginning of class. Late assignments
turned in within 24 hours will receive a 25% penalty, and those turned more than
24 late will receive a 50% or greater penalty. Assignments will not be accepted
more than 48 hours late unless approval is obtained from Prof. Cremer before
the normal due date. You must communicate with me about late assignments.
Regrade requests must be made within one week of when the assignments are returned
in class.
Homework and programming assignments, except when explicitly specified otherwise,
must be done alone. It is reasonable to discuss general approaches to problem
solutions or algorithm design with other students but the bulk of the work must
be done alone. (For instance, in general, you should not write anything down
when discussing things with others. If you can't remember it, it's probably
too detailed to count as reasonable discussion of approaches.)
bulk of the work must be done alone. Working out details or sharing in
the write-up will be treated as a violation of the academic integrity
rules, and will be handled in accordance with CLAS policy on
Academic Fraud, Plagiarism, Cheating, Forgery. Most cases will result in a failing
grade for the course.
Accommodations for students with disabilities
We would like to hear from anyone who has a
disability which may require seating modifications or testing
accommodations or accomodations of other class requirements, so that
appropriate arrangements may be made. Please contact one of us during
office hours.
For more information about University support
for students with disabilities please see
this section of the CLAS Classroom Procedures guide.
Procedures for student complaints
If you have complaints, please consult the CLAS policy on
Student Complaints Concerning Faculty Actions for procedural information.
For this particular class, if you reach the step of needing to contact the DEO, please contact CS Associate
Chair Prof. Alberto Segre instead (since Prof. Cremer is DEO).