Linux in the Classroom Dr. Mike LeVan Transylvania University mlevan@transy.edu I have been a Linux advocate for about ten years now. The first version I installed of Linux was Red Hat 3.0.3. I had used a Unix based system in graduate school, and I was a little familiar with how to get around (read: how to screw things up). I work at a school which is inundated with Microsoft products. After being there a year or so, I decided to branch out on my own and install Linux on my desktop machine. I have never looked back. I have been using Linux as my desktop of choice ever since, at home and the office. I have occasionally booted into Windows if I wanted to play a game, or an occasional PowerPoint presentation, but that has been about it. Yes, I know about WINE and CrossOver, but there are a few games and programs that are inherently better when run in a Windows environment. However, more often than not, there are options under Linux that are just as good, if not better, than those available under Windows. This is part of the main message I have been tauting to our students, faculty, and staff for the last few years. As a result, I have since come to be known on campus as a Linux advocate. If someone has questions about Linux, they usually find their way to my office just as much as the computer scientists' office. I have also been bugging our Director of Academic Computing by asking him when the campus is going to switch over to Linux. We do have some Linux boxes buried deep in the recesses running our mail server, Blackboard, and a few other applications, but nothing in the way of a visible Linux presence on campus. The Computer Science recently converted the Computer Science lab from SGI boxes to Linux boxes, but that is about the extent of Linux on our campus. Is it going to be possible to get Linux to be more widely used on campus? I am not sure. This will probably be a long, uphill battle, but luckily it can be won! If you check out the May 2005 issue of LJ, you will see how a few people got the job done at the Mountainland Applied Technology College. As you can tell, it has thus been my mission to make Linux more widely accepted on our campus. A colleague from the computer science department (Dr. Kenny Moorman) and I ran a Linux class in our May term a few years ago (May term is a short four week semester which runs, coincidentally enough, during the month of May). I am again running the class again this May. My goal is to try to teach the course so our students can integrate their PC's into our existing framework. I will need to try to show them how to set up their desktop system that can surf, check e-mail, burn CD's, as well as teach them some basics on administration. While I will be teaching them how to turn services on and off, I don't think it would be wise if they would use their boxes as a DHCP server, mail server, or anything of that ilk. I think the campus administrator would be having a nightmare if students started to hand out IP addresses! The big question then becomes how I should set up the class? While Dr. Moorman and I were trying to plan out the class the last time it was taught, we realized there were few resources that were available in terms of how to make a class like this successful. I still have not found many resources to help develop this class. So, I decided that now might be the time to actually write down what I think might make the class a success. I have identified four main ideas that I wanted to address when constructing this course. 1.Why is Linux important? What is the Open Source philosophy? What is the history of Linux? 2.Are there any good Linux text books out there? 3.What information should be contained in the course? 4.What types of assessment should be used. Let's address these issues one at a time. Why is Linux Important? “Fight and you may die. Run and you'll live, at least a while. And, dying in your beds, many years from now, would you be willing to trade all the days from this day to that for one chance -- just one chance -- to come back here and tell our enemies, that they may take our lives, but they'll never take our freedom!” --William Wallace (Mel Gibson) Braveheart Why is Linux important? I can sum it up for you in one word – freedom. If you have been following the Open Source movement, then you know I am not talking about the price of the software. That just happens to be a nice perk. No, the freedom I speak of is being able to use your computer and software in the manner that you wish. It is about not being tied down to any certain vendors who roll out “upgrades” that are incompatible with your current projects. I am talking freedom from viruses. Freedom from monopolistic companies who use unfair business tactics to squash their competition. Freedom that leads to imagination and innovation. This is the type of freedom to which Open Source can lead, and it is the type of freedom that should be important on a college campus. It seems a natural fit that a class of this sort should be available on a college campus. If there is to be a change in the open source versus closed source discussion, then we need to teach the up-and-coming engineers and computer scientists of the world that there are options. We need to teach them where Linux came from, why it has grown, and were it is going. This class needs to talk about the differences and philosophies of the Cathedral and the Bazaar. By giving students the arguments for and against both sides of the story, they can make an informed decision on their opinion, instead of simply sticking with the status quo. If you can win their hearts, then it is much easier to win their minds. Books? We don't need no stinking books!! This has been a tough one. There are a plethora (or lots) of books about Linux, but I have not found one that I felt would be a great one to use all by itself in a classroom setting. Naturally, the first book I thought about using was Running Linux (Welsh, et. al., O'Reilly). This book can tell you how to do just about anything in Linux. However, there is not really too much in terms of history and philosophy. The last time I ran this course, we used this book in conjunction with The Cathedral and the Bazaar (Raymond, O'Reilly). Again, a great book on its own, but for students just getting involved in Linux and Open Source, it can be a little over their head. These articles are also online, so you can pick and choose which ones might be applicable at the time, instead of ordering the entire book. Last summer I ran a Linux camp for high school students. We used the book Linux for Non-Geeks (Grant, No Starch Press). This book seemed nice if you are going to work with Linux as your desktop (which was fine for the camp), but it did not have too much about system administration. Transylvania is a liberal arts school, so we tend to ask the question, “Why” a bunch. I want to be able to show the students what is going on from the boot process to shutdown, and most everything in between. When a student boots Linux for the first time, there is a lot of information scrolling across the screen. I want to make sure the students know what it all means, or at least most of it. By knowing why and how things are working, it makes it easier to troubleshoot when they don't. These boundaries led me to a couple of books. The first was How Linux Works (Ward, No Starch Press), and the second was Learning Red Hat Enterprise Linux and Fedora (McCarty, O'Reilly). Both books went into some detail on the boot process – from the boot loader, to init, to the login prompt. These were ideas that I wanted my students to understand. Most books skip or haze over these concepts, but these two books took some time and depth to explain what was happening. I wound up going with How Linux Works. This choice obviously varies with your audience. Being a liberal artsy kind of guy, I wanted a book which was fairly non-technical yet had a lot of essential information. I feel the How Linux Works book does that. I am not knocking any of the other books at all. I have all of them, and I think they are all very useful. But, when you are choosing a book for your class, I have discovered that you shouldn't simply pick your favorite. Make sure you pick a book that will cater to the material you are going to teach, as well as the level of the class. If you have a room full of upper-class computer science majors, then the more technical book might be a better choice. I am running an introductory course, so I wanted to find a book that was readable, yet covered the material I felt was important. I will still use the other books as a reference, as well as a few others. Here are some of the other books I was considering: Linux Cookbook (Sturtz, No Starch Press), Linux Cookbook (Schroder, O'Reilly), Red Hat Linux Fedora Linux 3 Bible (Negus, Wiley Press), Official Red Hat Linux Adminstrator's Guide (Red Hat Press), RHCE Red Hat Certified Linux Study Guide (Jang, McGraw-Hill). By the way, there is a book called, “Linux : The Textbook”. With a name like that, you might think this is an obvious choice. Unfortunately, it did not cater to what I wanted to do in the course. It talks a good bit about applications and programming, but I am not going to touch too much on these. It is also a bit dated. There has not been an update since 2001. Topics, Schmopics! (With a tip of the cap to Marcel Gagne) Francois, we now get to the heart of the course, mon ami! OK, we have four weeks, five classes per week at two hours per class. We are looking at forty hours for the class! Zoikes! That is not much time! Here are the topics I am hoping to cover in some kind of approximate order of introduction: A brief history on the origins of Linux. Open Source / Closed Source. Superuser versus regular user. The directory structure. Basic commands. (cd, ls, mkdir, cp, etc.) The boot process. Installation. Command line versus GUI. User Administration. Intermediate commands. Security. (ssh, packet sniffers, rootkits, logs) Services. NFS cron Software Administration. (source, rpm, apt) Printing. Applications. (xmms, gimp, openoffice) Eye Candy (X-Windows, Flash) Compiling the kernel. Backups / Adding Hardware. Geez. can I get all of this done in only 40 hours? Obviously these topics are not set in stone. A lot will depend on the speed of the class. If they can assimilate the knowledge in a reasonable amount of time, then we should be able to hit most of these topics. If it goes a little slow, then I will have to cut off a few topics. A Pain in the Assessment This is the part of any class that students just love -- tests! In an academic institution, you usually have to assign some type of grade to the students at the end of the term. What are reasonable methods that can be used to measure the proficiency of the students. Tests? Yes. Quizzes? Sure. Trouble shooting? You bet. Term paper? Maybe. How can assessment be carried out so that it is not just another hoop the student has to jump through to get their grade? Assessment itself should be another learning experience. So instead of the traditional tests where students get to fill in the blanks, be creative! After class one day, go in and “break” the students machines. That way, when they all get to class the next day, they won't be able to log on. Give them 30 minutes to fix the problem, and at the end of the time, give them some hints, or explain the problem. Troubleshooting can be fun, unless ,of course, it is your own machine. When Dr. Moorman and I last ran the class, it was a matter of days before a student had their machine cracked from the outside. Luckily, we had planned a demonstration on security that day, so it worked out perfectly! I have also used the RHCE book mentioned earlier to come up with multiple choice questions the students can access online. This allows them to quiz themselves to see if they are understanding the material. While you may not want to do this for an official quiz and/or test score, it is a fun exercise the students can do at their own pace and time. Testing itself will probably come in two forms : written and hands-on. For the writing portion, I can ask the students to write out certain commands they might use to complete a certain task. In the past, we allowed the students to use their workstations to test the commands before they gave their final answer. We asked the students to answer the questions by memory. In other words, we did not allow the use of man pages, the Internet, their notes, or their neighbor. While this is not how it will be in the “real world”, I feel it makes for a better system administrator. After all, would you rather have a sys admin who can fix a problem off the top of their head, or one who has to take time to look on the Internet to see is someone else has had a similar problem. The second portion of testing will be the hands-on method of lab practicums. The students will have to set up their machines to a particular state. The state could be setting up new users, permissions, services, or many other types of problems. I should be able to log on to their machines and check to see if they have set up their system successfully. I think the students will enjoy this portion of the test much more than the written portion. There is a certain satisfaction to knowing you have fixed a problem. I know I thoroughly enjoyed this aspect when I became an RHCT. The scary part for the students will be that I will not allow students access to any resources for this part of their test. They will again have to rely solely on themselves to see if they can understand and solve a broken system. While this seems extremely harsh, it is my hope that this will motivate the students to dive deeper into the material. Besides, this is the process they will have to go through if they ever want to become certified. I can be more lenient on the homework portion. I will give certain assignments and problems for the students to complete before the next class period. Here they will be allowed to use their books, notes, or whatever they want to help them solve a problem. These exercises will hopefully cement the basic knowledge required to pass the tests, if nothing else! The final method of assessment could be the most unpopular – a term paper. This assignment may not be your cup of tea, so some people might omit this aspect. However, I feel it is important for the students to be able to write as well as solve problems. If you are at a technical college, then you might not think this is too important, but being at a liberal arts school, this is part of our mission. For the paper, you could ask the students to write on many different topics. For instance, you could ask them to develop a plan for a small liberal arts college to change their computing structure from closed source to open source. You could discuss the history and importance of Linux and open source. There are many interesting topics you could choose. The last time we ran this class, we asked our students to talk about the decision Netscape made to open the source code to their browser. Class Dismissed OK, class time is up. I hope you enjoyed our discussion for the day. If you want to follow the class, feel free to check out our website at the following URL: http://www.cs.transy.edu/moodle You can use the username guest1 and the guest password is guest42. The class begins April 27th, so make sure you get there by the time the bell rings at 9:00am. If you have any questions or comments, feel free to raise your hand in class or to send me an e-mail at mlevan@transy.edu.