COMS 3157 Advanced Programming

Getting Started in the UNIX Programming Environment

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/.

Logging in to CLAC

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

Picking your editor

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.

Setting up your shell environment

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

Setting your preferred text 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

Setting up your Git author information

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

Acknowledgements

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