This is the home page for the C track of CS 11. This information is for the Winter 2024 term.

Administrative information

Go to this page for all the administrative information pertaining to this track.

Getting set up

This page has instructions on how to set up the course software.

Lectures

Assignments

  • Lab 1 (due Tuesday, January 16th, 2 AM)

  • Lab 2 (due Tuesday, January 23th, 2 AM)

  • Lab 3 (due Tuesday, January 30th, 2 AM)

  • Lab 4 (due Tuesday, Febuary 6th, 2 AM)

  • Lab 5 (due Tuesday, Febuary 13th, 2 AM)

  • Lab 6 (due Tuesday, Febuary 20th, 2 AM)

  • Lab 7 (due Tuesday, Febuary 27th, 2 AM)

  • Lab 8 (due Tuesday, March 5th, 2 AM)

Grades

We will be using CodePost for grading homeworks. Assignments will be submitted there and TAs will upload them, grade them and submit their comments.

Discussions

We have a Piazza page for this course. Course-related announcements and discussions will happen on that page.

  • The C style guide. This tells you how we want you to format your C code.

  • An introduction to the make program and Makefiles, which are extremely useful for multi-file projects.

  • A brief introduction to the gdb debugger.

  • A discussion on how to handle command-line arguments in your C programs.

  • If you need a Unix refresher, this site is pretty good.

Textbook and References

All of these references are optional, but they may be useful to deepen your understanding of the C language.

  • Peter A. Darnell, Philip E. Margolis, C: A Software Engineering Approach, 2nd Ed.

    This is a comprehensive introduction to the C language which is fairly old but quite readable.

  • Kernighan and Ritchie, The C Programming Language, 2nd Ed.

    This book, known familiarly as "K&R", is a concise complete, and fairly readable description of the C language. This will be the reference textbook for the track. It’s not easy reading for people with no programming experience, but the entire C language is described in it, so if you want to know about some fine point, this is the place to go.

  • Peter van der Linden, Expert C Programming: Deep C Secrets

    This book, despite having lots of pretty glaring typos, is one of the few books that explains what is going on at the machine level during compilation and execution of a C program. It has much more information than beginners require, but more advanced programmers should read it.

  • Jens Gustedt, Modern C

    A new book which covers the C language in detail, including the newest language features.

  • The development of the C language

    The interesting history of how C came to be, by the late Dennis Ritchie, one of the authors (the R) of K&R.