CISC370-010 -- Summer 03

Object-Oriented Programming, Java, and the World Wide Web

Monday/Wednesday 5-7PM
Room 203 Smith
Prerequisites: CISC181 (Intro to Computer Science) and CISC220 (Data Structures), and a good working knowledge of C++

Instructor: Chris Fischer
E-mail: cfischer@cis.udel.edu
Office hours: By Appointment
Web: http://www.cis.udel.edu/~cfischer/

Teaching Assistant: Ahmet Duran
E-mail: duran@cis.udel.edu
Office: Pearson 115
Office hours: Mondays 3-5PM, and by Appointment
Grading Info


What WILL Happen in this course:
I'm going to try to teach you as much about Object Oriented programming and Java as humanly possible in the time that we have. I'm going to approach this course with the assumption that some of you are going to become Software Engineers when you graduate, and I want you to be well prepared. In my experience, the real challenge of Software Engineering is deciphering other peoples code, so if you're shaky on the fundamentals, you're going to have a very hard time.

There is going to be a lot of programming and outside work in this course. A lot. You don't learn how to be a good programmer only by reading about it, you have to do it. If you were looking for a survey course with little out of class work, this isn't it, so be forewarned. Plan to send about 8 hours a week, or more, in outside work for this course. However, I feel pretty confident in saying that after this 10 week course is over, you're going to know a lot about Java and you're going to be a more proficient programmer, which will help you out a lot later on. Think of it as an investment in yourself. (Isn't that the point of college, after all?)

What I'm going to teach in this course:
We're going to talk about the Java language itself, including Inheritance, Polymorphism, Interfaces, Streams, Exceptions and Debugging, Inner Classes, GUI/Graphics Programming, Threads, Network/Socket programming, Distributed Programming with CORBA and RMI, and more.
We're also going to talk about Design Patterns, which are predesigned ways to solve common problems that occur in OOP, and I'm going to force you to practice GOOD CODING STANDARDS. :)

I'm going to make the assignments as interesting and real-world like as possible.

Other important points:
You are strongly encouraged to come to class. While I will put the slides on the web, they are just a detailed outline. I'm not going to take attendance, but you will definately hurt yourself by not attending class.

That said, I'm going to be very unsympathetic towards people that email me or the TA asking for help, but never come to class. I'm also going to be very unhappy if I get emails the night before/day of when an assignment is due asking about it. It should really be almost done by then.

Also, please don't email me your programs and say "what's wrong with this". It's not my job to debug programs, the debugging is a (large) part of the assignment. You can still ask, but please use it as a last resort, not a first. High level questions are much more welcome, and will frequently be emailed out to the class email list.

Course Policies:

Coding conventions: I'm going to cover this in class, but generally, your source code should conform to Sun's Java coding conventions. If they don't, I'm going to take off a TON of points, probably more than any instructor you've had before. If your code can't be clearly understand BY OTHER PEOPLE, it is of much less utility. I'm going to discuss this further on the first day of class.

Also, since I'm such a nice guy, for the first assignment, I'm going to grade it twice - once with points subtracted for poor coding standards, and once without (you get to keep the score without the subtracted points). This way, you can see what I would actually take off and correct it before I start taking off.

Lateness: Assignments are due by the end of class on the date they are due. After that, they lose 10%/day, up to a maximum of 5 days late. (So I can post solutions and hand back assignments) Assignments can be turned into my or the TA's mailbox. (It would also be a good idea to email both of us and tell us its there, so we know when it was turned in).

Academic Dishonesty: DO YOUR OWN WORK. Everyone here should know what constitutes cheating by now, but basically, you MAY NOT copy other CISC370 students code or allow them to copy yours. Also, unless specifically stated otherwise, you must work ALONE on all the assignments.

What I do NOT consider cheating: High level discussions with other students about the assignments, copying code segments from the book or other text, looking on SunSolve/Google for things other people have done. Professional programmers do all of these things; there is no good reason that you shouldn't.

Final note: I will prosecute you as per University guidelines if I catch you cheating. I really don't want to waste everyone's time by doing this, but I will. Do your own work.

Grading Policies: I'm going to grade on the standard curve (>93=A, >90=A-, >87 B+, etc.). This is guaranteed. Depending on class performance or other factors, I might adjust this scale down (to help everyone) I will never adjust it up.

There should be several assignments that have extra credit opportunities available.

Your grade for the semester will be based on:

Programming assignments:   60% of final grade
Semester project:   20% of final grade
Final test:   20% of final grade

Class participation can positively effect a borderline grade.


Textbooks

Required: Core Java 2: Volume I -- Fundamentals, 6th Edition, ISBN 0130471771, Horstmann and Cornell, Prentice-Hall, 2002.

Required: Core Java 2: Volume II -- Advanced Features, 5th Edition, ISBN 0130471771, Horstmann and Cornell, Prentice-Hall, 2001.

Optional: Java How to Program, Fourth Edition, Deitel and Deitel, Prentice-Hall, 2001.


Schedule

You are expected to attend all classes, and to be prepared for each class by reviewing notes from the previous lecture and reading the scheduled reading assignments. You are responsible for all announcements and material presented during classes, whether you are present or not.

< /tr>
DateTopicsReadingsNotesAssignments Due
Jun 9Intro to Java, command-line args Chapters 1-3 Vol I 1 2
Jun 11 OOP, javadoc, Inheritance Chapters 4+5 3 4
Jun 16 Interfaces, ExceptionsChapter 6 5 6Assignment 1 Due Solution
Jun 18Cloning, Packages, Inner ClassesChapter 67 8 9
Jun 23Collections, 2D GraphicsChapter 7, Vol II Ch. 210 11Assignment 2 Due Solution
Jun 25Event Handling Layout ManagersChapter 812 13
Jun 30Swing Components Applets Chapter 9, 1014 15Assignment 3 Due Solution
Jul 2Work on HW#4!
Jul 7ThreadsVol II Ch. 116Assignment 4 Due Solution
Jul 9NetworkingVol II Ch. 317
Jul 14Assignment 5 Due
Jul 16StreamsChapter 1218Project Proposal Due
Jul 21Corba, More Corba RMIVol II Ch. 519Assignment 6 Due
Jul 23Native Methods ServletsVol II Ch. 1120 21
Jul 28SecurityVol II Ch. 922
Jul 30XML JDBCVol II Ch. 4 and 1223Assignment 7 Due
Aug 4Review For Final
Aug 6No Class - Work on Projects!
Aug 11Project Presentations*ALL* Projects Due
Aug 13Project Presentations
Aug 15Final Exam 7-9PM

Resources