Instructor: Paul Van Oorschot [ paulv (àŧ) ]

TA: Furkan Alaca [ falaca (àŧ) ]

Assignment submissions are due by 11:59pm on the due date listed. Please submit assignments to cuLearn.

Please format your submissions as a single-column PDF report with a cover page, and appropriate section headings. Please do not submit word documents, rich text files, or anything other than a PDF. Clearly mark the question you are answering and include all relevant material (i.e. not just the answer, but any code/scripts written, commands run, and any output). Provide enough detail in your answers to demonstrate that you understand the concepts and commands you are running.

Please prefix your submitted file names with your MyCarletonOne userid, e.g., johnsmith-assignment1.pdf. Any code or scripts that you wrote should be submitted in an additional tar archive, and any files contained in the archive MUST be referenced in the report.

You are expected to have some familiarity with the Linux shell; common commands, rudimentary BASH scripting, piping and redirecting output. Many good Cheat Sheets, tutorials and guides exist that can help you review this material.


The Assignments will be done in Linux virtual machines, specifically created for each assignment. Each student will need an account on the SCS OpenStack platform, which is accessible only on campus or via the Carleton VPN. Instructions for creating an account and using OpenStack are available on the SCS OpenStack Support website. The user name and password for the course VM images are student and tneduts!, respectively. You will be asked to choose a new password upon your first login.

To access the VM images for the assignments on OpenStack, switch to the COMP4108B-W17 project through the drop-down menu at the top of the page. If you are unable to see COMP4108-W17 in your projects list, please use the SCS Online Account Management tool to update your account.

SSH access

The SCS OpenStack How-To document, available on the SCS OpenStack support website, provides all the necessary steps to enable SSH access to your VM. In summary, from your VM's Instance Overview page, use the drop-down menu to complete the following actions:

  1. Add the ping-ssh-http security group to your VM instance.
  2. Associate a floating IP address with your VM instance on OpenStack.

PLEASE DO NOT HOG IP ADDRESSES. We have 60 public IP addresses available (in the 134.117.31.x subnet) and about 50 students in the class. If you need to have 2 VM instances, please only assign a public IP address to one of them. You can then SSH into that VM, and use it to access your other VMs through their private IP addresses (in the 192.168.16.x subnet).

On Windows, you may use PuTTY to access your VM, and in Linux or macOS you may launch a terminal and run ssh student@VM.IP.address. If you're a PowerShell fan, you may experiment with Microsoft's new open-source SSH implementation for Windows 10.

Copying files to/from your VM

You may use SCP to transfer files between your VM and your local machine. SCP runs over SSH, so you should configure your VM allow SSH traffic, as described above.

If you are going to be transfering more than one file off of the VM you want to consider creating a compressed archive of the files on the VM, and then copying the archive to your local machine. The Linux format of choice is a Gzipped Tarball: tar collects a bunch of files into one, and gzip compresses the collected file to produce a tar.gz file. You can do this all in one step with:

tar -cvzf my_archive.tar.gz directoryName

This will create (-c) a gzipped (-z) archive file (-f) named my_archive.tar.gz by collecting/compressing the contents of the directory directoryName.

Linux or macOS

To copy a file (or recursively copy a directory, if the optional -R parameter is specified) from your VM to the current working directory on your local machine, launch a terminal, navigate to your desired directory, and run:

scp [-R] student@VM.IP.address:/some/path/source.file .

To copy a file from your local machine to your VM, run:

scp [-R] source.file student@VM.IP.address:/destination/path

Type man scp or visit this page for more information.


Install WinSCP, a GUI file transfer program that understands the SCP protocol. See the WinSCP documentation for more information.