User Tools

Site Tools


CSCI 270 - Advent 2020

Notes for Students Studying Remotely

If you plan to study remotely, you’ll need to know the following information to take part. This will also be useful for in-person students in the event (that hopefully does not occur) that the class goes 100% on-line or individual students have to leave campus…or even if you have to miss a few days of class due to illness.

We’ll follow the “flipped classroom” method of instruction: starting after Tuesday’s class, I will post a video covering material for the next class. It is your responsibility to go through the video before class time. In class I’ll spend some time taking questions over what was covered and going into a bit more detail; then most days you’ll be given a lab assignment. There have always been a few in-class exercises (lab assignments) in this course, but this semester we’re going to dial that up to eleven: MOAR LABS. One of the main ways you’ll learn this material is by getting knee-deep into it yourselves. Sometimes this will be computer work, other times it will be computation using good old-fashioned pencil and paper. Anything not completed by end of class will generally speaking be due by the beginning of next class. The assignment will say when to turn it in.


  1. All the material is online somewhere, which is typical for my courses
  2. We will have a Zoom Classroom which I’ll join before class time each Tuesday/Thursday
  3. The day’s lab work will be posted where you can get it and work on it
  4. Most days the last 15 minutes of class time will be reserved for Q&A with remote students via Zoom

CSCI 270 Virtual Classroom

Join the CS 270 virtual class:

If you are on Zoom during classtime, please mute your microphone and ask questions using the Chat feature. I will set aside a dedicated time (usually 12:00 CDT) for remote students to unmute and ask questions directly.

BrightSpace and the Course Website

Course materials on BrightSpace ( include:

  • Video lectures over PPT from CS:APP
  • Slides for download and printing
  • Semester and final exams
  • Yet another link to the Zoom classroom

Course materials at my CSCI 270 website:

  • Syllabus
  • Course schedule, including readings and assignments
  • Links to tutorials, supplemental reading, and more

Programming in C on Linux

We will learn and use the C Programming Language and the gcc compiler (gcc stands for GNU Compiler Collection). We will also learn a subset of Intel's x86-64 assembly language, which needs no compiler, but we won't be writing programs in this language directly. So you'll need a computer with a C compiler, preferably a recent version of the gcc compiler.

This is also necessarily a Linux-centric course, and most Linux (or Unix) installations include the C programming language already installed. The main texts and most course material assume you are using the command shell in a Terminal window on Linux. The command shell is called bash, and you've used it every time you open and interact with the Terminal window, whether you knew it or not.

Even if you don't have a computer with Linux installed, you can get access to a C compiler in one of two ways: use your computer to connect remotely to the Linux Lab computers, or install software so you can edit, compile, and run your C programs on your own machine.

Each way presents it's own special challenges. Let's look at each in turn:

Logging in remotely

Going in, you should know the biggest challenge here is not having a mouse, and therefore not having menus. Everything, including editing your files, will be done by keystroke commands.

  1. Install a “secure shell” program such as OpenSSH
  2. login to the CS server using the command ssh -X -p 222 The first time, you may see some official looking language asking if you really trust hive and want to continue, say yes (or whatever it asks for).
  3. You are now at a prompt, just like using the Terminal window. You can do your work on hive, in fact you should try it out! But there are good reasons to use the Linux lab computers, see next step.
  4. Continue on to your favorite Linux lab system: ssh -X for example.
  5. you can run command-line programs, access all your files, edit, compile and run programs
  6. when you are done, type exit or <Ctrl-D> to disconnect, once from the lab computer, and again from hive

A few important notes:

  • Save Often! I'm sure you know that by now, but getting disconnected from a remote login is a common occurrence.
  • You won't be able to use your favorite GUI editor like GEdit or Sublime. Or if you can, it will be quite slow. The best editors for remote work are vi and emacs. Dale swears by vi, I'm a fan of emacs. But you'll have to learn key commands for one of them if you don't already.
  • I'll post editor resources here or see for some pointers to command-line tutorials.

If at any point you run into problems, schedule a meeting with me at the next available office hour.

Running C on your own system

macOS - because the macOS is built on top of Unix, you already have a C compiler installed. The Terminal program runs a Unix shell just like the Linux Terminal, it just runs a different one (the Ubuntu distribution, and in fact must versions of Linux, use the shell program bash…you've been using bash all along). To enable bash on the macOS, run Terminal (Launchpad→Other→Terminal) and choose Preferences. Under the General tab, the second entry is Shells open with: and you want to choose the second option, Command (complete path) and enter /bin/bash if it isn't there already.

You can customize the color scheme (I use Homebrew and Novel) and other aspects of the Terminal.

Windows - you have several options, and each is a bit of work. Warning: while I've installed Linux on Windows systems, it's been years. I have no recent experience with any of these steps, but hopefully we can find a friendly system administrator to help.

Options: [UPDATED 8/19/2020 to add two simpler options]

  • Enable Windows Subsystem for Linux (WSL) using the Ubuntu distribution. The most recent version is WSL 2.0; you might search for tutorials specific to 2.0. DeveloperInsider has a post on installing gcc, not dated so not clear which version it's for. Confusingly, Ubuntu has its own take on installation for Win 10.
  • Install Ubuntu Linux alongside Windows on your computer. This is the most work (you should back up all your files before doing this) but worthwhile in the long run. But please, talk to me first.
  • Install Ubuntu Linux using VirtualBox (free last time I used it), VMWare ($$), Parallels ($$) or similar virtual machine technology. You can do this, but the system administrator is considering building one for us. Stay tuned…
  • Install MinGW to get a working gcc that runs on Windows. This project still lives, but it doesn't give much guidance on exactly what to download.
  • Run screaming into the hills and become a hunter-gatherer.
cs270/remote.txt · Last modified: 2020/08/19 11:23 by scarl