cs445 - Spring 2009



This class is an introduction to methodologies for object-oriented design and programming. Examines the object model and how it is realized in various object-oriented languages. Focuses on methods for developing and implementing object-oriented systems.

Prerequisite: CS 331 or CS 401 or CS 403.

Section 1 Section 2 Section 3
Instructor Virgil Bistriceanu
Office hours Mon, Tue 5:30 pm - 6:15 pm
Office SB-214
Phone (312) 567-5146
Fax (312) 567-5067
e-mail bistriceanu@iit.edu
Lecture Mon 6:25 pm - 9:05 pm, SB-238
Teaching Assistant
  • Name: Lin Gan
  • Office: SB-006
  • Office Hours: Wed 4:00pm-5:00pm, Thu 4:00pm-5:00pm
  • Phone: 312-567-5705
  • email: lgan@iit.edu



Other books

  • Test-Driven Development by Example, Kent Beck, Addison Wesley, ISBN: 0-321-14653-0
  • Refactoring: Improving the Design of Existing Code, Martin Fowler, Addison Wesley, ISBN: 0-201-48567-2
  • Thinking in Java, Bruce Eckel, Prentice Hall, ISBN: 0-13-187248-6
  • Surviving Object-Oriented Projects, Alistair Cockburn, Addison Wesley, ISBN: 0-201-49834-0
  • The Pragmatic Programmer, Andrew Hunt and David Thomas, Addison Wesley, ISBN: 0-201-61622-X


  • Midterm: 25%
  • Final: 30%
  • Homeworks: 15%
  • Project: 30%

Everything you have to turn in must be posted on the Blackboard before midnight (Central time) the day the work is due.

For late submittal there is a 10% per calendar day penalty.

Unless stated otherwise in the assignment, all the work you submit must be individual.

Academic dishonesty will not be tolerated. You can find the academic honesty policy in the Student Handbook which can be downloaded here. You should read it until you fully understand the detail and are able to explain it to others.

Exams are open-book(s) open-notes and comprehensive.

The following grading scale will be used to determine your grade in this class:

  • A: 90 - 100
  • B: 80 - 89
  • C: 70 - 79
  • D: 60 - 69
  • E: 0 - 59 This is a failing grade!

To pass this class you will need to have a passing mark (60+) in each of the following:

  • Homeworks average
  • Project
  • Final

Of course, the overall average must be 60+ as well.

Please read this again since it is not your normal grading policy. Come grading day it won't matter that your overall average is above 60 if you have missing assignments or you failed to get at least 60 in your final, etc.

Class attendance and participation will help settle the borderline grades. Regular class attendance is important and students are expected to actively participate in class: questions and comments are always welcome.

Programming Language(s)

For any of the assignments in this class, including the project, please feel free to use any free or open-source (FOSS) mainstream object-oriented programming language and libraries you want such as Java, Ruby, Python, PHP, or C++.

You may even use Smalltalk if you want to, however this will make testing somewhat more difficult for us. Before you start, please check with your instructor to make sure he's ok with it.

Work done using proprietary OO programming languages, such as C# or VB.Net, as well as the linking of free and open-source sofware with proprietary 3rd party libraries will not be accepted.

To learn more about free software check out the Free Software Foundation.

You should also know that free software is not the same thing as open-source software, this article from the GNU foundation clarifies the matter for you.

Test Environment

All programming work you do for this class will be tested on our computer running a fresh instalation of Ubuntu 8.10. I'm sorry, but the fact that your code runs on your computer and not on ours is not enough to earn you credit for your work.

We'd love to accomodate you with other test environments, however this is a big class and the TA is already overworked.

Let me repeat, we're not going to test under any version of Windows, nor are we going to do it under and other Unix variant other than the one described above.

If your application requires things (e.g. libraries, plug-ins, gems, etc.) that dont's come with the standard distribution, then you should tell us, in the README file you provide with your other deliverables, how to install required dependencies.

Unit Testing

Creating unit tests for all your code is a key element of this class.

You cannot possibly get full credit for your work unless each and every method in your classes has good unit-testing. By good I mean meaningful and sufficient. A unit-test that asserts true is not meaningful. Providing only one unit-test for a method that requires multiple tests is not sufficient.

You will be required to measure and include with your deliverables the unit test coverage as measured by the tool of choice in your chosen programming language, e.g. jCoverage for Java, Rcov for Ruby, etc.

As a general rule, test coverage that's less than 80% is unacceptable.

Extra Credit

There are multiple ways you can receive extra credit in this class, here are some:

  • Take class notes: scan them and return them to your instructor after each class in PDF format. If you take notes electronically, then turn in to your instructor a copy of your notes, .txt, .odf, .doc, .pdf formats ok.
    • Maximum extra credit: 4 points that will be added to the average class score (scale from one to 100)
    • If you want to get this extra credit, then you'll have to commit to turning in notes for each class.
    • In addition, your instructor will have to confirm upfront that you are eligible for this extra credit since only one student in class can get it.
  • Recommend problems to be included in the midterm or final. You'll get credit for submitting a good problem. Your submission should be original and non-trivial.
    • Extra credit: 2 points per accepted recommendation. All points you earn for your recommendations will be added to your average class score (scale from one to 100).
    • The credit will be doubled for each problem that's included in the exam.
  • Turn in (attach to your final exam) the paper for extra credit on topics assigned in class by your instructor. This assignment can boost your final exam mark by up to 10%.
  • Do the extra work available for the project.


Please be descriptive in the subject line when you email your instructor such that processing doesn't get delayed. At the very minimum you should indicate the class and the term, followed by a brief description of what is it that you want to communicate.

Examples of good subject lines for your email:

  • cs445, Spring 2009 - Clarification about Hw1
  • cs445, Spring 2009 - When will the grades be posted on the Blackboard?
  • cs445, Spring 2009 - Question about project acceptance criteria

Assignment Submission

You are required to submit your work online, using the Blackboard. Late work will be accepted, however it is subject to the late penalties described in this syllabus.

Here are the requirements:


The purpose of the project is to give you the opportunity to practice the concepts discussed in this class. The requirements are purposely somewhat vague such that you can interact with the client (that's your instructor) to figure out the detailed requirements.

In addition to various deliverables you have to produce throughout the semester and a working product on the due date of the project, you are expected to develop a lot of unit tests as you work on this project.

Class Schedule

Date Lecture Assignment Due
1/26/09 Introduction  
2/2/09 The OO paradigm  
2/9/09 UML basics HW-1
2/16/09 OOD methodology Project: use cases
2/23/09 Designing with objects  
3/2/09 Interfaces, Polymorphism and Inheritance HW-2
3/9/09 Midterm exam  
3/16/09 Spring Vacation: no class Mid-term project status
3/23/09 Guest speaker: (prototypal inheritance in) Javascript  
3/30/09 OO principles  
4/6/09 Testing  
4/13/09 Design patterns HW-3
4/20/09 Guest speaker: Multithreading  
4/27/09 Frameworks Project due
5/4/09 Objects and portable data (XML)  
5/11/09 Final exam  

Your instructor reserves the right to change this schedule.

Important Events

Event Sections 1, 2, 3
Last day to change/add/drop a class and receive full tuition refund 2/3/09
Last day to remove incomplete grades 2/27/09
Midterm 3/9/09
Spring break (no classes) 3/16/09 - 3/21/09
Last day for official withdrawal 4/3/09
Last day of classes 5/9/09
Final 5/11/08, 7:30pm to 9:30pm, SB-238

For more important dates and detail go to the IIT site.


Unless otherwise stated all papers you turn in will be TYPED. No handwritten work is accepted.

Submit your work as a PDF document. This is the only acceptable format.

Each page will have a header as follows:

  • The left side: your name
  • Middle: page number and the total number of pages (ex. 2/5 indicates this is page 2 out of a total of 5)
  • Right hand side: name of the assignment (ex. Homework #2)

Each page will also have a footer:

  • the left hand side will contain the following text: cs445-section: Spring 2009 where section stands for the section you are in
  • the right hand side will contain the following text: Illinois Institute of Technology - Computer Science

Last update: Apr 16, 2009 Virgil Bistriceanu cs445 Computer Science

$Id: syllabus.html,v 1.15 2009/04/16 15:18:55 virgil Exp $