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.
|| Mon, Tue 5:30 pm - 6:15 pm
||Mon 6:25 pm - 9:05 pm, SB-238
- Name: Lin Gan
- Office: SB-006
- Office Hours: Wed 4:00pm-5:00pm, Thu 4:00pm-5:00pm
- Phone: 312-567-5705
- email: firstname.lastname@example.org
- 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
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.
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.
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.
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.
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
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:
- Submit your electronic copy using the Blackboard (attach your assignment as a compressed
archive file (.zip, .tgz, .tbz2, .rar)
- The name of the compressed archive should be: fistName-lastName-type-assignmentNumber.zip
where type stands for any of the following, HW for homeworks, PA for programming assignment, PR for project.
For example Jane-Doe-HW-1.zip or John-Smith-PR-3.bz2
- Your actual work for the assignnment (remember, it's got to be a PDF document, that follows the guidelines
in the Varia section this document).
- A memo (PDF) to your instructor that outlines what you found to be the most difficult part of the assignment, and some
important statistics about your code (if in fact you have to turn in any code), as follows:
- Lines of code; do not include comments and white spaces. Also, do not include here the unit tests. If you're going
for extra credit, then please break out the core project from the code that's been specifically written for the
- Lines of code in unit tests; do not include comments and white spaces. Same comment as above for extra credit.
- Unit test coverage as measured by the tool of choice in your chosen programming language, e.g. jCoverage for Java,
Rcov for Ruby, etc.
- Cyclomatic complexity for your code. Please don't submit code with cyclomatic complexity higher than 20.
- The source code
- A README file that explains how to build and on how to run each program
- A script that will compile your programs when executed; a Makefile (see GNU Make for details) would be
great, however any form of script or building tool will do
- Include your e-mail address in the Comment field when submitting the assignment through the Digital Drop Box
- If for any reason you are submitting the assignment more than once, indicate this in the
Comment field by including the word COMPLEMENT
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
||The OO paradigm
||Project: use cases
||Designing with objects
||Interfaces, Polymorphism and Inheritance
||Spring Vacation: no class
||Mid-term project status
||Guest speaker: Multithreading
||Objects and portable data (XML)
Your instructor reserves the right to change this schedule.
||Sections 1, 2, 3
|Last day to change/add/drop a class and receive full tuition refund
|Last day to remove incomplete grades
|Spring break (no classes)
|| 3/16/09 - 3/21/09
|Last day for official withdrawal
|Last day of classes
|| 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
$Id: syllabus.html,v 1.15 2009/04/16 15:18:55 virgil Exp $