Well, it's November already. I didn't get to teach this period. Not enough students. I guess it's because word gets around that I'm not exactly an 'easy' teacher. Or as they say, a boat. It's ok, I guess. But I really enjoy teaching. I really do. I may not be the best teacher, or the most patient one... But I like it. And I really, really want to do it again. So, if anyone's reading this, and they have some sort of job or influence in a school, please hire me. :)
Reading the other posts I did here, I remembered about what happened after the exam. I did give them another exam. That'd be the 2nd one. It was a practical exam. We had a practice session on a Sunday (yes, I know... But it was the only available day), and it went well. Then, I modified that same practice session and added a few things and produced the exam. I told them that they had a full day to do it. They needed to write down the command or sequence of commands to produce the effect or information I asked them for, PLUS a typescript file of all their work. I really thought I could read back these files, 'cause I've used it before (as a student) in one of my classes. What I didn't know was that there isn't any typescript viewer for LINUX!! It's just... Weird... So, I had to analyze the files by hand, that were full of backspace and new-line codes, among other things, trying to make sense of them. I have to admit I had better results than in the first exam. Seems the practical session proved to be useful after all.
After that, I tried to get them to do a little presentation about network services on Linux. Oh God... What a disappointing experience. I guess I expected too much from them, and I guess I wasn't exactly a great teacher either. And then after that came the whole LAN project.
I completely forgot to blog the rest of my classes in here, but it went pretty much the same. As a final project (I didn't ask them for a 3rd partial exam or a final exam), I wanted them to build a small office LAN environment, with Linux-based services: email, web, ftp, DHCP, DNS, file & printer sharing and internet gateway/firewall. I told them to get in groups of 2 and I gave each team a couple of services to implement. This would be from installing the machine, to configuring the service, to doing a test drive of the service. I must admit this was an exercise that was a good idea, but was poorly executed. Mainly because I didn't see the degree of difficulty some of the services would have, for example the firewall bit. I didn't give them any tools to manage the hard work of configuring IPChains/IPTables. And I think they didn't grasp the main technical concepts that well. Others did very well with easy services like DHCP and Web. Others just couldn't manage to get it off the ground but at least tried, and others didn't even try. So, the final outcome of all this was that 5 people failed the class. These people didn't do homework or work at all. So I couldn't help them. I was aware that I passed a couple of slackers, but they managed to stay on level with the rest of the class at some point. I was slightly disappointed by the results, but it was quite good to be my first experience with teaching a college level class. I loved it. And now I have the opportunity to do it all over again. A week ago I got a call from the dean telling me that they wanted me back to teach the same class. I was all giddy. The only difference is that now I have to teach on Saturdays from 8 to 10. Ugh. Too damn early if you ask me. But it's good. Love to be back teaching. I have a smaller class (10 people), and somehow they seem a bit brighter. Maybe it's just that I have high expectations of this new class. Let's see if I think the same after a month.
It's kind of sad that I didn't get to finish this blog properly, but with work and the class, there was practically no time to blog. I know this is like my trademark: update-every-3-months blog. But I'm trying to stay current... I really am.
Well, what happened after the exam can be summarized like this. I felt like crap after grading that exam, because only 4 people passed it. So, I gave them a chance to upgrade their score by doing a paper on Real Time Linux. 20 points if they did a good job. The papers were pure CRAP. It was copy+paste hell. IDENTICAL copies of webpages, down to the fonts they used and the grammatical and spelling errors they had. I said "do it again, and this time DO NOT copy+paste webpages. Try to use your brain for once." (I didn't say that exactly, but that was the main idea). 80% re-did the paper. Same results. I gave up. These people were too used to doing copy+paste.
So, the next thing I did was "let's do the practical stuff". I spent the next month teaching them in the lab individual commands, their syntax and use. They practiced that on the computer at the same time. This seemed to work better than the other classes. At the end of these classes I gave them a practice-only homework. 20 questions, all answers were commands or combinations of commands that they had to figure out. Nothing I didn't teach them or anything, but there's more than one way to do things on Linux. I got a really positive response from this homework. Even the ones that were really behind started improving right away, asking questions and actually working. I was really impressed.
The exam for that unit was a lot like that homework, but with fewer and harder questions. The result: I think only 4 people failed. I was definitely pleased.
Day 8: The exam
I spent 3 days building that exam. I looked at all the papers and the webpages and the stuff I used for my class and slowly composed the document. I wanted a 3 part exam, with multiple choice, true/false and open questions. 10 questions per section. I ended up with 12 on the multiple choice part. In total there where 12 multiple choice questions, 10 true/false questions and 10 open questions. Each of the parts were 30, 20 and 50 points, respectively. I showed the exam to a couple of co-workers and friends. One said "it's cruel". The other said "it's a good exam". So I said "it's good"! :)
I got to the school a full 15 minutes early. Perfect time to prepare everything. I asked the prefect that I needed to get copies for my exam and he told me that I had to do that with 2 days in advance with some secretary upstairs. I was like "WTF?!?" Ok, time to talk to the dean. He told me "give me your exam". I did, and 5 minutes later I had 17 copies in a nice yellow letter-size envelope. "Next time, do it in advance", the prefect told me as he hand me the exams. Shyeah, right :P
Anyway, I got the brilliant idea of using our old lab/classroom this time, since it was a 100% written test. I told the dean if I could use it and he told me "Why don't you use a classroom instead?" "Perfect", I said. They gave me a really nice classroom on the 2nd floor. Properly lit, 2 whiteboards, computer, overhead projector, nice desks and all. But first I had to get my class here. I went to the lab and there were like 5 students in there already. I told them about our new location, wrote a message on the blackboard about it and headed back there. Slowly, all the guys that were in the lab came in and sat down. Still 5 minutes 'till class... I waited for the rest of the class... no sign of them. OK, I handed out the exams. I didn't have any staples, so I asked them to mark their tests with their student ID numbers. 5 minutes into the exam and the rest of the class came in. 10 minutes later I could tell they were having a really hard time with the exam. Vacant looks, the scratching of heads, the faces of pain... I felt sorry for them. 20 minutes later I asked them if they wanted extra questions... They said yes of course. I jotted 4 questions on the whiteboard. They complained a bit, but then I told them that this was helping them way too much. 30 minutes later, the first student gave me his exam. And so they went, one by one, handing in the exam. When an hour and 10 minutes had passed, I had 4 people still struggling with it. They handed in 5 minutes before the end of the class. I caught a few of my students after the exam and they were still talking about the exam. I answered some of their questions and then I left.
I don't even remember what happened on day 7. It was another day of practice. I told them at first if they wanted to go over the material we've covered so far, because the exam was next class. They tried to ask a few things, but they seemed pretty lost and unattentive. So, I decided to continue teaching class. I told them about links: symbolic links and hard links. I told them about pagers: less and more. I told them a bit about how to use grep... and that was the class. I tried to use pseudo-regular expressions with grep... to no avail. I think egrep's better for that.
Day 6 - 2nd day of practice
So I got to the school 15 minutes before class. Plenty of time to prepare for class and all. I got to the lab and, as always, it was filled with people. Most of them were checking their hotmail and stuff like that. I didn't want to kick them out of the lab just yet, because my students were nowhere to be found. I waited until the official start time of class. Still no sign of my students. Only a couple of them already sitting in front of the computers, some even with open sessions in the server, playing around with the commands I taught them. That made me happy. I started class with only 5 people. 3 minutes after that, a group of 5 students came in.
So I continued with the class, talking about how to copy files, how to move files, how to erase files, how to make directories, how to erase them, and so on and so forth. 10 or 15 minutes into the class, another student walks in. It was the guy that didn't show up last class. I gave him his user account, his password and told him how to change his password. On with the class. Later I found out that he was MUDding while I was teaching class. Fun, eh? Actually, most of my students were doing something else while I tried to make another student understand a concept or a command. That, my friends, is extremely frustrating. So the class went on. I can't remember exactly what was the commands I taught later. I do remember teaching them about Standard Input, Standard Output and Standard Error, and how to redirect them to files. I also told them about pipes and how to use them. What I do remember is that I started complaining (bitching would be the more accurate term) about the quality and quantity of their homework. They weren't exactly receptive. They weren't even looking at me. They were doing something else. Again, highly frustrating. I gave them double homework too. The results? Please see next day's post. Hint: nothing changed.
Day 5:
This was to be my first day with actual hands-on Linux practice. The lab/classroom I was using didn't have any connectivity to the LAN, so I asked the dean if I could use another lab. He said "ok, if there isn't another class using it". Luckly, there wasn't. So we settled in this lab. One of the PCs had a connection to an overhead projector that used the wall as a screen. I thought i was going to use it, but it turned out I didn't. First, I needed every PC hooked
up with PuTTY, a telnet/SSH client for Windows (because all the PCs in the lab had Windows 2K installed). A couple of my students had their laptops hooked up with linux, so no problem there. All I needed for the class was a working bash shell on linux. First, I tried downloading it to a floppy disk and try to distribute it on that. I didn't have a floppy, so I asked one of my students for one. It didn't work. While I was at it, another student offered an USB thumbdrive (a 64MB one, I think). That could work, I thought, and he and another student tried that option, while I decided to copy the URL of the PUTTY Download Page to an open shell I had open on the PC with the projector hooked up. That didn't work because of the font, the lighting of the room and the zoom thing. So, I decided to give them a longer method instead. "Log on to google.com, and search for 'putty'. Click on the 2nd link. Download the putty.exe file." That, surprisingly, worked better than I thought, because in a few mins, everyone had their copy of PuTTY working. The guys with the thumbdrive did a good job too, although they only copied the program to a couple of computers. BTW, there was this girl that wanted to enter my class "just as a listener". Turned out she wanted to surf the web on an empty PC I had. Now that I think about it, I should've kicked that girl's sorry ass out of my class, because one of my students turned out late and had to use the PC with the projector. Like I said, I wasn't really using it, but still... Back to the class... After everyone had their putty program opened, I continued to guide them thru the process of connecting to the server we were going to use. After they had everything set up, I had to give away their usernames and passwords to everyone. I had the brilliant idea the day before to do that on paper. But I used the default font and default size and the individual pieces of paper with usernames and passwords that came out were tiny! I put them on an envelope and took them to class. I started calling out their student ID numbers, and they stepped forward and grabbed the little piece of paper. Turns out only 2 of my students missed that class, which is good. Ok. Now I asked them to log on the server. From there everything went smoothly, I think. We only covered a couple of commands, directory navigation, environment variables, file creation with cat, file permissions, chmod, chown and chgrp. I'm basing my course heavily on the manual my friends Jorge and Paco churned out a couple of years ago. Pretty useful stuff. This was back when we were on the ITESM LUG. I gave them some homework too. Actually, this particular piece of homework is on the style of "ask something you don't actually know" kind of thing. Although I think I asked them so... convincingly that they didn't notice that I had no idea about that particular question. Hopefully, they'll get it right. I'm really looking forward to next class.
Day 4. The Installfest aftermath. I believe this day the guys at the front desk managed to produce the key to the lab/classroom on time. I really didn't know what to do this day because we were supposed to start practicing on a linux machine. But the server and the accounts weren't ready yet. So, I had to find out something to teach today. My approach was to try to extract and/or summarize last class' experience and go from there. I didn't expect a lot of responses. I mean, I know how groups like these work. But still, I had a small amount of hope that they would react and actually give me something. How foolish I was. As expected, when I asked them for their opinion on the installfest experience, all I got a lot of mute and confused faces and a couple of "it was ok"s. So much for that. Then I thought about teaching them about disk partitions and the way linux manages them. And so I did. The thing with linux is that there are so many concepts that are related, and this makes it very difficult to determine what to teach first and what to leave for later. I gave them some basic concepts about device files and all, before moving on to primary and extended partitions, logical volumes, and such. Then, I continued to explain more or less the concept of filesystems and how linux managed them. Then, using the mountpoint concept, I tried to explain a bit about the Filesystem Hierarchy Standard. After that, we went over the basics for users: username, password, home directory and shell. We talked about environment variables and such. And before I knew it, class was over. Thank God.
Well, the installfest thing. I managed to produce 3 copies of Mandrake 9.0 and 2 copies of Redhat 8.0. I told the class to organize in teams of 2 or 3. 7 teams were formed. So I was 2 copies of Linux short. I had more copies, but of older versions. I gave one of the teams (the one with a guy that already had installed linux several times) a copy of Slackware 8.1, and this same guy had a copy of SuSE 8.1 and lend it to the other team. This team was using a laptop for their installation (a Compaq Armada that looked kind of old). The Slackware team was using a really battered desktop computer, property of the 'linux expert' on that team. The rest used the computers in the lab/classroom. Generic brand PCs, P-III class. From then on, everything went to heck. I tried to keep everyone doing the install at the same time, but they were too many and I didn't have a clue on how to do it. I tried to stall them on the disk partitioning stage because it was the hardest. I told them to create a 2GB root partition and a 256 MB Swap partition. They didn't get that at first, so I had to be really, really specific. Specific to the point of telling them which button to press and what options to select and such. With that out of the way, everything else was pretty much "click on the Next Button and select the Default option". As they were clicking away it ocurred to me that they should do reports on the installation process, so I told them that. Everyone started taking notes right away. Many said "let us start over again". That means that they weren't paying attention and they were just doing the Wizard clicking thing. No surprise there, really.
One of the teams that were installing Mandrake had a problem with their machine: it froze in the middle of the package installing part. They switched machines and started over. All of the Mandrake installations finished with no further glitches. The Redhat teams, however, were a different story. One of them couldn't get to the package installing part, because the Anaconda (phyton, argh) installer crashed exactly on that step. I thought "it must be the "#$%#$ CDs". They tried twice on the same machine with the same results. The other RH team went thru the installation process without any problems, so I told the other team "watch how they are doing and take notes". But, when the working RH installation team's machine restarted, it froze right after the "Setting Kernel Parameters" line in the boot up messages. So that went to hell to. RedHat - 2, my class - 0. The Slackware guys installed it painlessly, mostly because of the expertise one of their members had. But, when they tried to boot up the new system, they got the dreaded "LI" message. Lilo was f**ked. Great. I didn't even want to bother with that so I said "it's ok, we'll fix it later". The SuSE team didn't have problems, other than they were installing a 7 CD distro on a Pentium Class Laptop. Result: S L O W installation. They didn't even finish copying the packages from the 1st CD when the class ended. They supposedly finished the installation later that night. And they did gave me a pretty decent report (the best I got, I must say).
Day 3. The Install-fest mayhem. Hmmm I think I'll blog later about that. It's almost time for class.
Day 2. I got to class like 5 minutes before the hour. It turns out I have to ask for the key to the classroom, which isn't exactly a classroom, but a big lab/classroom. It has 12 computers in one side and 20 or so chairs and a whiteboard on the other. I wasted 10 minutes of class looking for the teacher that gives the class that's before mine so he could give us the key because he took it and never gave it back. We couldn't find the f**ker, so I had to teach on a secluded 3rd floor classroom with a chalk blackboard. Ugh. I actually love chalk, but when you don't have a chalk eraser, it blows. this was my first class with a little of preparation. I asked my pal to give me whatever he could on the class. He gave me his old schedule and class plan. And based on that, I kind of made my own. I triend first to summarize what I'd talked about last class. Then I started talking about the GNU project, Free Software and its benefits. Then I talked about Open Source, its Licences, its advantages and differences against GPLd software and such. I gave them also a couple of links to interesting sites and a small pre-installation tips because we were going to install Linux the next class. I finished the class 15 minutes earlier.
Day 1. I got a call at my office like 2 hours before the start of my first class telling me that I got the job and that I needed to be at the school at least 1/2 before class in order to put some stuff together before I started teaching. I had NO IDEA what I was going to teach. I thought about preparing class beforehand, but I didn't really know at that time if I had the job or not, so I wasn't going to waste time on something I probably wouldn't use. So what did I do? I winged it. I mean, I had given lectures about Linux before, so there was no problem in getting material to last me the duration of the class. The only inconvenient is that I didn't have any... structure. Luckly, one of the students in the class was my friend and roomate, and he helped me get thru the entire class asking questions. If it wasn't for him I would've been lost.
I decided to start this new blog hoping that I'll update it more often than my other, more private one.
First, a little background. I'm a computer systems engineeer. Recently, I got the chance to start teaching at a local private college. A friend of mine was teaching there and I think he just "got tired of it" and ask me if I could cover him. I said "Sure, why not?". Classes were at night and it didn't really interfere with my dayjob.
I started 2 weeks ago. My classes are tuesday and thursday, at night. 1 1/2 Hours. I got 17 students. So far, it has been a fairly satisfying experience. This blog will try to serve as a chronicle of my experience teaching this class. The name of the class? Operating Systems II. The real subject of the class? Linux.
Here we go...