FRAMES
NO
FRAMES
Course Description
This course is about problems we face when
constructing large software systems. Students will learn about various
methodologies used in all parts of the software life cycle. We will
illustrate the use and application of these methodologies by examining
how they can be supported by the Java language. By the end of the
semester students will have acquired a strong grounding in
object-oriented design in Java and, more generally, improved their
skills for programming in the large. We will study several topics
related to software design,
including: Inheritance, Exceptions, Namespaces, Abstract Types,
Representation Invariants, Procedure Specifications, Object Models,
Data Models, Design Patterns, Design Strategy.
Lectures
Tuesday, Thursday, 11:00 am - 12:30 pm, in Room
MCS B31.
Prerequisites
Extensive programming experience with at least
one
high-level programming language is required. Some experience with
object-oriented
principles is recommended. At least a basic familiarity with Java is
highly
recommended.
Even though there is only one formal
prerequisite
for CS 511 according to the BU Bulletin, namely CS 320 or CS 411, you
should
be aware that the course presumes a level of preparation you normally
get
from having completed the 300-level CS courses, or equivalent courses.
Exams
MidTerm Exam: Thursday, March 2,
11:00 am - 12:30 pm.
EndOfTerm Exam: Thursday, April 27, 11:00
am - 12:30 pm.
Project Presentations: Wednesday,
May 3,
2:00 pm - 4:00 pm.
The exams are closed book. You may, however,
bring
one 8.5 by 11 sheet of paper (i.e. one regular-size sheet of paper) as
a crib sheet. Preparing a crib sheet can be a useful study aid, so take
time in selecting material for it. You may use both sides of the paper
and write as small as you like, but in any case, you are allowed only
one
sheet. No mechanical or electronic reproductions are allowed; the crib
sheet must be hand written. You must hand in your crib sheet when you
hand
in your exam, and you will get credit for it in your total grade for
the
exam.
Teaching Staff
Instructor -- Assaf Kfoury
Office
Hours:
Tue 3:00 pm-5:00 pm, Wed 2:00 pm-3:00 pm
Location:
MCS 176, e-mail: kfoury@cs.bu.edu
Teaching assistant -- Yarom Gabay
Office
hours: Wed 10:00 am-12:00 pm, Thu 2:00 pm-3:00 pm
Location:
MCS 177, e-mail: yarom@cs.bu.edu
Mailing List
The course mailing list is named cs511 and
is managed by IT's majordomo engine. All students registered for the
course
should add themselves to the mailing list. To join the course mailing
list,
type "csmail -a cs511" at the Unix prompt. To inspect who else
is on the mailing list, type "csmail -p cs511". To remove
yourself
from the mailing list, type "csmail -r cs511".
Students are welcome to post messages and
questions
to the mailing list. All messages to cs511@cs.bu.edu
are
archived (click here).
Books
Required:
- Barbara Liskov. Program Development
in
Java: Abstraction,
Specification, and Object-Oriented Design. Addison Wesley, 2001.
[PDJ]
Recommended:
- David Flanagan. Java
in a Nutshell, 5th Edition. O'Reilly, 2005. [JN]
- Joshua Bloch. Effective Java:
Programming
Language
Guide, 1st Edition. Addison Wesley, 2001. [EJ]
- Gamma, Helm, Johnson and Vlissides. Design
Patterns.
Addison Wesley, 1994. [DP]
- Ian Darwin. The Java Cookbook,
2nd Edition. O'Reilly, 2005.
[JC]
Maintained by Assaf Kfoury
Created: 2005.12.27 Last modified:
2006.01.10