Computer Systems Organization (CSCI-UA-0201.001/002)
Instrument your programs. Measure before making "efficiency" changes.
Spring 2014 -- Section 1 (Honors) and Section 2
Professor: Andrew Case
- The Elements of Programming Style (Kernighan & Plaugher)
General .:. Schedule .:. Assignments .:. Resources .:. Help
- Computer Systems -- A programmer's perspective, 2nd ed. Randal Bryant and David O'Hallaron. Available for purchase from NYU bookstore.
Optional Text (but strongly recommended):
- The C programming language, 2nd ed. Brian W. Kernighan, Dennis M. Ritchie (On permanent reserve at Courant library)
Our lab assignment environment is based on Linux (a UNIX like operating system). If you have never used a UNIX machine before, there are many sources online to help you get started.
Man up - If you need help with a particular UNIX command, you can use the manual pages that are built into all UNIX distributions. From the command-line, simplty type:
man [command name]. For example, '
ls' is the command to list the contents of a directory, '
man ls' will describe the many command line options that '
UNIX Text Editors
You'll be editing text files on Linux. The two most common editors used by developers are "emacs" and "vim". Both can be intimidating to new users. You may find the "nano" editor easier to use.
In addition to using Linux from the command line, you'll be writing C programs that use built-in library functions. These are documented in Chapter 3 of the man pages. You can view these on your Linux machine by via man, e.g.: man 3 strcmp describes the strcmp library function.
The debugger gdb is indispensible when it comes to debugging your C (or C++) programs. Skim through the gdb tutorial. Here are two handy gdb cheat sheets, one for IA32 (txt, pdf), one for x86-64 (txt,pdf).
© 2010-2014 Andrew I. Case