Course Work
We will construct networking software components and distributed
applications using popular programming tools available in the UNIX
environment (such as C++, Java, make, emacs, dbx, gprof, sockets, and
CORBA). You are expected to be familiar with an object-oriented
programming language. Implementation will be done using C++ and
Java.
cs544 is not an introductory course in OO design, C++,
networking, or operating systems. It's a course intended to expose
you to the state-of-the-art in design and programming techniques for
building real-world distributed systems. Please do not try to take
this class for credit unless you feel comfortable with this philosophy
and unless you can spend sufficient time to master the concepts and
tools..
Programming Projects
There will be a number of programming projects that will build upon
one another to illustrate the value of good design and implementation
techniques on the software lifecycle. Online descriptions of these assignments will be
available via the WWW.
An important goal of the assignments is to teach you about design
alternatives involved in building communication software. To solidify
your exposure to these issues, we'll compare and contrast various
examples of designs based on different communication paradigms (such
as sockets, Java
RMI, ACE,
and CORBA).
Projects will involve substantial network programming in C++, Java,
UNIX, ACE, and CORBA. Initially, assignments will be done
individually by each student. Subsequent projects will be done in
small teams of 2 or 3 students. Students are assumed to be competent
in C++ and familiar with basic UNIX operating system features such as
electronic mail, WWW browsers, and USENET newsgroups. Students not
familiar with these tools will have to learn them outside of
class.
To encourage you to write well-designed software, I reserve the right
to change the assignment specifications at any point before the due
date. Expect this to happen several times during the semester. If
you have written your program in a modular fashion the changes will be
trivial to implement.
The programs will be graded using the following criteria:
- 40% execution correctness
- 30% structure (e.g., modularization, information hiding, etc.)
- 10% insightful programming (e.g., developing reusable class components, etc.)
- 10% Consistent style (e.g., capitalization, indenting, etc.)
- 10% appropriate commenting
There will be a mandatory 5 point deduction (out of a possible
100 points) for each day that your program is late after the
deadline. Moreover, I will not accept programs that are turned in
later than two calendar days after the due date.
Exams
There will be one mid-term (around the 8th week of class) and a final
exam (held on the last day of class), both of which will be held in
class. Material tested on the final exam will be comprehensive.
The relative weighting of each portion of the course is presented
below:
- 40% Exams
- 60% Programming projects
Note that I reserve the right to change the weights during the course
of the semester.
Back to CS544 home page.