Computer Science Department
McGregory Hall, 3rd Floor
13 Oak Drive
Hamilton, NY 13346
See https://goo.gl/6YBzxF for job listings posted by Colgate Career Services.
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.
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.
You may wish to install a Linux virtual machine instance on your personal computer. A recommended option is VirtualBox (http://www.virtualbox.org/), which is free. A recommended Linux variant is Ubuntu (http://www.ubuntu.com/) --- all department Linux machines currently run Ubuntu 10.04 LTS, and are being upgraded for Ubuntu 12.04.
For a set of reasonable tutorials on using a shell (bash, in particular), see http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html The full bash documentation is available at http://www.gnu.org/software/bash/manual/bashref.html.
To obtain an account on the Linux systems, see Valerie Cucura. Note that your account comes with 5 GB disk quota, by default.
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.)
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 http://www.chiark.greenend.org.uk/~sgtatham/putty/.
There's also the WinSCP gui file transfer application: http://winscp.net/eng/index.php, among others.
Currently one machine is available to log into remotely (from off-campus): cs.colgate.edu. 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 cs.colgate.edu:
# copying a single file $ scp localfile cs.colgate.edu:~/ # recursively copying a directory $ scp -r localdir cs.colgate.edu:~/
Two notes about the example:
If your username on the local machine is different than on cs, you'd have to say
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.
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 id_rsa.pub is the public key. You should copy id_rsa.pub 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.
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 cs.colgate.edu, though this is discouraged. It is, however, good practice to set up email forwarding, so that any incoming mail to your firstname.lastname@example.org 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.
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.
Just ask. If you're doing research with a faculty member, you should probably ask for a project directory.
There are project-specific directories mounted on /projects on all Linux systems, with separate (and much higher) quotas.
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.
There are four machines generally available for ssh access and compute jobs:
- toucan.colgate.edu - only available from on campus.
- stork.colgate.edu - only available from on campus.
- cs.colgate.edu - 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 http://toucan.colgate.edu/ganglia (only from on campus).
The standard, official Python distribution is available at http://www.python.org/. 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 http://enthought.com/. A direct link to their free distribution is http://enthought.com/repo/free/. (Note that there is also an academic distribution, which is more expansive than the basic free edition. Both are free to academic users.)
The Java Developer Kit can be downloaded from the Oracle TechNetwork website. Some Java development environments:
Most OS X and Unix/Linux distributions come with compilers and libraries pre-installed or available for installation through downloadable packages, e.g.:
There are several open-source and commercial options available for Windows. Some possibilities:
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.
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.