Computer Systems Organization (CSCI-UA-0201.001/002)
Don't sacrifice clarity for small gains in "efficiency".
Spring 2014 -- Section 1 (Honors) and Section 2
Professor: Andrew Case
- The Elements of Programming Style (Kernighan & Plaugher)
General .:. Schedule .:. Assignments .:. Resources .:. Help
Cooperation, Acknowledgements, Cheating, and Academic Integrity
All students should submit their own work. Open discussion about topics is strongly encouraged (with associated class forums, mailing lists, tutors, fellow students, and the instructor). HOWERVER, THE WORK SUBMITTED SHOULD BE YOUR OWN. If you base your work on an idea from a source other than yourself, you are required to reference that source in your program comments. If you're not sure if it's acceptable or not, please ask your instructor! Cheating (submitting work that is not your own) can result in an automatic failing of the course. Here are examples of proper discussion, improper discussion, and acknowledgements. In addition, please see the statement of academic integrity, that all students must abide by.
It is not considered cheating to clarify vague points in the assignments or textbook, or to give help or receive help in using the Linux system, compilers, debuggers, profilers, or other facilities.
Late policy: Each student will automatically receive 5 grace late days for the entire semester. However, one should not submit any specific lab more than 3 days late.
Unless otherwise stated, submit all hw assignments via NYU Classes (accessible through NYU Home.)
The TAs will be holding tutorials for each of the assigned labs. Please find above the dates/time/place of each tutorial.
VirtualMachine (VM) lab usage
You must complete all labs on the given virtual machine. If you do not have a personal desktop or laptop on which to install the virtual machine, please contact the TA. To install the virtual machine on your computer, take the following steps.
- Download the Virtualbox virtual machine monitor. Choose the right binary to download according to the type of operating system running on your laptop.
- Download the class virtual machine image CSO-12.04.ova. This file is fairly large (1.3GB), so you need to be patient.
- Install and launch Virtualbox. On the Virtualbox application toolbar, under the Menu item "File", click on "Import appliance...", and choose the previously downloaded CSO-12.04.ova file when prompted.
- Leave the default settings. You do not need to change anything.
- After importing, start the virtual machine named by pressing "START" key and you are done. The login name and password have been given to you in class.
- [Optional] Install the Guest Additions (allows full screen resolution and other features)
- From the VirtualBox VM menu: Select Devices->Insert Guest Additions CD
- Run: sudo /media/VBOXADDITIONS_*/VBoxLinuxAdditions.run
- Reboot the VM and switch to full screen mode!
When grading your labs, we will consider your coding style in addition to code correctness. Please refer the grading criteria for proper coding style.
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