Computer Systems and C Programming


Computer Systems and C Programming is a class intended to bring you up to speed on programming small and large programs in C. Originally written in 1978, C remains the most popular programming language, and the most used one in terms of numbers of computer programs written in it. There are no prerequisites, but you are expected to be at least somewhat familiar with programming and computers. In this class, we are going to approach C from an embedded paradigm, and all of your programming assignments are going to be on a 16-bit embedded micro, the MicroChip PIC24 (or dsPIC33). You will learn how to program in C, how to write modular code, and some of the tips and tricks when dealing with an embedded micro. This is a programming class and you will be writing lots of code. Expect to spend at least 15-20 hours outside of class playing with the code to get things to work.



I would like to acknowledge Cyrus Bazeghi, for all his help with the course material, organization, and lecture material. Steve Summit, who taught an Introductory and Intermediate Programming class at the Experimental College at the University of Washington in Seattle, WA, has generously allowed us to use his notes on K&R and other supplementary materials. Microchip Corp. has generously provided slides and software through their academic partner program, and many of the slides come from Henry Cheng at UC Davis.


General Class Handouts


Class Links


  • [K&R]: The C Programming Language, 2nd Edition, Kernighan and Ritchie, Prentice-Hall, 1988, ISBN-10: 0131103628
  • [Fly24]: Programming 16-Bit PIC Microcontrollers in C: Learning to Fly the PIC24, by Lucio Di Jasio, Newnes Press, 2007, ISBN: 9780750682923 (Optional)
  • [Gonick]: The Cartoon Guide to Computer Science, by Larry Gonick, Barnes and Noble Books, 1983. Out of print, but it is available on the class website in three parts here.

Instructors and Assistants