PrerequisitesCSEE W3827 (Fundamentals of Computer Systems) and knowledge of C and programming tools as covered in W3157 (Advanced Programming) or W3101 (Programming Languages). Note well: knowledge of C++ is not an adequate substitute.
If you have complaints about grading of any homework or exam question, please discuss it first with the TA, within two weeks of when the grade is assigned. If you're still not satisfied, forward all relevant email to me.
You're welcome to use any development environment you want, but all programming assignments must run on the CLIC machines. Programs that don't compile or kernels that do not boot under VMware will receive zero credit.
In order to use the CLIC machines, you need a CS account. You are responsible for obtaining this account. Please obtain it immediately, since you probably cannot do the programming assignments without an account.
Homeworks will consist of written answers and programming problems. All assigments must be submitted electronically; the exact mechanism will be announced shortly.
Homeworks serve three purposes: practice in the material covered in class, ensuring that you've learned material covered in class, and pedagogical. That is, you're expected to learn from the homework assignments. In particular, this means that not every last detail will be spelled out. You're expected to use sound judgment in making any necessary decisions. In general, the more central to the purpose of the assignment a decision is, the more critical it is.
All homeworks are due at the start of class. Homeworks received later that day lose 5%, the next day 10%, two days late 20%, three days late 30%; after that, zero credit. You need a really good reason to get an extension, backed up (if appropriate).
A number of the homework assignments will involve reading and modifying the Linux kernel. As such, knowledge of C -- not C++ -- is required.
Assignments are here.
I expect students to observe the highest standards of academic honesty. The penalty for a first offense is a zero grade on the affected assignment and/or reduction in course grade; in addition, I will report the offense to the Academic Committee and to the Dean's office. There will be no warnings and no second chances.
Discussing lectures, assignments, algorithms, and the like is permitted and encouraged. Turning in someone else's answers or code is strictly prohibited, whether the source is someone else in the class or something you found on the Internet.
The CS department has its own academic honesty policy. You are responsible for reading, understanding, and following it.
Working in GroupsThe programming part of most homework assignments will be done in groups of three people. You are encouraged to form your own groups; I'll fill in the blanks as needed. In general, I'll be grouping CVN students together, and separating graduate students from undergraduates. I'll probably rearrange the groups during the semester, grouping together students who do not contribute appropriately.