Thinking in C and *nix (CSC 295/282 2014S) : Handouts
This is an approximate schedule. Expect dates and topics to change. (I will try to keep due dates the same.)
|01||Thursday, 23 January 2014||Introduction About the course. Some principles and practices. Example: C from K and R. Detour: A C memory problem. Exercises: Some simple tasks. Some important *nix tools. Looking ahead.||HW 00: Set up a GitHub account and Learn a bit of git|
|02||Thursday, 30 January 2014||Some Basic Tasks and Corresponding Tools Fun with GitHub. Go over homework. Exercise: The spaces problem. Raymond, chapter 1. Thinking about basic tools.||HW 01: Solve some simple tasks|
|03||Thursday, 6 February 2014||
The Bash Shell - A Refresher
Some things you should know.
Files and directories.
File and directory permissions.
|04||Thursday, 13 February 2014||Decoding Scripts Background. Analysis. Algorithm. Inputs. Implementation.||HW 03|
|05||Thursday, 20 February 2014||Compilation, Macros, and the C Preprocessor A C program ecosystem. Steps in compilation. Including files. Detour: Why we have included files. Macros. CPP cnditionals. Detour: Standard header file format. Command-line flags. Hack: Generic data types.||HW 04|
|06||Thursday, 27 February 2014||Using Macros for Logging Interesting macro examples. Requirements for a debugging/logging system. Implementation details.||HW 05|
|07||Thursday, 6 March 2014||Learning Vi (Optional)||HW 06|
|08||Thursday, 13 March 2014||Vi, Continued||HW 07: Playing with vi settings|
|09||Thursday, 3 April 2014||Automating Work with Make Project ecosystems. An introduction to Make. Example: A standard C project. Good Make practice: Standard targets Example, continued: Adding more targets to our project. Using variables. Example, continued: Improving our Makefile with variables.|
|10||Thursday, 10 April 2014||Improved Make A quick review of Make. Automatic variables. Generic rules. Standard make rules. Another example: Document development. Other useful techniques. Miscellaneous tools and techniques.||HW 08|
|11||Thursday, 17 April 2014||Debugging with GDB Debuggers. gdb, the GNU Debugger. Tracing crashes. Some other operations. Another example.||HW 09|
|12||Thursday, 24 April 2014||
Miscellaneous C Programming Issues
|13||Thursday, 1 May 2014||Variadic Functions Writing C functions that take variable numbers of parameters. C's "varargs" facility. Some examples. Design issues. Variadic macros. Behind the scenes.||HW 11|
|14||Thursday, 8 May 2014||Wrapup What we've learned. Topics for future exploration. Course evaluation. Debriefing.||HW 12|
Copyright (c) 2013-14 Samuel A. Rebelsky.
This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit
or send a letter to Creative Commons, 543 Howard Street, 5th Floor,
San Francisco, California, 94105, USA.