Williams College

Computer Science 10 - Winter Study 2001

C, Unix, and Software Tools

Instructor: Jim Teresco
Email: terescoj@cs.williams.edu
Office: TCL 304, 597-4251
Class meeting: Tuesday, Wednesday, Thursday 10:00-11:50, TCL 217a
Office Hours: Tuesday, Thursday 1:30-2:30, or by appointment.


This course serves as a introduction to programming methods using the Unix operating system. The course is designed for individuals who understand basic program development techniques as discussed in an introductory programming course (Computer Science 134 or equivalent), but who wish to become familiar with a broader variety of computer systems and programming languages. Students in this course will work on Unix workstations, available in the Department's programming laboratory. By the end of the course, students will have developed proficiency with Unix and the C programming language. The exact topics to be covered may vary depending upon the needs and desires of the students.


Mark G. Sobell, A Practical Guide to the Unix System, 3rd edition, Addison-Wesley, 1995

K. N. King, C Programming: A Modern Approach, W. W. Norton & Company, 1996.


Computer Science 134 or equivalent programming experience.

Schedule (subject to change)


  • All done.


    Practice Assignments will be given out daily. The purpose of these assignments is to give you practice each day with the new ideas that are presented. The only way you will become proficient with Unix and C is to use them. These assignments will not be collected but we will discuss them in the next day's class.

    A number of programming assignments will be given. These will be evaluated to give you feedback on your work and for grading purposes. You must complete all programming assignments on time to earn a passing grade. One or more late, partial, or missing submissions will result in a perfunctory pass or failure, at the discretion of the instructor.

    All practice assignments and programming assignments may be found here.

    Ground Rules - Honor Code

    You may discuss practice sets among yourselves, but be sure you understand the answers. The turned in assignments are designed to help each student learn the course material. For some assignments, you may be allowed to work in small groups. Any assignment which does not specifically state that groups are permitted must be done individually. Cheating (copying, sharing, or other unauthorized collaboration) is a violation of the Honor Code and will be dealt with appropriately. If in doubt, check with me before working together. Individuals or groups should ensure their files are "read-protected." Learn how to protect your files -- it is your responsibility.

    Unix Command Toolbox

    These are some of the Unix commands we've discussed in class:

    passwd, ls, cp, mv, rm, more, lpr, less, cat, mkdir, rmdir, cd, pwd, emacs, vi, man, xman, diff, xclock, ps, kill, gcc, history, chmod, chown, traceroute, ln, umask, make, gmake, grep, ar, tar, gzip, gunzip, zcat, zgrep, head, tail, file, bc, du, awk, sed, basename, cut.

    Helpful online resources

    PuTTY Win32 SSH Client

    FreeBSD Home

    Emacs cheat sheet - tables summarizing Emacs commands discussed in class

    Emacs FAQ - Frequently asked questions about Emacs

    UNIXhelp for Users - introductory level material

    Unix Reference Desk - a comprehensive collection of references

    comp.lang.c FAQ - frequently asked questions posted to the comp.lang.c newsgroup

    How to Write a Makefile - introduction to make

    Online manuals - online manuals for lots of Unix tools: emacs, gdb, make, ...

    Signature programs. OK, so maybe this isn't useful, but there are some neat programs here.

    Thanks to Barbara Lerner, whose version of these web pages, lecture notes, and practice problems were borrowed from heavily for this year's version of the course.
    terescoj@cs.williams.edu -- Wed Jan 17 16:17:51 EST 2001