This seminar is an outgrowth of things I observed and was told in CSC 362 2011F. In particular, the students in that course had much less familiarity with Makefiles than I would have liked and they told me that they generally did not use gdb when debugging their programs. I also observed that many of them were less than competent at dealing with memory leaks in their programs.
I do not blame my students for these flaws in their background. Rather, I expect that it's a consequnce of our decision to teach these issues relatively early in their careers and of different faculty opinions on what is important to teach.
A few of the students asked me to spend some additional time teaching the things that I consider important (and that they quickly found were important). But we didn't have class sessions to spare. This seminar is therefore my attempt to address some of the weaknesses that I or the students observed. I hope to offer it every year, and to focus it primarily on more experienced students.
Some principles that many C/*nix programmers follow. (We will expand upon these as the seminar continues.)
To achieve the first goal, you should
Since I'm teaching this seminar, I get to impose some of my own principles on you. Here are three main ones.
We'll look at some details on my views of C programming as the semester progresses.
A friend came to me with the following program.
x = malloc (...); foo (); bar (); free (x);
The program was crashing on the call to
free. If he
removed the call, the program ran through to completion. If he moved
the call to
free before the call to
program ran through to completion. He had no calls to
bar. What is likely to be wrong with
I usually create these pages
on the fly, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.
This document was generated by
Siteweaver on Mon Jan 30 13:00:42 2012.
The source to the document was last modified on Mon Jan 30 13:00:38 2012.
This document may be found at