I assume that everyone in the class has reasonably strong programming skills and that you are comfortable using the basic tools of the trade (debuggers, makefiles, etc.) Here are some references if you need to brush up on any of these basic skills.
The classic book on C:
Other references
Gitk is a good graphical Git repository browser that already installed on the UTCS machines.
A good overview of Git, how it works, and how to use it.
A good reference site that includes brief descriptions on the more common git commands.
Another good reference site that indexes by use cases instead of Git command
A brief description of most, if not all, of the Git commands, organized by use cases. This is a good place to consult when you get used to using Git.
(Thanks to Eddie Kohler and MIT's 6.828 course staff for the links and commentary below.)
A clear description of x86 assembly language and assembly
language in general, including some stuff you ideally know already.
You might prefer to read this on line, rather than print it out; it's a
quick read. Warning: This book uses "Intel" assembly syntax, in
which instructions are written "instr dst, src"; where
"AT&T" assembly syntax would use "instr src,
dst".
A short and sweet description of how to use inline assembly instructions with GCC. Includes a description of the "AT&T" assembly syntax used by GCC.
Much shorter than the current Intel Architecture manuals,
but describes most of the processor features we'll use. The original was
a flat text file that used the PC Line Drawing characters for
diagrams; this, and many other versions, are available on the
net. JOS uses the following 486-and-later features, which you
can read about in the IA-32 manuals: The
%cr0 register's WP bit (Volume 3).
The latest and longest documents from Intel.
Covers both the "classic" 32-bit x86 architecture and the new 64-bit extensions supported by the latest AMD and Intel processors.