Course information

Book

The textbook for this class is Computer Systems: A Programmer's Perspective, 3rd edition by Randal E. Bryant and David R. O'Hallaron.

You may also find this book helpful: The C Programming Language, 2nd edition by Brian Kernighan and Dennis Ritchie. This book, often known as "K & R" after its authors, has been the essential reference and tutorial for C since 1978, and remains one of the cleanest and best introductions to a programming language ever written. I'm not requiring it for the course, since there are many C resources online and I like to keep the cost of textbooks down, but still, this is a great book that would be worth your time to read.

Grading

Your grade in the course will be determined by your performance on homework and quizzes (60%) and two exams (20% each).

Homework

You will hand in your homework via Moodle. The specifics of what to hand in will be included with each assignment.

Each homework assignment will be given a due date and time. Work handed in after the due time but within 24 hours will be docked 50%. After that, no credit.

The goals of this late-homework policy are: to give you a push to do the work in a timely way to support your learning, to provide a framework of fairness, and to enable the graders to do their work reasonably efficiently. If you have a special circumstance and check with me ahead of time, I may be willing to extend the due date for you. And of course, emergencies of various sorts can also result in extensions. Just talk to me if you need help.

One last note: takehome exams (if any) are due by the due time, and late submissions will receive no credit except in very unusual circumstances.

Communication

Outside class time, I will communicate with you via the course website and our Slack workspace. I will send you the Slack invitation before the start of the term. You should plan to check the Slack #announcements and #questions channel once per day to make sure you have the most timely information about the course.

Collaboration

Working with your classmates is usually a great thing. Sharing insights is fun and can enhance everybody's learning. The main danger of collaborating on course work is in allowing your collaborator to do all the work, and thus all the learning.

For homework assignments, you may create your write-ups alone or with one classmate. If you work with a partner, you should submit one copy of your work with both names listed in your submission. If you would like me to assign you a partner for any given assignment, let me know via Slack direct message and I'll do my best to connect you with somebody.

For takehome exams, you must work alone, using only the resources I explicitly allow.

If you have any doubts about what constitutes acceptable collaboration, let me know.

Working with a partner? Here's a little advice.

Academic integrity and using other people's code

This is a big topic, so I have a generic page specifically about using other people's code in CS classes. Please read it.

With that in mind, here are a few specifics about my expectations when you're programming for CS208.

Rough Schedule