An Intro to the Scenic (or C/*nix) Seminar


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.

Key C/*nix Principles

Some principles that many C/*nix programmers follow. (We will expand upon these as the seminar continues.)

To achieve the first goal, you should

Some of SamR's Principles

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.

Detour: A C Problem

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 bar, the program ran through to completion. He had no calls to free in bar. What is likely to be wrong with his code?

Some Simple *nix Tasks

Important *nix Tools

C Concepts

Looking Ahead

Disclaimer: 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 Outlines/intro.html.

Samuel A. Rebelsky,