John Boyland
Fall 2009
TR 2:00-3:15pm
| Instructor | John Boyland |
| Office | 925 EMS, 229-6986 |
| Office Hours | T 3:30-4:30pm, R 11am-12pm, or by appt. |
| Course Homepage | http://www.cs.uwm.edu/classes/cs552 |
CompSci 552 teaches the Java programming language for those who are already competent in C++ and also introduces students to refactoring, design patterns and concurrency. The course will use a freeware IDE (Eclipse) and a distributed filesystem (AFS).
Students will be proficient in object-oriented programming in Java, more specifically, they will be
Students must have received a `C' or better in CompSci 351, and should also have basic knowledge of Java, for example, as provided in CompSci 431. In particular, this class assumes the following abilities:
The required textbook for the course is
Xiaoping Jia. Object-Oriented Software Development Using Java. 2nd ed. Addison-Wesley. 2003.
The grade for the course will be computed from the following parts:
Programs and written assignments will be graded for correctness, suitability, style, clarity and practicality. Although we will provide solutions to some assignments, there are usually a wide variety of correct answers to any particular assignment.
Unless an assignment explicitly says otherwise, all graded assignments must be your own work (your own words), but you may work with other people as long as you list their names prominently on the first page of the assignment, and/or in a comment at the top of the assignment. For this course, verbal communication and collaboration using non-code text or hand-written code is permitted, as long as it is properly documented. Documentation must also be made for help from anyone not in the course, such as a tutor, friend, or relative, and for information off the Web.
You may not make copies for other people of assignments through email, disks, scanning or any other automatic copying technique, except where specifically permitted in an assignment. Whether or not you have permission of the other, submitting someone else's work as your own is plagiarism, a serious instance of academic misconduct. Everyone is responsible for learning the material themselves. Some of the assignments may be graded in person, especially in cases where the individual contribution to the assignment is not clear. If you are graded in person, you will be expected to demonstrate that you have mastered techniques used in the material you submitted.
In this course, you will be running code written by course staff. None of these programs are ``Trojan horses'': none will ever attempt to perform covert tasks that invade privacy or destroy data. Similarly, you may not submit Trojan horses as regular assignments. Any such action will be dealt with severely.
At the end of the course, the numeric grade will be converted into a letter grade according to the following scale:
| Letter Grade | A | A- | B+ | B | B- | C+ | C | C- | D+ | D | D- | F |
| Minimum Score | 92 | 90 | 87 | 82 | 80 | 77 | 72 | 70 | 67 | 62 | 60 | 0 |
You may use the Eclipse IDE for your Java programming. It is much easier than using emacs plus javac, but it is also resource intensive. Eclipse is installed in AFS in the class area, and it has been requested to be installed on the Windows build on the lab computers, but we recommend you install it on your home computer. In particular, you can make sure your home computer has OpenAFS installed.
Eclipse lets you decide where you want to put your ``workspace'' and where to put the ``projects.'' The projects should be placed as subdirectories of the homework area. The workspace can be anywhere. (In particular you are permitted to use the homework directory itself as the workspace.)
All your work should be done in the AFS volume assigned to you:
/afs/cs.uwm.edu/users/classes/cs552/001/PantherID.
You may wish to make a symbolic link from a UNIX acount to this directory.
Before you can access this directory, you will need to obtain
authenticate yourself to AFS using Kerberos. This can be done using
/usr/afsws/bin/klog PantherID
and type your Kerberos password. The kpasswd.uwmcs command in the
same directory can be used to change your kerberos password.
(The command kpasswd won't work. One version of this command
simply will claim that you didn't type the old password correctly. The
other will change your password but will make it impossible to 'klog'.)
The root directory of your volume has some special subdirectories:
summary.txt lists all the scores and
computes the weighted percentage.
homework4 by
typing/usr/afsws/bin/fs sa homework4 someoneelse write
| Date | Topic | Due Tuesday | Due Thursday | Reading |
|---|---|---|---|---|
| 9/1 | Introduction; UML | Ch. 1, 2 | ||
| 9/8 | Java Basics | Ch. 3, 4 | ||
| 9/15 | Java Classes and Inheritance | Homework #1 | Ch. 5 | |
| 9/22 | Documentation and Invariants | Ch. 6 | ||
| 9/29 | Generalization: TEMPLATE, STRATEGY | Homework #2 | Ch. 7 | |
| 10/6 | Collections | Ch. 8.1-2 | ||
| 10/13 | AWT and Swing; I/O Library | Homework #3 | Ch. 8.3-4 | |
| 10/20 | Midterm; Intro. to Refactoring | Ch. 9.1 | ||
| 10/27 | Refactoring | Homework #4 | Ch. 9.2-4 | |
| 11/3 | STATE, FACTORY, COMPOSITE | Ch. 9.5-7 | ||
| 11/10 | PROTOTYPE, BUILDER, COMMAND | Homework #5 | Ch. 10.2-3 | |
| 11/17 | ADAPTER | Ch. 10.4 | ||
| 11/24 | Concurrent Programming | Ch. 11 | ||
| 12/1 | Avoiding Concurrency Failure | Homework #6 | lecture notes | |
| 12/8 | Socket-Based Communication | Ch. 12.1 | ||
| 12/15 | (No class) | Homework #7 | ||
| 12/21 | Final Exam (Monday 12:30pm) |
Online reference for Java: