|
Overview
Official summary:
The course presents the theory and practice of object-oriented
programming.
The course enhances students understanding of the concepts of object,
class,
message, method, inheritance, and genericity. The course covers a
basic
model for objects; the principles of types and polymorphism in
object-oriented
programming languages; different forms of abstraction; and theory and
practice
of reuse. The course also introduces students to some object-oriented
design
patterns that practitioners have found useful.
Announcements  
![[RSS]](http://www.ccs.neu.edu/home/riccardo/pics/livemark.png)
Fri, 28 Nov 2008: As promised, I've started
a page
listing some ideas to tickle your imagination for homework 6.
Fri, 28 Nov 2008: Graded homeworks 4 are now available
for viewing.
Wed, 26 Nov 2008: Here is the info that the registrar's office gives for our
final: 12/16/2008 1:00 PM CS U370 OBJ-OR DSGN 106G WV
R.PUCELLA. In English, December 16th (Tuesday) at 13h00 in 106 West Village G.
Wed, 26 Nov 2008: The support files for homework 6 are now available as a zip
file adventure.zip.
Tue, 25 Nov 2008: Homework
6 is out. Formally due December 10th, although I will accept
submissions until December 13th without penalty. I am still
finishing to prepare the support files for the homework; they should
be up later today. I just wanted you to get the writeup before the
break in case you want to print it out. Note that it is fairly
long.
Sat, 22 Nov 2008: First off, lecture notes from this morning are up. Second, here is the
promised file containing some sample behaviors for homework 5.
Fri, 21 Nov 2008: I will be posting a version of the behaviors that I used in my demo on
Tuesday sometimes tomorrow. I need to clean up the code some.
Wed, 19 Nov 2008: Yesterday's lecture posted.
Wed, 19 Nov 2008: Bunch of folks pointed out, correctly, that I forgot to
include Stream.java
in the list of support files for homework 5. I've just corrected that
oversight.
Tue, 18 Nov 2008: Homework
5 is out, due next Tuesday, 22h00, as usual. You have only a
week, but then again, it's a short homework. Support files are
below. I will post some sample pictures and some sample behaviors by
tomorrow, a cleaned up version of what I demoed in class. (Note that
I did not proofread carefully, so I may need to post corrections in
the coming 12 hours; I'll announce when I do.)
Sat, 15 Nov 2008: After due considerations, homework 5 will in fact come out on
Tuesday. So you can take it easy for the next few days, 370-wise.
Sat, 15 Nov 2008: Lecture
16 is online. Homework 5, which was due out yesterday, will in
fact go out later tonight, after I get back home from my trip out
West. So check this web site when you wake up Sunday morning.
Wed, 12 Nov 2008: The TAs tell me that graded homework 3 will be available from the
usual
place sometimes today. They said noon, but factoring in random
delays, you should check early afternoon.
Tue, 11 Nov 2008: The ACM Talk on Wednesday (tomorrow, 11h45, 108 West Village H) features
Dino Oliva, on his experience about navigating the software development
process at Bloomberg (a finance shop in NYC). I know Dino very well,
and he comes from a background of programming language research. It
should be a fun talk, so I recommend you drop by.
Mon, 10 Nov 2008: Just to remind you that there is no lecture tomorrow, for Veterans'
Day. See you all Friday.
Mon, 10 Nov 2008: I am granting an extension on Homework 4 until Wednesday (Nov 12) at
22h00.
Sun, 09 Nov 2008: Friday's lecture on multiple inheritance is up. I have not yet typed
up the drill exercises on functional iterators that I talked about in
class, though, I apologize. If you missed it, I asked you to implement
functional iterators for the Grid ADT we saw on homework 2, and
functional iterators for the binary trees ADT that we saw on the
midterm.
Tue, 04 Nov 2008: This morning's lecture is up.
Mon, 03 Nov 2008: I am trying out an RSS feed for announcements. If all goes well,
you should see an RSS link up in your browser.
Nov 3: Small mistake in the write-up for Homework 4: the
specification for {overlay(m1,m2).current() should be
MFrame.merge(m1.current(),m2.current()) instead of
MFrame.merge(m1,m2). The PDF has been updated. Thanks
David for spotting this.
Nov 2: Friday's lecture on laziness is up.
Oct 31:
Happy
Halloween. Homework 4 is out, due
November 11th. Support files below.
Oct 30: Just got an email from the Provost office
regarding election day next week: We are all agreed that voting is a paramount civic duty, and the
Northeastern community is engaged in this election. Nevertheless, it
is not appropriate to cancel classes for this purpose. Please advise
your students that early and late polling hours will accommodate them.
So lecture as usual. And go vote.
Oct 27: Reminder: the midterm tomorrow is closed
books/notes, but you are allowed to bring a two-sided 8.5x11 sheet
with notes.
Oct 27: Graded homework 2 are now available. Get in touch with Vlad if there are any problems.
Oct 24: Part of the lecture notes from this morning
about the topics to review for the midterm are available
below. (I'll have the full lecture notes up by tomorrow morning.)
Update: full lecture is now up.
Oct 23: I'm happy to announce an extension on homework
3, if you need one. I will accept submission without penalties
until Sunday night, 22h00. By early tomorrow morning, I will post on
the FB discussion group some of the questions I got by email, and
their corresponding answers. Some of you have not joined the group
yet.
Oct 21: Lecture 11 posted below. Sorry, I though I had
posted it last week, but it must have skipped my mind. What else?
Ah yes:
- here is the conference
paper that I used as a basis for homework 3. Please have a
look, it's actually pretty readable for a research paper.
- Here is a Java class Escher.java
implementing a method Escher.draw() that draws the square
limit diagram in the paper, the final diagram that I showed in
class. it also contains definitions for all the pictures in the
Escher part of the paper above. Make sure you have the canvas
initialized when you invoke Escher.draw().
Oct 21: No class this morning; I am feeling
rather ill. Your
job will be to do some reading, which I will post later
today. For now, catch up on your lecture notes reading. I will be
posting last Friday's notes sometimes today, along with the paper
by Henderson upon which your homework is based. This Friday,
dynamic dispatch, and review for the midterm.
Oct 16: Homework 3 is now complete. Let it rip.
Oct 16: Added support files for Homework 3 below,
including CanvasWindow for actually displaying stuff.
Oct 15: Homework 3 is out, at
least the first question. Have a look, and start now. The second
question will involve iterators, and will come out on Friday. I
will post sample implementations of Point, Line,
and Grid so that you are not penalized when developing if
you did not get those completely right in previous homeworks. I
will also make some sample pictures available for you to play
with. Except those tomorrow. (I need to draw them...)
Oct 11: Nested classes and interfaces lecture is
up. When I talked about nested classes, I talked about packages as
a unit in Java. I have added a reading from the Java tutorials
about it below. Read it, you will be responsible for it.
Oct 9: Subclassing lecture is up.
Oct 8: As I said in class, you can view your graded
homeworks online, by just heading over to the homework submission
page. Get in touch with Vlad if there are any problems.
Oct 5: Last week's lectures are up.
Oct 3: The rest of homework 2 has
been posted. Part of the questions involve the testers for
Line and Grid, which you can find below in the
Homeworks section. Submission instructions will be similar to
those for the first homework. Links to come.
Oct 1: Bunch of you spotted this error on the (partial)
homework 2: The specification for length() should really
take the square root of the sum of the square of the
differences. What I wrote is non-sensical, of course. I'll correct
it on the complete homework, which should be out by tomorrow.
Oct 1: Our TA Jeff tells me that I got his office number
wrong below. It's really 460 WVH. It's been corrected.
Sep 30: Homework 2 is
partially out. The first question at least. The rest should be up
by tomorrow. You can get started....
Sep 29: We need a discussion group. I dislike
BlackBoard. So I set one up on Facebook. I trust you all have
Facebook accounts. It's NU CSU 370 Fall 2008 Pucella. Please join. I'll check requests for membership against official registration listings. If you are not registered in my section, or are not registered at all in the course, but still want to join, drop me an email explaining your situation.
Sep 28: Notes for Friday's lecture are up.
Sep 26: Daniel was kind enough to point out to me that
my notes for lecture 4 talk about instanceOf for the
implementation of equals, but that's of course wrong. It
should be instanceof - note the different
capitalization. Sigh. I've corrected the notes for lecture 4.
Sep 26: Question from this morning lecture: How do I
add the PointTester.java file to my "project" in Eclipse. Some
answers can be found here - look at response #7 that uses "Import", might be the nicest one.
Sep 25: The tester for points is now available. It provides a class PointTester with a
main method that can be run against your Point
class to test it. By default, it generates one hundred points and
tests all the specifications except for equality. We will see
later how to test for equality.
Sep 24: Lecture notes for last Tuesday are up. It
includes an implementation of the equals method for drawings,
which explains how to check an object being a Drawing - you can
follow that template for your homework. I am running slow on
getting the tester out for the homework, partly because I'm
fighting with a bug in the tester :) New ETA is tomorrow noon.
Sep 23: First off, please make sure that you send our
TA, Vlad Slavici, an email at
vslav@ccs.neu.edu with the following information: (1) your name, (2) your preferred email address, and (3) the last 4 digits of your NU ID. This will let him set up the submission server, and he will send you an email with your password to access the server. More precise instructions for submission in the days to come. Also, I completely forgot to give you an implementation of the equals method for Drawing, and in particular how to actually check that an object is a Drawing. I will add the relevant bits to the lecture notes for lecture 4, so have a look when they're out, hopefully by tomorrow noon.
Sep 19: Homework 1 is out. A short one. Due in a
week. Start early.
Sep 17: Lecture notes for the first two lectures are
up. The first homework should be going out on Friday, a short one
week homework.
Sep 16: My office hours have been nailed down, finally:
Tuesdays, 15h00-17h00. If those times do not work for you and need
to see me, feel free to send me an email and we'll try to agree on
a convenient time for you.
Course Information
Time and Location: Tuesday/Friday 9h50-11h30
Instructor: Riccardo Pucella,
328 West Village H (#23H)
Office hours: Tuesdays 15h00-17h00
Teaching Assistants:
- Vlad Slavici
Office Hours: Thursdays 16h00-18h00 (370 WVH)
- Jeffrey Satterley
Office Hours: Wednesdays 15h00-17h00 (460 WVH)
Course Web Site: http://www.ccs.neu.edu/home/riccardo/csu370
Prerequisites: CSU 213
Textbooks: The textbook for the course is:
-
P. Sestoft, Java Precisely, 2nd edition, MIT Pess, 2005.
You may also find the following book useful, although it is not required:
-
Cay Hostermann, Object-Oriented Design and Patterns, 2nd
edition, John Wiley and Sons, 2006
Grading: Grading will be based on weekly homeworks
(50%), a midterm (25%), and a final exam (25%).
There may also be one or more quizzes, which may count as either
assignments or exams at the whim of the instructor.
While some program assignments may require students to work in
teams, most assignments and all quizzes and exams are individual.
Student work is subject to the Academic
Honesty and Integrity Policy.
Security is an important aspect of
software development. In this course, students are expected to protect
the software they develop from plagiarism. The quality of
this protection will be graded.
Schedule Outline and Lecture Notes
This schedule is subject to change without warning. Readings
will be assigned to supplement lectures, and posted here.
Homeworks
Submit your homeworks using
the web-based
submission system.
- Homework 1: Due Sep 26, 2008.
(Test program for homework 1)
- Homework 2: Due Oct 10,
2008.
(Test programs: LineTester.java and GridTester.java)
- Homework 3: Due Oct 24,
2008. (Support files:
Point.java,
Line.java,
Grid.java,
CanvasWindow.java,
FuncIterator.java)
- Homework 4: Due Nov 11,
2008. (Support files:
Point.java,
Line.java,
FuncIterator.java,
MoviePlayer.java. Here are the
two files that I used in class as examples:
Man.java,
MovingMen.java)
- Homework 5: Due Nov 25,
2008. (Make sure you get these support files, since
some have changed from past homeworks:
Point.java,
Line.java,
FuncIterator.java,
MoviePlayer.java,
Function.java,
MFrame.java,
Movie.java,
Stream.java,
BehaviorMen.java)
Note that MFrame.java and Movie.java provide solutions to last
homework. Feel free to use your own version of Movie.java if you
understand it better. You cannot use MFrame.java from last
homework because I've augmented it. Similarly, I have added one
method to Line.java.
- Homework 6: Due Dec 10,
2008. (Support files: adventure.zip)
Online Resources
|