CS2022: Introduction to C

Fall 2011



This course provides a brief introduction to the C programming language and standard libraries for students with programming experience at the CS1110 level. We will cover basic syntax, programming paradigm, standard libraries, and debugging for C on the GNU/Linux platform.


Assignments & Grading

The homework assignments will be released and submitted through the Course Management System.

As this is a S/U course, to complete it successfully you need a "pass" on all of the homework assignments on C programming.  This course follows the Cornell University Code of Academic Integrity. Each student in this course is expected to abide by the Cornell University Code of Academic Integrity. You should not discuss solutions to the assignments with your classmates.  This not only implies that you should have written them but also that you should understand them! You are free to consult books and online resources, but you will have to properly cite them. If there is enough interest, a more elaborate "final" project might be an option for completing the class, provided that it covers all features in the homeworks.

Development Environment

The class will use Linux as an environment for development and testing. Programs will be compiled with gcc and debugging will be done with gdb. You can do the homeworks on other platforms, but testing will be done on Linux and thus it is recommended to try to use Linux.


Syllabus and Lecture Slides

  1. General Introduction
  2. Basic Syntax, Hello World
  3. Pointers
  4. Memory Model
  5. Arrays & Strings
  6. Enums, Strucs, Unions, Function Pointers, and typedef
  7. A basic tutorial on using the Linux command-line shell. No slides used in class.
  8. Debugging using GDB
  9. File & Network IO
  10. The Preprocessor
  11. Serialization & Bitwise Operations
  12. Threads
  13. Goto, Exceptions, and Assembly in C
  14. Course Recap