FIXME: pictures

Contact Information

Computer Science Department
Colgate University
McGregory Hall, 3rd Floor
13 Oak Drive
Hamilton, NY 13346
(tel) 315.228.7719
(fax) 315.228.7009

Career Services Job Listings for CS

See for job listings posted by Colgate Career Services.

Microsoft DreamSpark

Colgate University has an agreement with Microsoft to provide access to free downloads of developer tools and technologies through the Computer Science department's membership in the DreamSpark Premium program. Examples of available software are:

  • Developer tools, including:
    • Microsoft Visual Studio
    • SDKs and DDKs
    • MSDN library refrence
  • Platform tools, including:
    • Microsoft Access
    • Microsoft Visio
    • Expression design tools
    • (Regular Office is NOT included)
  • Platforms and Servers
    • Windows client operating systems (including Windows 8 and 10)
    • Windows Server
    • .NET Enterprise Servers including SQL Server, Exchange Server, etc.

Eligibility at Colgate

Declared, currently enrolled COSC and COSM concentrators and minors and department faculty and staff have access to the DreamSpark Premium library. Software is restricted to instructional use and non-commercial research only. License terms require active eligibility to install software; however, the license permits using any already installed software, consistent with license terms, even after eligibility or Colgate's subscription has expired.

Downloading Software

  • Software and product keys are available through the DreamSpark Software Center, which requires a separate account per eligible user.
  • Currently the software center supports downloads to Windows and Mac OS X systems only via the Secure Download Manager (SDM). On other platforms, you may still use the software center to browse available downloads and to obtain and manage product keys, but you will have to use an alternate platform to complete the actual download.

To request a Software Center account

  • Complete this online request form.
  • Wait for an email from Colgate DreamSpark indicating that your account has been created.
  • Click the link in the email to complete registration of your account.

Linux Documentation

Installing a virtual machine

You may wish to install a Linux virtual machine instance on your personal computer. A recommended option is VirtualBox (, which is free. A recommended Linux variant is Ubuntu ( --- all department Linux machines currently run Ubuntu 10.04 LTS, and are being upgraded for Ubuntu 12.04.

Navigating the shell

For a set of reasonable tutorials on using a shell (bash, in particular), see The full bash documentation is available at

Accounts and passwords

Getting an account

To obtain an account on the Linux systems, see Valerie Cucura. Note that your account comes with 5 GB disk quota, by default.

Changing password

Once you have an account, you can change your password with the passwd program. Just type passwd on any of the Linux systems and follow the prompts. (Technical note: there is a bug in the default setup for the LDAP PAM module. If you can't change your password on one of the Linux systems, it probably means that the system hasn't been modified from the default setting to enable passwd to work right.)

Remote access and file transfer

You can access department linux systems remotely using the "secure shell" program, or ssh.

For MacOS and Linux users, ssh is installed by default. Just open a terminal and type ssh.

For Windows users, you can use the well-known putty ssh client. See

There's also the WinSCP gui file transfer application:, among others.

Currently one machine is available to log into remotely (from off-campus): Your home directory is available on any Linux system you log into (via NFSv4), so you can log into any machine to access your files.

To transfer files to and from department Linux systems, you can use either scp (secure copy) or sftp (secure file transfer protocol). The basic syntax for scp is scp sourcefile destinationfile. An example of copying files and directories from another machine to

# copying a single file 
$ scp localfile
# recursively copying a directory
$ scp -r localdir

Two notes about the example:

  1. If your username on the local machine is different than on cs, you'd have to say

  2. The syntax after the : refers to a directory on the destination machine (cs). ~/ is just shorthand for one's home directory. You can either give a full, absolute path, or a relatively path from your home directory as the destination.

The syntax for copying from a remote machine to a local directory is very similar to the above. Refer to man scp for additional details on using scp.

ssh key-based authentication

You are strongly encouraged to set up ssh key-based authentication. To set this up, first run the ssh-keygen program to generate a public/private key pair. These keys will be (by default) created in ~/.ssh (i.e., the .ssh subdirectory of your home directory: id_rsa is your private key, and is the public key. You should copy to authorized_keys, and set permissions to (octal) 0644. At this point, you should be able to ssh from one Linux host in the department to another without password authentication (all authentication will be done with ssh key magic). You can (and should) also copy the private key file to machines from which you will be logging into department Linux hosts. (File permissions should be set that only you can read or write to the file.)

See man ssh-keygen for much more detail on setting up key-based authentication.

Mail and web pages

It is possible to set up personal web pages in a public_html subdirectory of your home directory. By default, the apache web server will look for a file named index.html in that directory. To make your web pages accessible, your home and public_html directories should be readable and executable by any other user. For example:

$ chmod 755 ~
$ chmod 755 ~/public_html

It is possible to send and receive mail from, though this is discouraged. It is, however, good practice to set up email forwarding, so that any incoming mail to your gets forwarded to a server where you normally get your mail. To do this, simply create a file named .forward in your home directory. The only contents of this file should be the email address to which mail should be forwarded.

Disk quotas

Checking your quota

Students have 5 GB disk quota by default. You can simply use the quota program to check your available disk space. Note that cache files for web browsers count against your quota, so you may wish to modify the default settings of your browser.

Getting a higher quota

Just ask. If you're doing research with a faculty member, you should probably ask for a project directory.

Project spaces

There are project-specific directories mounted on /projects on all Linux systems, with separate (and much higher) quotas.

Long-running and periodic processes

Sometimes there is a need to start up a process for a long-running computation, longer than you want to be logged in. There are (at least) two fairly easy ways to start jobs up and let them go for a while:

  • nohup: nohup stands for "no hangup", which basically is a way to tell your shell not to kill any currently running jobs when you logout. You can simply prepend nohup to your command line; see man nohup for more. The bash shell also has built-in facilities to do no-hangup. Refer to the bash manpage or online resources for help.

  • screen: the screen utility provides a way to multiplex multiple terminal sessions over a single session. You can also "detach" and "reattach" from a running screen process, which easily enables keeping jobs running after logout.

    A simple recipe is as follows: start up screen by typing screen. Once you get to a shell prompt again, you can start up the long-running command. Now, you can "detach" from the screen session by typing ctrl+a, d (control+a, followed by d). You can now log out, or do any other task. When you want to reattach to your previously detached session, you can type screen -r. It is possible to have multiple screen sessions detached; if this is the situation, the screen program will require an additional argument when reattaching to indicate the specific session to which to reattach. See the screen manpage for more on this great utility.

It is also possible to set up jobs to be periodically run: these are call cron jobs on Linux. See man crontab for help on setting up a configuration file to get a process periodically kicked off.

Available machines and software

There are four machines generally available for ssh access and compute jobs:

  • - only available from on campus.
  • - only available from on campus.
  • - available for ssh from off campus. Use of this machine for compute-intensive jobs is discouraged.

Note that all these machines are 64-bit (x86_64 arch). Any programs compiled on the Linux desktop machines will not run on these hosts, since the desktop machines are all 32-bit (the reverse is also true). You'll need to simply recompile your programs (and fix any bugs related to 32-bit or 64-bit assumptions!)

You can obtain system status for each of these machines at (only from on campus).

Programming/Software Links

Python programming

The standard, official Python distribution is available at Note that currently Python version 2 (2.7) is used in our COSC 101 course.

The Enthought Python Distribution, a more expansive distribution that includes various scientific and visualization libraries, is available at A direct link to their free distribution is (Note that there is also an academic distribution, which is more expansive than the basic free edition. Both are free to academic users.)

Java programming

The Java Developer Kit can be downloaded from the Oracle TechNetwork website. Some Java development environments:

  • BlueJ
  • Dr. Java (installed in the 319 lab)
  • Eclipse

C programming

Most OS X and Unix/Linux distributions come with compilers and libraries pre-installed or available for installation through downloadable packages, e.g.:

  • Xcode for OS X
  • The GNU gcc family of compilers (including gcc, g++, gcj, etc.)
  • The LLVM family of compilers (yes, the OSX compilers are LLVM-based; the lines are blurry here).

There are several open-source and commercial options available for Windows. Some possibilities:

  • For a basic C compiler, consider downloading packages from the LCC-Win project; free for non-commercial use.
  • For an industry-level development tool, Microsoft Visual Studio is available through the DreamSpark program.

Other useful software

  • Notepad++ is a recommended text editor for Windows (installed in the 319 lab)
  • TextWrangler is a recommended (free) text editor for Mac
  • Sublime Text 2 is a recommend (non-free) editor for the Mac
  • vim is another excellent text editor, with binaries available for all major operating systems.

Tutoring and Lab Resources

Lab Tutors

Student tutors are available most days of the week to help with coursework. The schedule is posted outside the laboratory rooms.

Please contact us if you are interested in becoming a tutor. Applications are available in the department office.

Department computing resources

The department has several labs on the 3rd floor of McGregory hall containing computers for student use that have course software installed.

Besides lab machines, there are a number of Linux servers that can be accessed remotely via ssh for coursework, research, and other student projects.

Wide-area distributed systems experiments can be performed using PlanetLab. See Professor Sommers for more information and to get access to PlanetLab.