Advanced Programming · Computer Science
7 Labs (the last 2 take a significant amount of time) 3 exams (all very difficult but very fair in my opinion) The class is curved but the grade breakdown is rough due to his unique cutoffs - you really have to do extremely well to get an A, but average is curved to B+ so anything below an A is very doable.
theoretically light but actually time-consuming: weekly labs(so annoying), 4 homework assignments (usually 2 of which are huge, and you will be made to parse in all of them), 2 midterms and a final
Heavy. 1 "lab" (i.e., homeworks) per week that takes on average 4-6 hours (extremes were around 8-10). 3 "homeworks" (i.e., longer projects) thoughout the semester. The first one was intense and took some time, but the following two felt like they could have been labs and were much shorter. Note however: you will be pressed for time throughout the course. You need to eat, sleep, and breathe Advanced Programming (especially if you take it concurrently with Data Structures--a poor choice, in my opinion. Both have heavy workloads). Whenever you have spare time, work on your lab and homework. Especially during weeks when homeworks are due, since these would often be due 2-3 days after a lab, in order to keep the labs on schedule. Midterm and final are both in the CLIC lab and are programming assignments. Midterm was doable (avg 68%) but final was difficult (avg 59%). It had two parts, one in C and one in PHP. The C part relied on one concept we learned for basically one lecture, and if this didn't work, the entire part wouldn't work. Protip for exams: when you reach bottlenecks like this, stop messing with it and spend your time wisely by coding other features, even though they may not be testable due to the aforementioned bottleneck. If your code is right, you'll at least get a few points for it.
7 Homework Assignments throughout the semester worth a total of 35% of the grade 2 Midterm Exams each worth 20% A Final Exam worth 25%
One uber large uber hard project, and a buch of lab projects, also hard, but doable. Its ap, dont expect a breeze. Write the code.
This class was genuinely one of the best classes I've taken in my life - probably the most I've ever learned in one class. I would definitely recommend taking this class with Jae as his version really demands deep knowledge of the material, which is super useful not only if you want to understand C and systems well but also for testing your abilities to understand things deeply in general. That being said, the class can definitely be very difficult. The only reason I would consider not taking this class is if getting a 4.0 really matters a lot to you.
I went into the class thinking it's the worst thing ever. I think the assignments are pretty similar to data structures and are not as bad. i will say the tests are very hard. expect the class average to be <50. he is not the best at explaining concepts so you will have to do a lot of self studying. he also talks VERY slow so the lectures can be very boring. i would watch the lecture recordings on 2x speed and then he sounds like hes talking at a normal speed
I have to dissagree with what other majors have been saying about this course, if not what they have been saying about Professor Sklar. Professor Sklar is the nicest person in the world and will do everything in her power to help you if you actually go to her. She is pretty quiet, and won't come to you, even if she thinks you're doing badly. If seek her out though, I have never seen a professor go to such lengths to help her students. She even has an aim sn just to help students on the nights before big assignments are due. She is usually a little bit late everywhere but she's a fine lecturer and presents the material she has to present clearly (ps people complaining about her writing code on the board a lot, all of the code up there is usually on the website). The class however, is a complete nightmare. None of the annoying weekly labs are that hard, and the homeworks are definitely resonable, but you switch languages every week. I suppose if you really know you're stuff (ie you've programmed in pretty much all of the languages others have mentioned some before) you can skip a bunch of the lectures and labs and do fine in the class. However, even if you're a major, if you're just taking the class right after 1007/1004 you're going to be in pain (even if you did well, I got an A in 1007). And looking up syntax/googling everything for all of the assignments all all the time. Th…
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…
A staple of the Columbia Computer Science Department and John Hui did not disappoint with his debut as a lecturer, I am happy that I took the course with him.