Project 1: Warm-up Project

Important Dates

Due: Monday, 2/01 Tuesday 2/02 by 10pm.


Send questions to (or, of course, visit us in person during office hours!). If the question is about your code, copy all of of your code into your handin directory (details below) and include your login in your email (you are free to modify the contents of your handin directory prior to the due date). Also include all other relevant information, such as cutting and pasting what you typed and the results from the screen. In general, the more information you give, the more we can help.


There are two parts to this project:

  • Sorting: to be done on the lab machines (macaroni-*, adelie-*, galapagos-*, king-*), so you can learn more about programming in C on a typical UNIX-based platform (Linux)
  • Kernel Intro: to be done in our xv6 hacking environment, so you can learn more about what actually goes on in a real kernel.

Click on the above links to learn more about what you should do. READ EACH CAREFULLY!


Before beginning: Read this tutorial. It has some useful tips for programming in the C environment.

This project should be done alone. Copying code (from others) is considered cheating. Read this for more info on what is OK and what is not. Please help us all have a good semester by not doing this.

Handing It In

For the C/Linux part of this project (sorting), you should turn in one file, called fastsort.c . We will compile it in the following way:

shell% gcc -O -Wall -o fastsort fastsort.c
so make sure it compiles in such a manner. You should copy this file into your handin directory into the subdirectory called linux .

The handin directory is ~cs537-1/handin/login/p1 where login is your login. For example, Remzi's login is remzi , and thus he would copy his beautiful code into ~cs537-1/handin/remzi/p1 . Copying of these files is accomplished with the cp program, as follows:

shell% cp fastsort.c ~cs537-1/handin/remzi/p1/linux/

For the xv6 part of the project, copy all of your source files (but not .o files, please, or binaries!) into the xv6/ subdirectory of your p1 directory. A simple way to do this is to copy everything into the destination directory, then type make to make sure it builds, and then type make clean to remove unneeded files.

shell% cp -r . ~cs537-1/handin/remzi/p1/xv6
shell% cd ~cs537-1/handin/remzi/p1/xv6
shell% make
shell% make clean

Finally, into your p1 directory, please include a README file. In there, describe what you did a little bit. There is no particular requirement for the length of the README; just get in the habit of writing a little bit about what you did, so that another human could understand it.