cs445 - Spring 2010
Before you get started
This class requires you to do a LOT of work between homeworks (4), reading assignments (a dozen or so), reading the textbooks, a pretty large project, and two exams.
Grading is quite strict as well, in that failure to get a passing grade in, say, the project will you a failing grade in this class. Put it another way, you cannot get around work by skipping assignments and hoping to pass based on a good class average.
I'm not trying to scare you into not taking this class, I just want you know full well what you're getting yourself into.
The following grading scale will be used to determine your grade in this class:
Class participation will help settle borderline grades. While class attendance is not taken, your instructor believes that regular class attendance is important and expects students to actively participate in class. Questions and comments are always welcome.
All work that you turn in must be submitted on the Blackboard before midnight (Central Time) the day the work is due.
I understand that from time to time you'll get overwhelmed with work, or that you may have personal problems that will make you less productive than you'd like. That's why each student in this class has a credit of five (5) days for late work.
You can use this credit as you see fit, for good reason or no reason at all, all at once or in pieces -- though there is no fractional credit. The only thing we ask for is that, in your Blackboard submission (in the COMMENT field) you indicate how much of your credit you want to use.
After you've used your "late work credit", or if you don't want to use it, there is a 5% per calendar day penalty for late work.
Your teacher will try to accomodate you in those cases that are beyond your control, such as medical and personal emergencies, as described below. In any event, you'll be using your "late work credit" first, before any additional accomodations can be made.
Incomplete ("I") Grades
Yes, you can get an incomplete in this class even if you're not dealing with a personal emergency. Here are the conditions:
All the work you submit must be individual, including, but not limited to, those cases when your instructor has approved pair-programming for you; in these cases the only thing that may be identical with somebody else's is code.
Academic dishonesty will not be tolerated. IIT has a strict academic honesty policy; here are the top points:
You can read the entire policy in the Student Handbook (start at page 31). You should read it until you fully understand it. A good way to test whether you understand it is to try to explain it to somebody else.
There are multiple ways you can receive extra credit in this class, here are some:
Exams are open-book(s), open-notes. You may bring with you any notes you want, however you may not share them with anybody else during the exam.
During the exam the use of communication devices such as phones, laptops, etc. is not allowed. You may bring with you a calculator.
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 languages other than specified above, 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(s) running a fresh instalation of Ubuntu 9.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 we won't be able to since 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 any other Unix variant other than the one described above.
If your application requires things (e.g. libraries, plug-ins, gems, etc.) that don't 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.
We're all tired of bad software, whether because it crashes when we least expect it or because of security holes that allow the bad guys to take over our systems and identities. We all pretty much despise software maintenance, in particular when we're asked to modify code that we never touched, don't really understand, and have no way of making sure our changes don't damage existing functionality.
The good news is that we can do something about it. Creating (automated) unit tests for all your code is a very good start.
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:
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 unit testing will account for 50% of your mark in any assignment, of which 3/5 is assigned to unit test coverage, and the other 2/5 will be awarded by the TA based on how good your tests are.
If you fail to submit unit testing, then you cannot expect to get more than 50% in the assignment.
Unit test coverage above 80% is required for full credit. Unit test coverage below 50% doesn't earn you any credit. For anything in between, you get one percentage point of credit for each percentage point of unit test coverage. For example, if your test coverage is 73%, then the most credit you can get for unit testing is 30-(80-73)=23. In another example, if the unit test coverage is 51%, then the most credit you can get is 30-(80-51)=1.
Unit tests that are useless will be removed and the coverage will be measured again before a mark is assigned for your work.
The other 20 percentage points for unit test coverage will be equally spread between the methods of your code. If you fail to write any unit test for a method, then you lose the corresponding percentage points; the TA will have discretion to give you less than full credit if you haven't written enough unit-tests for a method. For example, if your code has 10 methods across three (3) classes, then you get 20/10=2 percentage points of credit for unit tests written per each method. Another way to look at this is to say that you lose two (2) percentage points for each method that doesn't have any unit test.
The first person you should contact for any questions related to assignments is your TA; in all cases please CC your instructor in your email.
Please be descriptive in the subject line when you email your TA or 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:
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 automated unit tests as you work on this project.
You'll be required to review the project of a peer, comment on it and make critical recommendations for its improvement.
Your instructor reserves the right to change this schedule.
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.
Each page will have a header as follows:
Each page will also have a footer:
$Id: syllabus.html,v 1.8 2010/03/09 03:37:38 virgil Exp $