CS197C Course Homepage S2017

This course is intended to be a hands-on introduction to the C programming language and will teach related low-level systems concepts. Since it only runs for 6 weeks, the course is very fast paced, and a high level of programming maturity is required. CS197C covers introductory C and draws on concepts from CS121 and CS187.

All of the assignments in the course can be completed using only the information in the slides. I encourage you to ask questions in class or if preferred, by email. The point of this class is for you to learn, not for me to lecture, I am always glad to stop and explain a vexing concept.

Each lecture will last for about 30 minutes. The remainder of the time will be open for students to begin work on their weekly worksheet and their weekly project.

Office hours are by appointment only. I work in a shared space so it is imperative that you schedule visits ahead of time.

Grading Policy


5 pts.
= 25 pts.
assignments (effort)
5 pts.
= 25 pts.
assignments (functionality)
10 pts.
= 50 pts.

= 100 pts.

Note that you are graded out of 100, and that 65 is passing.


Week 1 2/1slidesnotes

introduction, administraction, working remotely, basic unix terminal, C functions, types

Week 2 2/8slidesnotes

compilation process, the preprocessor, headers, file io, basic compiler

Week 3 2/15slidesnotes

memory, c strings, arrays, double arrays, arrays of c - strings

Week 4 2/22slidesnotes

segmentation, passing by reference, malloc/free, pointers, function pointers

Week 5 3/1slidesnotes

enums, unions, structs, class-like structs

Week 6 3/8slidesnotes

Function prototypes, creating header files, makefiles

Lecture Videos are available on echo360 and for download.