Development Guide

Learning Objectives

The learning objectives for Development Guide are:

  • Using the tools needed for CS 341

Development in CS 341 #

In this course, we use Virtual Machines (VMs) for all our developmment. We will not support development in any other enviornment (e.g. EWS). We would like to stress that no matter what method you use to develop code for CS 341, test all your final code on your VM. The autograding environment is similar to your VM. Thus even though your code “works” on your machine, it may not work on the VMs and thus for the autograder.

For all registered students in the course, you will receive a VM in the CS Department’s VM Farm provisioned by EngrIT. When your VM is provisioned you should receive an email about your VM. If you registered late, please email the CS 341 Admin (you can find the email on our staff page).

Once you have received your VM, you can connect to your VM via SSH. If you are not on the campus netowkr you will need to install and use the campus VPN.

The VM number will be included in the email you received.

On Linux / Mac, you can do something like

$ ssh <NETID>@sp23-cs341-<NUM>

On Windows, you can use an SSH client like PuTTY.

Note that if you are not connected to on-campus internet, you will need to use a Virtual Private Network (VPN) to connect to your VM. Instructions on downloading and using the UIUC VPN can be found here. An alternative to using the UIUC VPN is to SSH twice. You can first SSH into your EWS account and then into your personal VM. Just remember that this causes potentially double the network lag!

Install compiler and CS341 tools #

Todo: Define the specific clang compiler installation here. Also… install pthread man pages.

sudo apt install

Installing Other Stuff #

This is your VM! You can sudo and install whatever you want on it (given that it is school appropriate and VM Farm policies

You can install vim or emacs. If you’ve ever wanted to become terminal-savvy, this is definitely the course to do it!

If anything is unclear, either post on the course forums or ask your TAs/CAs/fellow students! Be careful about messing up your VM. If your VM ever gets into an unusable state, please make a private post in the course forums with your VM number, and we will try to resolve it.

You may find ssh-copy-id useful (A web search using Google/Duck Duck Go is useful). You can also configure MS Code and other GUI editors to work remotely. However some people still use ‘out of the box’ terminal-based editors like vi/vim that you can find (or install) on even the smallest of Linux distributions, and work even on low-bandwidth connections.

Have fun! In the worst case we can reset your VM back to its initial state.

Can’t login? #

If you can’t connect -

  1. Not on the campus network? You will need to use the University VPN, Cisco AnyConnect

  2. Check the status of your VM on the vsphere console and start/restart it if necessary. The VMs are shutdown daily at 5am, or perhaps you created a fork-bomb while working on the Shell MP. Additional Power on/reset instructions are at this IT page](

  3. Check Engrit Annoucements and slow loading Status Page and the class forum

  4. Contact IT by emailling Include all relevant details (your VM hostname and your netid, and description of what you’ve tried.)

Provisioning a local VM using Vagrant #

If you are taking the course remotely and have slow internet when connected to the Campus VPN, you can set up a VM locally (on your own computer) using Vagrant. This page has instructions on how to do that.

Note: Your EngrIT-provisioned VM is still the authoritive place for final testing. Your local Vagrant VM is just a way to help remote students with development.