I'll be blunt: Angelos Keromytis is not a good instructor. He might be pretty smart and know his stuff, but he just has no idea how to be a professor (sometimes literally; there was a period of 5 or 6 classes where I didn't see him at all and the TAs taught both the lab and lecture classes). A good professor spends time crafting detailed but concise slides with concrete, succinct examples; Keromytis copies code off the web and pastes them into his slides as if they were his own. (Seriously, Google the code. You'll find the exact same contrived examples online that only seldom work; most of the time they'll only serve as basic skeletons of what you need to do to get your code to compile.) A good professor is welcoming and encourages student participation and questions; Keromytis is intimidating and sometimes even humiliates students. For example, about 3/4ths of the way through the course, when a student wasn't sure how to change permissions on a file, instead of replying something reproaching but nevertheless sane such as, "Use the chmod command, as we've been doing for the past two months," Keromytis responded, "Are you kidding? You're kidding, right?" This is not a good way to encourage students to keep asking questions. As if asking questions helped most of the time (see next paragraph). A good professor teaches and presents students concepts and ideas; Keromytis' ego comes across more than his material, and when asked questions, tells you to just look at the man page. Due to both the nature of this course and the professor's incomplete slide examples and his poor teaching abilities, you'll have a lot of questions about what to do. However, half the time when asked something about a particular C function or paradigm, either on Courseworks discussions or in class, Keromytis will just tell you to refer to the man page. While I understand that this class is supposed to mold you into a competent programmer who is fearless of elaborate technical documentation, there is something worthwhile about having a human being explain something to you rather than just reading it online or on a man page, and a good professor shouldn't just tell you to refer to something else nearly all the time. ..Although this professor might be an exception. I feel like I've learned more through Stack Overflow than Keromytis could ever hope of teaching me. In the end, the only saving grace in this class were the two TAs. They seem to be the only ones that cared about us. They would take the time to read through our code line-by-line, helping us find bugs, and they would actually help clarify concepts. Their accents were a bit hard to get through at first, and the English and grammar in the assignments were sometimes confusing (since they wrote them all), but they mean no harm and will gladly clarify if you ask. Not to mention if you write to them about a specific bad grade you received and give reasonable arguments for why you think you deserved more credit, they will entertain your request, and if you present a good enough argument, this usually entails you getting at least one or two points back. I might sound bitter, but don't think this is because I got a bad grade. I didn't. Keromytis is just an astoundingly poor specimen of a professor. I got a good grade in the class, but it was due to my own hard work and the hours I put into labs and homeworks. I wish I could say Keromytis helped me along the way. I can't.
I would not be writing this review if not for the spectacularly bad experience I had taking Prof. Keromytis class. I found his lectures unispired and generally incoherent. For a programming course I find it important to be given examples but his lecture slides were what seems like incomplete ideas carelessly put together so that there would be a semblance of a lecture note. I later found out most of the slides were taken straight off of books, other websites, man pages, etc. As a matter of fact the only good lectures were those where we had guest lecturers. He tended to be somewhat condescending in reponse to questions and requests and I got the impression that he was intentionally misinterpreting the question to make you dumb when in fact that was not the question at all. His labs and homeworks were generally repetitive and again uninspiring. Many of the labs and homeworks were repetitions of one another or just annoyingly tedious...sort of like asking someone to do long division to the 100th decimals. Overall, the worst CS class I've ever taken in my life.
There's a CULPA review of Dan Rubenstein in which the reviewer compares him to a sushi chef who just hands you a dead fish and then criticizes your cooking skills. Keromytis is much worse than that. He's more like a swimming teacher who throws you into a huge pool of acid, then just randomly rambles on about the Summer Olympics. In his lectures, he was always talking about new concepts without introducing them first. Example: one day he was talking about page faults, as if everyone knew what a page fault was. But he had never talked about page faults or pages in class before. I raised my hand and asked "What's a page fault?" He said, "Oh, that's right, I haven't talked about pages yet. I meant to say 'TLB miss', not 'page fault' ". OK, fair enough. But then, a few minutes later, he used the term "page fault" again. He STILL hadn't introduced the concept of pages. You need to be aware of what you're saying... Don't assume we know these things, we don't all have like 8 million PhD degrees in CS like you. It's a CLASS. We're there to LEARN. That means most of us didn't know anything about this crap at the beginning of the semester. Keromytis is one of the many professors at Columbia whose teaching skills were NOT taken into consideration at all when Columbia decided to hire him. If Columbia decided jobs based on teaching skills, Angelos would be fired tomorrow. Basically, he got hired mainly because he's good at acquiring money for the university through research grants. Learn how to run a class. Oh, wait, I guess you never will learn that.. Columbia has tons of professors who were hired like this. All the most selective colleges in America (the "top-tier" colleges) do. It's a serious problem with the American academic world today. Before I started attending Columbia, I heard that the Ivy League colleges were the "best" colleges, and I used to believe it. But now, more and more, I'm finding that idea hard to swallow.
I liked Angelos. He seems intimidating at first (if you judge him by his mugshot on the columbia site), but he's really very friendly and takes time to explain things again if you didn't catch it the first time, and seems to enjoy teaching this class. Consider this class CS bootcamp, though. If you're not completely comfortable with C and the linux kernel, the assignments will kick your ass. They took up all my free time, essentially, but somehow I enjoyed it. I found the midterm to be much easier than I expected, but the final test was pretty brutal. All in all, I would highly recommend taking this course and this professor.
Erm... some people formed a cult of personality around this guy, but I found him to be kind of lousy as an instructor and had a tough time maintaining any interest. A lot of questions would be answered in the form of a long, irrelevant story, which was annoying, and the exams were sort of harsh. Guest lecture from the VMWare guys was pretty cool. I did eventually warm to this class as the term went on, and doing some kernel hacking will make you feel warm inside, so... Plus it's not like you get a choice, really.
In defense of a wonderful professor: Prof. Keromytis is bright, extremely knowledgeable, prepared for class, funny (not dull), and cares about his students. My friends and I found him to be very approachable (not snotty or blatantly rude) and eager to help, though often it made sense to first go to the TA. His assignments covered some applied security technologies (SSL, RSA/AES encryption, SOCKS, DH key exchange, etc.) but not necessarily every single theoretical model discussed in class. C was the language of choice with two minor exceptions for Java. I rate this class 5/5.
The lectures are straight from the book - the prof reads right off the pages. This *sucks* big time coz the assignments are harder and you get *no idea* from the lectures. (Example. You need to do this RSA encryption project. You get the math background from a book somewhere. But to actually *implement* it using those hideous Java BigNums or the grungy GnuMP libs is a whole other story - try computing an inverse mod using GnuMP...) You get little-to-no-help from the prof for debugging etc. The exams are not particularly hard, basically regurg the stuff you saw in class. Overall, if you did the programming then you got something, otherwise don't take this class. Ok, maybe the prof really knows his stuff, but he sure doesn't know how to deliver it. Overall, potential to be a great class, but sucky prof. rating is ** out of five stars.
Like the other review says...Keromytis definitely know his security stuff...however, in his teaching approach, he assumes students know just about as much as he does. His lectures are interesting, however they do not correspond to the programming assignments at all. The assignments are a lot of work, and he just dumps it on you with no help whatsoever. He is somewhat snobby, and not at all approachable...but if you love security, and think you can handle programming it, than the class is for you.
Professor Keromytis has excellent background in BSD security research. That is well and good, and I'm certain he could simply make a class to teach everyone about the work he has done and the publications he has somehow managed to get his name scribbled on. However, he isn't really an Operating Systems professor. That is to say that he speaks from the book, and like other CS classes, you never have to show up and can read the material on your own if you so desire. Just work on the project and present it well at the demo and you'll land yourself an A. Also, he's really not such a people person. Interactions with students and the professor ranged from mild politeness to blatant rudeness, both in person and via email.