Course Overview

This class is largely driven by problems suggested by students, and solved by students. That's why we're using a wiki—it is a web resource that the user community (i.e., students) can edit. Your grade in this course will be largely determined by the quality of these contributions. To edit or read the wiki, you'll need the top secret wiki password, which is only available to registered course participants. Active participation in the wiki is essential to success in this course.

In class, we will cover a variety of programming tools and techniques, based on a modern Posix programming environment. We will learn a number of programming languages, including the shell (bash), awk, Python, and C. We will also learn a techniques and tools for data representation, including flat files, relational data bases, and XML.

The grading will be based on 40% homework, 10% lab, 40% wiki-work, and 10% final presentation.

Course Staff

The lecturer for section 01 is Stuart Kurtz. Office hours are 10:30-11:30 MWF, and by appointment, Ryerson 166.

The lecturer for section 02 is Ariel Feldman. Office hours are 1:30-3:00 TuTh, and by appointment, Ryerson 161A.

If send email, please include include the string "[16200]" in the subject line, e.g.,

Subject: [16200] Homework questions...

The Lab TA is Mark Stoehr.

Programming Environment

We expect that you'll be working in a Unix-like programming environment. If you are running Linux, you should be pretty much set, although you may need to install a few tools using whatever packaging system your distribution uses. Likewise, if you're running some version of BSD, you're probably good, modulo your choice of shell.

MacOS X is a Unix-based OS, which is great except that the default distribution does not include the command-line tools we'll need. Fortunately, they're easy to install. There are two basic strategies:

To obtain software that doesn't come with either MacOS X or XCode, you may want to use a package manager. The most popular choices for Mac are Homebrew and the older MacPorts.

Finally, if you're using Windows, you're used to having to do tedious things, and this will be no exception. Most of our Windows-using students have used Cygwin. Alternatively, you can set up a dual boot system with the either Linux, BSD, or even Darwin. You can try using a “live boot” setup, although this may require some configuration to get the right developer tools on the boot CD/DVD.

In any event, you will need to get an account on the Department's Linux cluster, and you'll need to learn how to work with both Linux and MacOS X for the Labs. If you do not have an account, you can get one at the UCCS account request page. Note that you'll need to provide a CNet ID and password.