Course Overview - Spring 2008

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.

  • Chris Schenk
    Office: ECOT 727
    Phone: (303)492-5720
    email: Look it up
    web: http://www.cs.colorado.edu/~schenkc
    Office Hours: Tuesday/Wednesday 5:00pm-6:00pm in ECCS 128 (CSEL)
  • Aaron Bach
    email: aaron.bach ``at'' colorado ``dot'' edu
Classroom

TR 9:30am-10:45am Room ECCR 150 (check the map)

Lecture happens both days in ECCR 150 and labs are done on your own time elsewhere. Occasionally I will cover lab-specific material and even solve some of the lab for you, so it pays to show up to class!

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, and I'm pretty sure everyone in the class can send mail to the list. That email is CSCI4113_001_20081_B1@rosters.colorado.edu

Grading, Quizzes, and Exams

The class mainly consists of lots of labs, about 10 or 11 of them (70%) which is building the machine, three quizzes (15%) and one final exam (15%). The quizzes are take-home and are given out just like labs. 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.

We will be using the departmental Moodle to distribute grades. It's just easier for everyone, and it's quite easy to setup an account for yourself. Visit http://moodle.cs.colorado.edu and create an account in the top right near the login section. The enrollment key is linuxismyhero with no spaces, etc.

Textbook

In this class we will be using the book Linux System Administration, 2nd Ed. by Nemeth, Snyder and Hein. It's a good book, written by CU Computer Science alumnus and faculty, so you'll see interesting examples of machines we have on our network here. This book costs $50 and is available at the bookstore.

  • 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 (now graduated), and content added by Chris Schenk, Phil Jones, and Aaron Bach. 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-sp08

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. Office hours are held in the CSEL so I can make a nice context switch when going down to the lab to help people out.
  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.
  5. For all of you World of Warcraft addicts, you better be getting some damn epic loots when you play during my class.

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.