Before you read this guide, you should read About Your CLAC account to understand what your account should be used for, and how to troubleshoot login issues. This guide will show you how to set up your programming environment so that you are ready to do assignments for this course.
If you are not familiar with using the command-line, you should look beyond this guide to learn about the Linux/UNIX programming environment. In addition to the course’s lecture notes, there are many books and online resources you can use. For example, here is the top link that came up when I googled for “linux tutorial for beginners”: http://www.ee.surrey.ac.uk/Teaching/Unix/.
You will log in to CLAC on the command line using SSH. SSH allows for you to start a secure terminal session with a remote host or server, or CLAC in our case.
On macOS, we recommend using its Terminal.
On Windows, we recommend using Windows Terminal. Before you can use SSH, you may need to enable it first.
Login to CLAC using the following command:
ssh YOUR_UNI@clac.cs.columbia.edu
For this course, you should write code using a command line text editor on CLAC. There are two popular text editors in the UNIX environment: Vim and Emacs. They split power users and programmers into two camps (that constantly make fun of each other). The choice between them largely boils down to personal taste. I recommend you pick one of those as your editor and start using it, learning tips and tricks as you go.
You can start with the built-in tutorials: for Vim, run the vimtutor
command;
for Emacs, select “Emacs Tutorial” under the Help menu.
Vim and Emacs have been ported to virtually every platform, so you can install
and use them on your PC or Mac as well.
Another text editor you can use is Nano (also called Pico). Nano is very easy to use, especially for beginners, but is rather limited in functionality. Though we recommend learning either Vim or Emacs for this course, you may want to start with Nano if you new to UNIX and just want to get started without having to learn to use a text editor.
The application you interact with in your terminal window – the program that
prints the command prompt and carries out the commands that you type – is
called a “shell”. There are many different shells. Your CLAC account is
configured to use the Bash shell by default, so if you run echo $SHELL
on
CLAC, it should tell you that you are using Bash:
$ echo $SHELL
/bin/bash
EDITOR
You should set up your shell environment and indicate your preferred text
editor. This way, other command-line applications will know which editor to
use when they need your input. To set this up, you will modify your .bashrc
file. This file is located in your home directory, and is used to configure
your shell environment when you log in.
On CLAC, open up .bashrc
in your text editor. For example, to open it using
nano
, run:
nano ~/.bashrc
At the bottom of the .bashrc
file, add the following line:
export EDITOR=your_editor
You should of course replace your_editor
with either vim
, emacs
, or
nano
, according to your preference. Also note that you should not leave
spaces around the =
.
To check whether you successfully set up your EDITOR
, log out of CLAC (type
exit
at the command prompt), and log in again. Then, run echo $EDITOR
to
see if your configuration has taken effect; for example, if you set vim
as
your preferred editor:
$ echo $EDITOR
vim
If that didn’t work, you may need to add the following lines to ~/.bash_profile
:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
In this class, you will use Git to obtain, work on, and submit your assignments. Before you can author any Git commits, you need to tell Git your authorship information.
You should run the following command with your full name:
git config --global user.name "Your Full Name"
And the following command with your UNI email address:
git config --global user.email UNI@columbia.edu/barnard.edu
git config
will store this information in ~/.gitconfig
for you. You can
verify that this information was set correctly by running the following:
$ git config --global user.name
John Hui
$ git config --global user.email
uni1234@columbia.edu
This guide was originally written by Jae Woo Lee.
Maÿlis Whetsel and John Hui adapted it for the web in Spring 2022.
Last updated: 2022-09-06