Rough Book

random musings of just another computer nerd

Category: School

Remembering a great teacher

1995 was a difficult year for me. I had finished the 8th grade at Indian School Muscat. However, instead of joining the 9th grade with my friends, I had to move to an entirely new school, Indian School Al-Ghubra, which was much further away and worse, was our arch-rival. My first few weeks at the new school were horrible. I missed my friends terribly; everyone was a stranger and I had a hard time adjusting to the way things were done at the new school. My first mid-terms were a disaster. While I had consistently scored in the 80’s to 90’s in my old school, here it was a different story. My grades were pretty bad. Looking back, I think it was mainly due to the stress of moving to a completely new environment. I was unsure of myself and I simply wasn’t used to the way things were done.

I still remember when I got my Math paper. I had scored a dismal 37.5 out of a 100. I was shell-shocked. I had never scored that low on a math paper. As I stared at the paper, tears welling up in my eyes, I heard a gentle voice tell me, “It’s only the first exam. You’re new here and I’m sure you’ll do better next time…” I looked up to see my Math teacher, Mr. Vida, looking at me with a little smile on his face. I didn’t believe him then, of course. More urgent things were at hand, namely soon-to-be irate Indian parents whom I would have to answer to, at home. It seemed rather insignificant and pointless to me at the time. But looking back, I can see it for what it truly was: a concerned and kind teacher taking the time to comfort an obviously-distraught student.

Over the next few years I became very familiar with Mr. Desmond Vida, and his wife Mrs. Pushpa Vida, or as they were known around ISG, “The Vidas”. I used to go to after-school tutoring sessions for Math at his place, which in addition to being extremely helpful were also quite simply, fun. A lot of my classmates were there and our study sessions regularly had less-serious interjections were we all laughed and joked, along with Mr. Vida. Those four years at ISG were formative and extremely important since they played a huge part in molding me and shaping me into the person I am today, and the Vidas were a huge part of that.

Mr. Vida didn’t simply teach us Math. He did more than that. He was a mentor and a guide who helped his students realize their potential. He consistently encouraged us. This was especially poignant to me, a student who never really fit in with the “learn-by-rote” mentality of the Indian system of education. Oftentimes while I was wondering if something was wrong with me, he would remind me that no, there was nothing wrong, I was a smart kid, and that I was simply better at applying knowledge than regurgitating it (an opinion that was vindicated years later when I finally moved to the US for college and started acing my Math classes).

After 10th grade, Mr. Vida taught us English. He was as effective in English, as he was in Math. He didn’t limit himself to the syllabus, but deliberately went outside it. We would hold long discussions in class about the subtleties and nuances of the prose or poem we were examining. To help us understand our lessons better, he had us present plays on some of the subject matter. I fondly recall those after-school rehearsals, still.

I graduated high school in 1999 and Mr. Vida was there to congratulate me and everyone else. He told us how proud he was of us and that we would all go on to do great things. That was over 13 years ago. Over the years we kept in touch intermittently through email and eventually, Facebook. Mr. and Mrs. Vida moved to Australia and continued doing what they do best: teaching.

Then this morning I found out that Mr. Vida had passed away due to an accident. I read the words, but they didn’t register. The kind, intelligent, jovial man in my mind’s eye didn’t jive with what I was reading. I was shocked. Fate snatched an exceptional man away from us, before his time. Like I said before, Mr. Vida wasn’t just a teacher. He was an exceptional human being. He guided us without telling us what to do. He encouraged us and helped us along when we faltered. He was never one to patronize either. Even though we were still somewhat childish, he understood that we were on the cusp of young adulthood and treated us with respect, and without passing judgement. He was always there for us to turn to if we needed help. When I heard the news, long-dormant memories came flooding back: the laughs, the jokes, late-night Math tutoring sessions before exams, and especially before the 10th grade board-exams. The play rehearsals where we’d end up fooling around (much to Mr. Vida’s consternation) rather than doing anything useful. Cruel irony then, that these fond memories were now tinged with sorrow.

Mr. Vida, you were a wonderful teacher and you were an inspiration. I am honored to have been taught by you. You will be missed, but not forgotten. Our thoughts and prayers are with Cruz and Mrs. Vida in this difficult time.


Guru Brahma Gurur Vishnu
Guru Devo Maheshwaraha
Guru Saakshat Para Brahma
Tasmai Sree Gurave Namaha

Translation:
Guru is verily the representative of Brahma, Vishnu and Shiva.
He creates, sustains knowledge and destroys the weeds of ignorance.
I salute such a Guru.

The State of Computer Engineering

I was having a conversation with a few good friends (old college buddies, and fellow nerds) over a couple of beers a little while ago. We mainly reminisced about certain key classes we took while we were at ASU, and also about the state of CS and CSE graduates today. Indeed, the very nature of the degree. First, a little bit about those key classes that we took and still think about. These classes are CSE 225, CSE 421, CSE 423/438, and CSE 521. I wasn’t able to take CSE 423 and 438 because they were discontinued by the time I had completed the required prerequisites. But I was able to take the other three. All three classes deal with assembly programming. Assembly programming is the lowest level of programming there is. You directly control the CPU by sending it instructions. These instructions are actually decoded into a bit-pattern, which essentially translate into a series of on and off signals that travel to various places within the CPU (or even associated memory, I/O, etc.) and make it do cool stuff. At this level, you don’t have any of the niceties of higher-level programming-languages. There are no variables. There are no function parameters. There is no easy way to do I/O. Data can sometimes be program code and program code can sometimes be data, depending on your point of view. It’s a highly restrictive and immensely liberating and powerful environment at the same time. It takes a lot of effort to code in assembly, and much more effort to code well.

My introduction to assembly programming began with CSE 225. The class was taught by Lance Johnson and dealt with the Motorola 68HC11 (now produced by Freescale Semiconductor). I was pretty nervous about the class because I had heard how hard it was. As it turned out, yes, the class was hard. I put a lot of time into the class, and in the end it paid off. I got an A. The next class after CSE 225, was CSE 421 and this was taught by Dr. David Pheanis, one of the best professors I’ve ever had. Lance taught CSE 225 the same way Dr. Pheanis taught CSE 421, although it wasn’t as difficult. Both classes had “shotguns” (unannounced quizzes) and lab demos. In both classes you had to document your code thoroughly. In addition, you had to demo your code to the TA’s and every time you failed a demo, you would have 5 points knocked off your score for that lab. Oh, and in addition you were also graded on the efficiency of your lab solution. Embedded environments are usually sparse when it comes to resources, so getting your program to be small and fast is very important. Your efficiency score was calculated against the professor’s score. For every byte that you were over the optimal solution, you get one point taken off your lab score. If you ever beat the optimal solution, you got additional points. Pretty exacting standards.

In CSE 421, it was even harder. Dr. Pheanis would grade you on time on some of the labs as well. You also wrote code on the Motorola 6800, which was the predecessor of the 6811. As a result you were limited on the number of registers you had, which made it harder to write code (well, efficient code). You also had to have a very good amount of documentation. Each lab had a General Overview, User’s Guide, and Internal Overview. Any subroutines in your lab had to have its own User’s Guide and Internal Overview. Stack usage had to be properly documented. Logical groups of your assembly code had to be extensively documented and you had to explain the what, how, and why of your code. So if your program wasn’t adequately documented, you lost points. Our final lab involved implementing an Asynchronous RS-232 receiver and transmitter driver for the 6800. At the end of CSE 421, I learnt a lot of useful things. For one, I learnt how to write efficient code (something that has carried over into my high-level programming) and I learnt how to document my code really well. I also learnt how to be a good programmer.

The last class I took with Dr. Pheanis was CSE 521. You could register for this class, but more often than not, Dr. Pheanis invited you to take the class if he thought that you were a good student, and that you could handle the course load. I was privileged enough to be invited by Dr. Pheanis. In CSE 521, you write assembly code for the Motorola 68000. The 68k is a beautifully designed processor. The instruction set is almost completely orthogonal, and in general, it was a complete delight writing code on it. On a side note, writing on the 68k spoiled me to the point where it was impossible for me to pick up x86 assembly. The design is just atrocious. Anyway, the class was hard. I took it during my final semester at ASU, and I had two other classes (that I actually needed to graduate), but I spent the most time on CSE 521. In addition to the usual stuff you got graded on in CSE 421 (demo-passing code, efficieny (time and speed), and documentation) you were also graded on English grammar. I remember getting my first lab back and finding red marks all over it. Granted, I had done a little better than my classmates. I’ve always been comfortable with the written aspect of the English language and I thought I had a decent grasp of the language. Well, it wasn’t as decent a grasp as I had thought. I was introduced to problems such as “it or this without proper antecedent”, “the scope of ‘only'”, and “proper hyphenation”. Oh, there was also the infamous “Avoid ugly passive voice” stamp. Examples of such problems:

An “it or this without proper antecedent” grammatical error occurs when there is ambiguity in a sentence about exactly what “this” or “it” is referring to. For example, “Susan bought a dress and a hat. It was green.” In this example, we can’t say what “it” is referring to; it could be the dress or the hat. The sentence should be rewritten: “Susan bought a dress and a hat. The hat was green.” The “scope of only” is an interesting one. Consider the following sentence: “John only drinks water.” You might think it means that John only drinks water and not any other kind of drink. Actually, the only restricts the scope much more than that. What the sentence actually means is that John only drinks water and does nothing else. He doesn’t eat, sleep, sit, stand or do anything else for that matter. He only drinks water. The correct version of the sentence is “John drinks only water.” In general, you want to use “only” as late in the sentence as possible. Hence, the “scope of only”. Then there’s “proper hyphenation”. You generally want to use hyphens with compound nouns and adjectives. For example, “dining table”, “fish tank” and “operating system” are compound nouns whereas “black and blue” and “extremely hot” are compound adjectives. When you use an adjective to describe a compound noun (or vice versa), you need to properly hyphenative. Otherwise, the meaning of the sentence will be ambiguous or nonsensical. For example, consider the colloquial expression “It was a cold ass day”, meaning “It was a really cold day”. Does it mean it was a “cold-ass day” (compound adjective “cold-ass” with noun “day”), or does it mean it was “cold ass-day” (adjective “cold” with nonsensical compound noun “ass-day”)? Properly hyphenated, the sentence should read “It was a cold-ass day”.

You might wonder why English grammar is so important in an assembly programming class. Programming is more than just writing code. Once you write something, you (or someone else) needs to maintain it. So it is generally helpful if you can tell what your code is doing. This is especially important in assembly programming where it is not immediately obvious what the code is doing. I remember how Dr. Pheanis used to say that Engineers generally have terrible documentation skill. This is very true. I cannot count the times I have scratched my head looking at code I only wrote a few months ago, trying to figure out what exactly I was trying to do.

Now to the original point of my post. Larry Wall (creator of Perl) along with Randall L. Schwartz and Tom Christiansen outlined the three virtues of a greate programmer:

  • Laziness – The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don’t have to answer so many questions about it. Hence, the first great virtue of a programmer. Also hence, this book. See also impatience and hubris.
  • Impatience – The anger you feel when the computer is being lazy. This makes you write programs that don’t just react to your needs, but actually anticipate them. Or at least pretend to. Hence, the second great virtue of a programmer. See also laziness and hubris.
  • Hubris – Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won’t want to say bad things about. Hence, the third great virtue of a programmer. See also laziness and impatience.

In addition to the three listed above, I’d like to add another one: Passion. This is the virtue that makes you like writing code. This is the virtue that makes you sit up till 3 A. M. in the morning hacking out a Mandelbrot-Fractal Generator or an artificial-life simulator just because you think it’s a cool thing to do. This is the virtue that makes you crash your box because you decided to do something bleeding-edge and incredibly unstable and dangerous just because you wanted to. This is also the virtue that gives you the desire to learn; the urge to acquire newer and better skills and to be a better programmer. Passion, is unfortunately in short supply these days among most programmers that come from college (or at least, ASU). In part, I blame the administration itself. When I was in college, the department tried very hard to force Dr. Pheanis out of his class, ostensibly to “modernize” the curriculum. Their rationale was that the processors used in Dr. Pheanis’ classes were “outdated”. Apparently they weren’t able to grasp the concept that assembly programming is not about using the latest and greatest processors, it is about learning the fundamentals. Dr. Pheanis’ last class was in spring of 2004. He’s a professor emeritus, and no longer teaching at ASU. ASU’s current computer engineering curriculum doesn’t have many interesting courses, for example, as I found out from Marc, ASU isn’t offering a compiler-design course anymore. In an urge to make the course more “modern”, I think a lot of soul has gone out of the program. Just taking all the classes doesn’t turn you into a Computer Engineer or programmer. It’s true that I learnt a lot of theory and a lot of other useful stuff from the classes at ASU, but a lot of times I went out of my way to learn things on my own. When I started college, I didn’t know the first thing about Unix. I knew how to write code (I wasn’t great… yet 😉 heh), but that was it. During my first semester I taught myself how to work on a Unix system. I learnt how to use vi and how to write shell-scripts. Over the years I started teaching myself more and more stuff – I taught myself Perl and PHP, and picked up the finer points of web development. I taught myself how to set up and administer a FreeBSD server. What also helped me a lot was that I was around people who found these kinds of things as interesting as I did. The classes and professors fostered the type of environment where you felt inclined to learn more than just what the curriculum offered. There are graduates these days who don’t think there are other development environments besides the GUI. I was writing code on a Solaris system when I was in college. My development environment consisted of the commandline and vi. It’s actually only recently that I’ve been using IDE’s (I hadn’t really used an IDE since Borland’s IDE for C++, and that was during my junior and senior years of highschool), and while I definitely find that they enhance productivity (especially for large projects), I feel equally at home hacking on the commandline. There are graduates today who don’t know anything more than what they’re taught at college (I like to call them “cookie-cutter programmers”). They know Java and/or C++ (and perhaps Lisp, and C). They know data structures, and maybe they’ve heard of Linux. But they really don’t know anything besides what they’ve been taught (I don’t think all is lost, however, there still are graduates who do more than just the curriculum – who are passionate about the field).

I guess what I’m trying to get at, is that I think CS programs at should should foster an environment of self-discovery, self-learning, and exploration. Unfortunately, I find that this is not the case with ASU’s CS program these days. Compared to what it was when I’ve gone through, it just contains a bunch of stock classes that have replaced the older ones. The reason? Supposedly “accreditation”. In fact, I remember feeling extremely disappointed when Google closed their doors in Tempe. The Google office was very close to the ASU campus. Their closing told me that they weren’t able to attract good talent from ASU, and that’s just disheartening. Perhaps the heads of the CSE department at ASU should be more concerned about giving students good, practical knowledge, and teach them how to be better Computer Engineers and Programmers than just being concerned about accreditation.

WLC and WTF

I’m going out of town for two weeks for WLC (Warrior Leader Course). It’s a course I’ve had to take after I got promoted to Sergeant while I was in Iraq. I never had a chance to go to it because there was a lot of confusion with the standing-down of the old artillery unit and the formation of the new infantry unit. My readiness NCO was able to get me a class starting this week. The class is in Utah (fun!) and I will be learning a lot of “NCO stuff” like commanding formations, marching, conducting PT sessions, OP orders, and things of that nature. I think it will be pretty interesting. The first week is classroom stuff, and the second week will be field-training. I’m going to see if I can take some pictures. I’ll post them here when I get back.

The other thing that I wanted to write about was an experience I had in college. I’ve been reading The Daily WTF a lot, recently. It highlights examples of bad code, horrible design, and stupid management. Things that basically make you go “WTF?!”. Anyway, some of the articles on the site talk about incompetent professors. After reading that, I was reminded of a terribly idiotic and incompetent professor that I had in college. This happened during the first semester of my senior year (spring of ’03), and of course, I had full-blown senioritis. Scratch that, I wouldn’t say that I was apathetic; I just figured out how to put in the optimum amount of effort. This meant that I would try and see if going to class gave me any value. If it didn’t, I would pretty much teach myself the material. This meant more time for me to party and drink. I’m sorry, I meant study and review. Yes… that’s right. Anyway, the class I had was called CSE 423. I don’t remember the title of the class, but it had to do with VHDL. In simple words, VHDL lets you design logic circuits programatically and then configure an FPGA (Field Programmable Gate Array) to behave like the circuit you designed. It’s pretty nifty and interesting stuff. I would have enjoyed the class if it hadn’t been taught by this retard of a professor. This professor, let’s call him R. C. is as terrible as they come. He came to class unprepared, his slides were full of errors, and he often had no clue what he was talking about. In addition, he seemed to be passively arrogant. Initially we all liked him because he seemed to have a lively personality. But that didn’t make up for the fact that he pretty much sucked. On the rare occasion you actually got through to him (he almost always directed you to the TA – who was nowhere to be found and checked his email once a millenium) to discuss a problem in your homework (let’s say you were docked a point and you wanted to know why) he would be extremely unhelpful. Most professors explain to you why you are wrong, they don’t just tell you “You’re wrong” and end the conversation.

I remember how I had to leave class early once to meet with my readiness NCO regarding some paperwork. I let him know I was leaving. He wasn’t happy and decided to give quiz to the class just because I left. When I talked to him about it, he told me that he needed a letter from my readiness NCO. I gave him one, and after that he gave me two homework questions to make up the quiz. He randomly picked the last two questions in the list of homework questions for the chapter. When I tried to ask him some questions about the homework, he told me that he hadn’t read them and that I was on my own. Now that I’ve told you what kind of person he is, on to the actual issue. We had a midterm that was about 30% of the grade of the class. In that midterm there was a 30-point question having to do with a VHDL implementation of a state machine. I wrote a correct solution to the problem and I was surprised when I got my paper back and I received a zero. I got a 60% on the test, when I should have received a 90%. I went to him to discuss the problem. There were a bunch of angry and aggravated students in the lab. All of them had been unfairly graded on the test. I mean, what do you expect when you have an idiot for a professor? I went up to him and patiently explained my solution and how I arrived at it.

He told me, “It’s wrong.” I asked him, “How? Can you explain to me what’s wrong?” He said, “Your state machine is wrong, so your implementation is wrong.” Once again, I patiently shows him the state machine with all the correct inputs (or transition conditions) and outputs (or states) and how the VHDL implementation corresponded to it. I asked him, “How can you say my state machine is wrong?” He responded and I kid you not, “Your state machine is wrong because the outputs are supposed to be on the arrows, and the inputs are in the circles. The arrows come out of the circles, so they are outputs.” I stared at him in disbelief for a few seconds. I honestly could not believe what I was hearing. Every computer engineer worth his salt knows what a basic state machine looks like. I argued with him for about 10 minutes. Other students were standing around me, shaking their head because they couldn’t believe what they were hearing either. He finally said, “No, you’re wrong. This conversation is over.” I stormed out of the lab, fuming. Due to the idiocy of my professor, I got a B in that course when I should have received an A (don’t even get me started on the final project. Apparently he thinks it’s totally fair to give you a zero on a question that he didn’t even ask you). I eventually was vindicated later that year when I was part of the Student Advisory Committee. We were a bunch of students who met with the department heads so that they would have a better idea of what the students felt. Basically, liaisons between the student body (the CS/CSE majors anyway) and the faculty. They were asking us about our opinions of professors and I told them exactly what I felt about R. C. I was pleasantly surprised when they told me that they had heard the same complaints from numerous students. “He won’t be teaching here again”, is what they told me. Ahhh… sweet victory. I’m not a vindictive person, but this was something I felt very strongly about and I felt that I was treated unfairly. I was glad to know that others felt the same way as well.

Anyway, so that’s my “WTF?!” story. I probably won’t be posting from my WLC training, so I’ll try and post after I get back. Until next time.

Graduated

I graduated today. I could have finished in 3.5 years if I hadn’t joined the Army. But that’s a decision I don’t regret in the least. Five years at ASU and I have learnt a lot. I can write assembly code, do latin dancing, and field strip an M16A2. Although I didn’t learn the last one from ASU.

The Graduation ceremony went by quick. It was awesome though. I can’t believe I’m done. Now I’m in the real world.

There is a lot more I want to write. But I’ll do that later…

Elite

I got an A in CSE 521. Wooohooo!

Dr. Pheanis’ Surprise Retirement Dinner

Today we had a Surprise Retirement Dinner for Dr. Pheanis at C-Fu Gourmet. I didn’t find out about this until two or three days ago. Apparently this thing had been in place for a while. I was planning something separately for him, when Marc sent me the evite for the dinner. I sent out the invitation to forty more people. I didn’t realize that there were no spots left! They managed to open up a few more, so I was able to get in. But that really didn’t matter, because they squeezed in more people anyway!

The dinner was amazing. It was so awesome to see the love, admiration and respect that was there. It is undeniable that Dr. Pheanis is an amazing professor and mentor. Every person in that room has learned something from him. He has instilled so many good values in us. Honesty, perseverence, good work ethics, responsibility, and finally… good documentation (with good grammar) and how to write REALLY GOOD code. I can not even begin to describe what an amazing man he is. He truly is one of the few people I have met, that has inspired me so much. I am not the only person either. There are 109 others at the dinner who feel that way… and 90 others who couldn’t make it, that feel that way too. I shall remember everything he has taught me. I feel honoured and consider myself lucky to be his student.

He received at least three standing ovations from us. He was so touched and moved. Especially when he received a framed certificate that said “To the Greatest Professor Ever, Thank You”. He was moved to tears.

I don’t think any of us there, could have thanked him enough. I wish his retirement had been under better circumstances. But I think that even if ASU doesn’t care, his students and his colleagues do. That’s really all that matters. We will all remember him for what he taught us and for what he is – an excellent professor.

Dr. Pheanis’ Last Class

Today was Dr. Pheanis’ last day as a professor. We were his very last class. He said he would remember us the most because we were his last class. I think it is very fitting that the CSE 521 class would be his last. We are essentially (in his view – I am not just saying this), his best students… the “creme de la creme” as he put it. There are very few students that he invites to take CSE 521. CSE 521 is a hard class and he invites you to take it only if he thinks you are smart enough to take it. I am glad he thought I was smart enough to take it. I like to think that we represent his success as a professor.

ASU is losing an excellent professor… not that anyone in the management cares because they have their own f**king agendas. I really wonder what will become of the embedded systems department once Dr. Pheanis leaves.

I really am glad to have been taught by him. It really is an honour.

Pictures from Boston and Vegas

I’ve uploaded two sets of pictures.

The first one is from my Spring Break trip to Boston, where I visited Michael and Laura. The second one is from my trip to Vegas, this last weekend. The first one is titled “Chez Michael et Laura”, and the second one is titled “UNLV Dance Competition 2000”.

People thought I was dead or something

I got a rather concerned phone call from Sadhana yesterday morning. Apparently, she and everyone and their mom were trying to get in touch with me. Apparently I was supposed to be in some presentation or something. I started wondering if I there was a class I had enrolled in, but forgotten to go to or something.

What had actually happened was that I was in the ground floor of Hayden Library and I was there for quite a while. I don’t get any reception there so no one could get in touch with me. A lot of people were trying to get in touch with me.

The next day, Chris said him and everyone else were wondering if I had died or something. They were worried. Interesting confluence of events.

I hate ECE 334

I haven’t written in a while. Let’s see… I HATE ECE334! It is the WORST CLASS EVER! I HATE IT SO MUCH!

There. That felt SO much better. STUPID CLASS. Now I have to do these DUMB projects that I don’t really give a CRAP about. Some stupid transistor amplifier stuff. Absolutely ridiculous. These labs are so freaking asinine. Then I have to do the stupid homework for that class. Ugh. I hate it. The professor is doing his best to make sure we understand, but to no avail really. He just goes over theory and doesn’t do any problems in class. I don’t give a crap anymore. Hell, I’m graduating this semster and I have a cum laude. I would’ve had summa if it wasn’t for a dumb shit of a professor who doesn’t know what a finite state machine is. According to his dumb ass, the outputs of the state machines go on top of the arrows. Is that DUMB or what?

Do I seem exceptionally bitter? I am not really. I am just sick of doing stupid stuff. It’s not because the stuff has some intrinsic “stupid” quality. The stuff has become stupid because of terrible professors. In my senior year, in all the 400 level computer classes I have taken, I have had only ONE good professor. The rest of the SUCKED. ONE IN PARTICULAR – CAN YOU GUESS WHICH ONE?! The only class that I like right now is one I didn’t even have to take – CSE 521.

I hate this week. I just want to get that homework and lab done…

All original content on these pages is fingerprinted and certified by Digiprove
%d bloggers like this: