Nav Your Heart Out
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:
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.
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.
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).
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.
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.
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.
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:
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
There are a few things you can do keep me happy with you, yes you, specifically:
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.