Course information

Important links

Book

The textbook for this class is Dive Into Systems, a freely available online textbook by Suzanne Matthews, Tia Newhall, and Kevin Webb.

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 any 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 (30%), two exams (25% each for in-class exams during weeks 5 and 9), in-class labs (10%), and in-class quizzes (10%).

Homework

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 channels once per day to make sure you have the most timely information about the course.

Collaboration

Working with your classmates is almost always 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 (unless otherwise directed), you will submit your work individually. Though you may discuss your work with classmates, you need to write your own code, your own analysis, your own documentation, etc.

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

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.

What about LLMs?

Educators at all levels and in all disciplines are experimenting to try to figure out the long-term implications of large language models like ChatGPT, Claude, Gemini, Llama, etc. In computer science, we're also thinking about code generation tools like Cursor, Claude Code, Codex, Copilot, Windsurf, etc.

This term, let's look for and talk with each other about opportunities to use the LLMs to help us learn and do our work effectively. I want you learning, and if LLMs can help that to happen, I want us to collaborate to figure out how and share our ideas.

For this class, you may use LLMs as you see fit, but if you use LLMs to generate anything you submit as homework, I want you to tell me about it. If any of your submitted work includes any LLM output (verbatim or paraphrased), I require you to include a file called LLM.txt (or LLM-name-of-assignment.txt) (or .md, .docx, .pdf,...) with your submission. Your LLM.* file should consist of a sequence of sections, each of which describes a portion of your submission that came from LLM output. Each such section should include:

In the previous section, I said "to get points for an assignment, you need to write most of the code yourself". This statement also applies if you're getting help from an LLM.

One more thing: I'd love to see you share your stories of AI successes, failures, or madcap adventures. I have created a channel named #ai in our Slack workspace for this purpose.

Questions about this policy or specific situations?—bring it up in #questions on Slack, raise it in class, or talk to me in office hours.

Rough Schedule