Course Overview - Spring 2007

Motivation

Unix systems appear in many different places, such as machines that maintain your student information to systems that serve up web pages for your online banking. The reasons are both historic and practical: some software was originally developed only under unix and requires support in that OS, as well as some tasks being simply easier to manage on a unix system.

No matter what type of software you may design and implement, chances are some of that software you will be developing on a unix based system, or deploying it on one. Understanding unix systems will prepare you for entry into a larger world within computing, as well as having an idea of the different issues faced by people very day within the large environment of computing. After taking this course, you should have:

  • An understanding of unix-based tools and commands under a distribution of Linux
  • Familiarity with the use of unix in different areas of computing
  • An ability to navigate and maintain a unix-based system
Course Goal

The goal of this course is to familiarize you with standard tools and program usage and configuration under Linux to solve everyday, common problems of security, availability, and scalability. I want you to walk out of this course confident to maneuver inside a unix system.

As mentioned above, the course is structured around Linux, as this variant of unix is very common and widespread. Other variants such as BSD and Solaris will be mentioned, but not really covered in this class. There is so much information out there that falls under the category of 'unix' that it is impossible to cover even just one distribution of Linux, much less variants of unix itself in a single unix course.

No one part of unix at the user and administration level is complex, but the sheer volume of information is generally what is overwhelming, and 50% of the battle in unix is knowing where to look for necessary information to solve the task at hand. Many different utilities and daemons interact and end up being co-dependent, allowing for a lot of things to go wrong in many different places when managed poorly, or even simply changed without knowing the full effect on the system of those changes! That by far is the most common problem when dealing with unix is knowing what reach your changes have when made. Only time and experience lend to seeing all of the interactions of the processes within a unix system.

Some programming is required for the course, but only in the form of scripting languages. Familiarity does help, as many programming courses introduce you to a unix environment. A unix system can be managed without a single line of code written, but many tasks done by an administrator are made a thousand times easier when done in scripting. You will be introduced to scripting in the Bash shell and in Perl.

Logistics

Instructor

There is one instructor for this course (me), as well as a grader. We will also have a few guest lecturers during the semester on different topics that should prove to be interesting to you.

Classroom

TR 5:00pm-6:15pm Room ECCR 150

We will be splitting our meeting days in two different places. Tuesdays will consist of lecture material with demos, followed by a lab on Thursday which will cover all the material presented from that week's Tuesday lecture (the lab may incorporate older material as well; as always we're building knowledge).

Accounts

Even though we will be building a machine from scratch, you will still need an account in the CSEL. All students taking this class are allowed an account in the CSEL for the semester. If you do not already have an active account, follow the instructions on this page to create or reactivate an account.

Mailing List

We have a mailing list that is maintained by ITS through CUConnect. Only registered students are a part of this list, so if you are an auditor of the class, please let me know so I can make sure that you receive all mails I send to the class list.

Grading, Quizzes, and Exams

The class mainly consists of a project (65%) which is building the machine, four quizzes (20%) and one final exam (15%). The quizzes are take-home and are given out on Thursdays and are due before class begins the following Tuesday. I will announce every quiz at least one week in advance, if they are not already shown on the website. The quizzes will consist of solving new problems based on material covered in the labs. The final exam will be similar as a take home, but slightly longer and comprehensive over the whole semester.

Textbook

This class does not require a textbook, as most of the information is easily found online in many different places. But if you would like a book anyway, here are my recommendations:

  • O'Reilly - Unix in a NutShell, 4th ed.
  • O'Reilly - Running Linux, 4th ed.
  • O'Reilly - Essential System Administration, 3rd ed.
Course Web Page

The page was originally developed by Phil Jones, and content added both by Chris Schenk and Phil Jones. The information in the slides from class is mainly from Chris, with some images taken from slides created by the previous teacher of this course, Tor Mohling. Useful information on the course will be maintained on this page (as best as can be achieved).
http://www.cs.colorado.edu/~schenkc/courses/csci4113-sp07

Make Chris Happy

There are a few things you can do keep me happy with you, yes you, specifically:

  1. Stop by my office only during office hours. I only have a certain number of threads to handle all of the information in my day, and context switching generally causes thrashing on the CPU in my pea brain. Please either make an appointment with me or stop by during regular office hours.
  2. Don't pry me for points. Let me say that again. Don't... pry... me... for... points. If there was an obvious error, of course we can correct it. If you argue in a gray area, I will have little patience for dealing with your issue, and will ridicule you publicly for not paying attention to this instruction.
  3. I don't care if you come to class on time or not, just be quiet when entering and leaving. I also don't care if you sleep. If you snore, I will point it out to the rest of class, and then will wake you up. This is your education, and the wonderful part about University-level education is I don't have to care if you fail or not.
  4. Don't talk TOO loudly or in a prolonged manner during lecture. I find I am distracted by people who talk. Don't go overboard.

I have little patience for people who do not put effort into class. I find this material to be interesting enough to pay attention, as it is useful in *any* study of Computer Science. I also find that those who do what I mentioned in #3 and #4 follow up with #2, so it's pretty easy to see who's putting forth effort and who isn't. You won't win. Don't try to get away with it.