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 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!
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, 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
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.
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.
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
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.