Ancient CS 61 Content Warning!!!!!1!!!
This is not the current version of the class.
This site was automatically translated from a wiki. The translation may have introduced mistakes (and the content might have been wrong to begin with).

Virtual Machine

For this course, we will be using virtual machines (namely the CS50 appliance) for working on and submitting problem sets. Thanks to CS50 and CS51 for the content below.

Install your VM

If you have a Mac and are a current Harvard student, and you do not currently have VMware Fusion installed on your computer, please email the staff. Wait for a reply, and then follow the instructions below to obtain a VMap account and install VMware Fusion. Alternatively, you may install VirtualBox instead of VMware Fusion. However, VMware Fusion has significantly fewer issues with the appliance than VirtualBox, so we recommend filling out the form for VMware Fusion.

Follow the instructions here to install the CS50 appliance on your machine.

Update your appliance

  1. Open the terminal emulator (the shortcut is in the lower left corner, next to the Google Chrome icon).
  2. Type the following command and hit Enter. This may take a few minutes to complete.
     sudo yum -y update appliance50
  1. You may be prompted to approve the installation. If so, type y and hit Enter. If not, skip this step.
  2. Wait for installation complete, and that's it!

Install tools

Run the following command to download install miscellaneous tools we will be using throughout the course:

 sudo yum install gcc-c++ kcachegrind perf strace bochs qemu

When prompted, type y and hit Enter to approve the tool installations, and then you're ready to hack!

Version control with code.seas.harvard.edu

We will be using git with code.seas.harvard.edu for turning in problem set submissions as well as version control.

What is git?

Git was originally developed by Linus Torvalds for development of the Linux kernel. Git is a distributed version control system. Centralized version control software typically supports a single, remote repository from which all users "checkout" files. All changes must be sent to the repository to be tracked and shared. A distributed version control system supports many local repositories which each track changes and can synchronize with each other in a peer-to-peer fashion.

For information on how to use git, see our git notes or the resources page.

What is code.seas?

Code.seas is an online git repository and project management website for SEAS. We’ll be using it for collecting psets via git.

Signing up for code.seas

The following only needs to be done once. You may skip steps 1-3 if you already have a working code.seas account.

Code.seas Troubleshooting

If you are having any trouble with your keys (eg, you cannot clone a repo because "the connection timed out"), check if your firewall is blocking port 22, and open port 22 if it is blocked. You can use your favorite search engine to figure out how to do this.

If you are having any trouble logging in, please follow these steps:

  1. Quit your browser -- (flush cookies).
  2. Try to login to code.seas with your FAS account.
  3. If that fails, you may need to change your FAS password and repeat steps 1 and 2.
  4. If that fails, email Academic Computing at achelp@seas.harvard.edu and let them know your FAS account name. They will set up for you a local account.

Obtaining and submitting problem sets

We will be distributing and collecting problem sets using git and code.seas.harvard.edu.

Obtaining problem sets

Getting the problem set repo

The following only needs to be done once:

First, you'll need to clone the psets repo on code.seas:

Next, you'll need to get a local copy of the repo on your machine:

     git config --global user.name "FIRST_NAME LAST_NAME"
     git config --global user.email "YOUR_@COLLEGE_EMAIL"
     git clone REPO_URL

where REPO_URL is the "Clone & push url" from step 4.

Obtaining future problem sets

The following should be done every time a new pset is released/updated:

This will download the latest pset directory into your repo.

Submitting problem sets

It's really easy: just run git push origin master from your "username-cs61-psets" directory, and that's it!