The learning objectives for Development Guide are:
- Using the tools needed for CS 241
How to Make Your Life Easier#
Hi there! We noticed that there was quite a bit of confusion about ssh, VMs, coding on your own computer, etc. We thought we would try to clear a few things up.
A Virtual Machine is an emulation of a computer system. Your personal VMs in this class are hosted somewhere on a server and are completely separate from your EWS account. You can use ssh to access your VM via the command line.
How We Have Things Laid Out
We can divide our entire development environment for the class into 3 parts: your own computer, your personal VM, and EWS. EWS is the same environment as when you log into one of the computers in the labs. Your personal VM is what we will show you how to
ssh into during lab, and is where you should be testing and developing your code as well.
In this course, we use VMs for all our development, so it is important that you learn how to use them. These VMs are part of the CS Cloud, and we will not support any other machines for grading. This means that you should test on your VM and and not any other machine – this includes the CS2XX VM you received in CS 225, EWS, or your local machine. This is to your benefit, since the grading VM is identical to your VM.
ssh into your VM. The VM number is emailed to. The general format is
$ ssh <NETID>@sp18-cs241-<NUM>.cs.illinois.edu
into your terminal. If you want to use graphical editors, add the
-Y flag to
ssh to enable forwarding. We highly recommend not to use GUIs in order to get comfortable with the command line (also because it is slow).
We would like to stress that no matter what method you use to develop code for CS241, 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.
SSH is a network protocol for initiating text-based shell sessions on a remote machine. In plain English, this basically means you can access another machine remotely, sending information via the command line. SSH is normally completely text-based, but one can use X11 forwarding to use graphical applications like gedit. We do not support Fastx like in 225.
SSH on Windows#
This is a great tutorial on how to use and install Xming and PuTTY.
There are applications like Sublime and Notepad++ that can use SFTP (Simple File Transfer Protocol) to allow you to modify and save remote files. You could also look into Cywin or a Windows Side SVN handler (SVN Tortoise)
Connecting Mac/Linux is pretty easy because they share the same UNIX architecture as EWS and your VM. It really should just be as easy as opening a terminal and typing:
$ ssh -Y <Hostname>
You should now be able to use programs with a graphic interface by starting them from the command line by typing, e.g.:
gedit should then open with a GUI. It really is that easy. Remember, you can exit ssh by using the command:
scp user@machine:/path/to/file /path/to/where/you/want/to/store/it/locally
The second one copies a file from the current machine to the remote machine.
scp /path/to/file user@machine:/path/to/where/you/want/to/store/it/remotely
This helps you not continually ping the svn server.
You can edit your configuration file so that ssh remembers where to ssh into when you give it a hostname
Host <HOST> User <NETID> HostName <VM_NAME>
Here is an example
Host cs241 User bvenkat2 HostName sp18-cs241-<NUM>.cs.illinois.edu
Then, running the following command
Essentially runs this
Do you have having to type your password every time? Well generate an identity file!
I AM OFF CAMPUS AND CANNOT CONNECT TO THE VM, HELP!#
You can use a VPN (Virtual Private Network) to access on campus resources and then use Putty or SSH directly into your VM. Tutorial
OR, you can SSH twice. First into your EWS account and then into your personal VM. Just remember that this causes potentially double the network lag!
Of course, there are many other ways to do things too. You could just work on your own machine or in EWS and upload all of your work to SVN and then open your VM and pull down all of your saved files and test, but we think that is tedious.
Installing other things#
This is your vm! Install whatever you want on it (given that it is school appropriate). Meaning, you can install
emacs. If you’ve ever wanted to become terminal saavy, this is definitely the course to do it.
If anything is unclear, either post on piazza or ask your TAs/CAs/fellow students! Be careful about messing up your vm