Note: Time markers are meant as a general guideline for how far the
average incoming graduate should be, but experience levels here are
expected to be wildly varied. Feel free to work faster if you know
this material, or spend more time working on things that you haven't
seen before, but try to help others that have less experience if you
are bored. As an academic, one of your priorities is education: begin
with those around you. (If nobody needs help, and you know all of
this already, go learn Python or
Ruby. If you already know
those, figure out a way to make Perl
One of your major duties as a TA will be to try to get students to use
the debugger. Under Linux, the standard debugger is gdb. To
compile C or C++ programs with debugging information, add the "-g"
flag to your compilation options. (Thus, the preferred compilation
options to write clean, ANSI standard, debuggable code are "-W -Wall
-Werror -pedantic -g").
For this hour, practice using the debugger.
If you have never used a debugger before, please skim through our standard introduction to gdb, which can be found here.
If you have some experience using the debugger, try to debug this (more challenging) program.
If you aren't interested in the above, or you finish it quickly,
please try your hand at creating buggy programs that are hard to debug
without the debugger. We are always trying to get undergrads to
understand the usefulness of the debugger, so an archive of problems
like this is a very handy thing to have for our Software Engineering
We will be covering usage of our home-grown auto-grader framework.
The grader is still in "Beta", so if there are features that don't
work, things you feel are missing, or you find anything to be terribly
confusing, please send email to Titus (firstname.lastname@example.org) to
have your issues addressed.
We will be grading the Towers of Hanoi assignments that were submitted
from yesterday. You can download the archive of these assignments here. Unzip this using the command
tar xfz graderproject.tgz
We will demonstrate how to use the grader at around 2pm. When we are
finished, please try to "grade" those assignments according to the
- 15 points - Compiles cleanly (no warnings, with warnings enabled:
-W -Wall -Werror -pedantic). 5 points if it compiles, but not
- 20 points each - We have 3 test cases in the
OrientationProject directory: 2 from yesterday and 1 that tests the
error checking conditions. For each test case that is passed, 20 points. For each test case that is "close", 5 points. (You may determine what you feel is "close").
- 25 points - Style. Unfortunately, most style issues cannot be
automatically checked. Only one can: line wraps. You can see the
list of style guidelines that is prevalent in the lower-division
Part of our drive toward total archival of student information is that
we store grades in a standard fashion. One of the nice things about
the auto-grader system is that it allows us to do just that in
conjunction with Gnumeric, the powerful GNU spreadsheet tool.
Experiment with exporting information into Gnumeric from the grader.
You will certainly want to change the "Assignment Name" field under
"Options->Configure" within the grader.
Intro to Linux / RedHat / The CS Cluster
- Nautilus -
Like Windows Explorer, only more functional. Some people use
Nautilus extensively, some purists hate it with a passion. You
should experiment with it for a few minutes at least before you make
a decision. (Type "nautilus" on the command line.)
- OpenOffice - A set of
programs similar in look and feel to MS Office, although with
limited compatibility for advanced features (Generally quite
functional). Look at OpenOffice Writer (a word processor) and
Impress (a presentation package). If you don't like the OpenOffice
suite for any reason, AbiWord is a reasonable replacement word
processor (much faster response time / startup, but fewer advanced
features). (Look under the RedHat menu for links to these, or type
"oowriter" or "ooimpress" on the command line)
- Gnumeric -
A spreadsheet. Generally more powerful than OpenOffice Calc, and
with a very simple native format (GZipped XML), Gnumeric is heavily
used by our grading scripts. TAs should play with Gnumeric
extensively. (Type "gnumeric" on the command line)
- Mozilla - The Open Source
basis for Netscape 7.x and countless Linux/Unix derivatives (like Galeon, my personal
favorite). A very good browser. Can support Flash, embedded movies
(QuickTime, MPEG, and even many Windows Media formats), ask me later
if you're interested. (Type "mozilla" on the command line, or click
the launcher that looks like the planet Earth.)
Mozilla also includes Mozilla Mail / Thunderbird, a modern GUI
mail-reading client. This is fairly cross-platform, so it is a good
choice for a mail-client. If you have time, try setting up your
mail client (the department FAQ on mail is here.
Mozilla Mail is considered to be the standard mail client for the CS
- Evolution - A
wonderful GUI email client. Users of Outlook Express will have no
problem adjusting, unless you really enjoy automatically running
every piece of malware on the Internet. (Evolution has much
better security.) Supports POP3 and IMAP, although IMAP is a bit
touchy if you really push it hard (for example, 30+ mailboxes with
100+MB of mail makes it cranky. (Type "evolution" on the command
line, or click the launcher that looks like an envelope.)
Adobe makes a version of Acrobat Reader, although there are numerous
other PDF viewers available (xpdf, and ggv just to name two.) (Type
"acroread" followed by the name of your PDF to invoke.)
Command Line Stuff Note: If you have
had NO Linux/UNIX experience before, you probably need to read through
the introductory material that we have created for the undergrads for
their introduction to Linux. Read through that material here
A decent UNIX command reference can be found here. This is probably
The basic tools that you will probably be using are these:
- gcc - The GNU Compiler Collection. Has compilers for many
languages, but is generally only used for C (on the command line as
"gcc") and C++ ("g++"). If you've never written anything in C++
before, work through some of the labs and assignments from CS 12 when you
get a chance, that should bring you up to speed quickly.
- gdb - The GNU Debugger. A powerful beast. Remember folks, USE
THE DEBUGGER. A brief tutorial is here
We will cover this in greater detail tomorrow.
- java/javac - A command-line java tool. The compiler is invoked as
Compiled class files are executed in the Java runtime as
(The department generally doesn't focus on Java a lot, but several
research projects are being done in Java here, so it doesn't hurt to
- Turnin - Our home-grown system for turning in homework,
you'll probably be exposed to Turnin in one way or another during
your first quarter here. Turnin can be found on the Secure Server
- Your Mission - Before you leave today, you and your
partner should implement this in C++. Turn
in your work on Turnin under CS 14, OrientationProject.