department
electrical eng

(Electrical Engineering)
May 2021

Positive things: - There is no doubt that Professor Edwards is very knowledgeable about his field and really cares about helping students who are reaching out to him and want to learn from him. - He holds 167468294 office hours a week, so take advantage of them. - He responds to emails in light speed. Areas of improvement: - If you're going to constantly run over the end of class time, you might as well ask the CS Department to make your class 2 hours long, so people have better expectations. Although that would require Edwards to deal with bureaucracy, which I'm pretty sure he won't bother with. It's much easier to fuck with student schedules for him, but it irritates the fuck out of every student. - Set a deadline for grading for your TAs, man. It's not that hard. - Please get TAs that actually know OCaml... Negative things inherent to the course: - Pick a good team or you'll get fucked. The project is monstrous and you can't do it alone. You need good teammates to decide on the project features together and implement them together. - I understand that Edwards tries to teach a lot, which is why we have individual assignments, midterm (normally, it was canceled this sem), final, a monster project, a ~250 page final paper on the project... but man, this is a lot of work. If you're not ready to put in the hours, don't take this class. - Docker and OCaml can be very frustrating, but they will uncover new areas of software development for you. Advice: - Test everything. He won't accept anything that's not tested. - Start the project early. - Edwards is snarky, don't take it to heart. - If the assigned TA is useless, stop wasting your time meeting with them immediately. - Trust Edwards in that when he's giving project advice, he's thinking the best for you. He's also not out to get you in the exams.

May 2021

Ok first I took this during a COVID semester. With that being said, I personally don't think Edwards taught. He kinda just read off his old slides and circled some things. I also think we spent way too long on the wrong material and then suddenly material in the middle-back half of the semester was essential to the final project. It was hard to start parts of the final project early since we didn't know a lot of the material needed to actually build our language.

Apr 2021

Stephen Edwards is objectively an outstanding professor who made the online year a little better for me. I took both of his classes, and I thought he adopted to the online format very well (he makes great use of Zoom's chat feature for questions). He is incredibly organized, cares a lot about his classes and his students, and has some outstanding TAs (Ben Flin and Hans Montero were amazing). Not to mention, he is one of the only Professors in the CS department who actually tries to get to know undergraduates in his classes! I really appreciated this and feel like I actually know him now. Oh, and did I mention that Prof. Edwards is absolutely hilarious? I think the quotes above will suffice, but his slides have great memes, his Facebook might be the most entertaining of any Professor's, and he is incredibly witty. If you enjoyed Donald Ferguson's snarky humor, Professor Edwards is for you; if you have a thin skin, you might want to stay away, since he will absolutely sass you back. I, personally, think it is wonderful, and I think most people do as well. As for the actual classes, Parallel Functional Programming is an introduction to programming in Haskell. The first half is sequential Haskell and the second half is parallel Haskell. Haskell is nothing like other programming languages you have been exposed to (unless you have taken PLT and are used to OCaml), and it probably does warrant an entire course since it forces you to think in an entirely new way. There are 5 HW assignments and a medium-workload final project that you spend the last month or so on and do in groups of 2. I'd absolutely recommend this to anyone looking for a chill class, even if they aren't on the systems track (Edwards has said this is similar to a 41xx class). Programming Languages and Translators is an introduction to Compilers, and for many students, functional programming with OCaml. I was at the advantage of having taken PFP beforehand so this wasn't a huge jump for me, but it is for many. You also learn some theory. There are 3 light-ish HW asignments, a final, and a very heavy group project that you do in teams of 3-5. Pick a good group! I believe both classes were curved to a B+, so it is very possible to do well. I cannot recommend Prof. Edwards any more than I already have; seriously, take a class with this man! If for nothing else, the memes are worth it.

Apr 2021

Stephen Edwards is objectively an outstanding professor who made the online year a little better for me. I took both of his classes, and I thought he adopted to the online format very well (he makes great use of Zoom's chat feature for questions). He is incredibly organized, cares a lot about his classes and his students, and has some outstanding TAs (Ben Flin and Hans Montero were amazing). Not to mention, he is one of the only Professors in the CS department who actually tries to get to know undergraduates in his classes! I really appreciated this and feel like I actually know him now. Oh, and did I mention that Prof. Edwards is absolutely hilarious? I think the quotes above will suffice, but his slides have great memes, his Facebook might be the most entertaining of any Professor's, and he is incredibly witty. If you enjoyed Donald Ferguson's snarky humor, Professor Edwards is for you; if you have a thin skin, you might want to stay away, since he will absolutely sass you back. I, personally, think it is wonderful, and I think most people do as well. As for the actual classes, Parallel Functional Programming is an introduction to programming in Haskell. The first half is sequential Haskell and the second half is parallel Haskell. Haskell is nothing like other programming languages you have been exposed to (unless you have taken PLT and are used to OCaml), and it probably does warrant an entire course since it forces you to think in an entirely new way. There are 5 HW assignments and a medium-workload final project that you spend the last month or so on and do in groups of 2. I'd absolutely recommend this to anyone looking for a chill class, even if they aren't on the systems track (Edwards has said this is similar to a 41xx class). Programming Languages and Translators is an introduction to Compilers, and for many students, functional programming with OCaml. I was at the advantage of having taken PFP beforehand so this wasn't a huge jump for me, but it is for many. You also learn some theory. There are 3 light-ish HW asignments, a final, and a very heavy group project that you do in teams of 3-5. Pick a good group! I believe both classes were curved to a B+, so it is very possible to do well. I cannot recommend Prof. Edwards any more than I already have; seriously, take a class with this man! If for nothing else, the memes are worth it.

Apr 2021

Great class. Some issues with the curriculum: we spent way too long on things like DFAs, NFAs, and regexes, which are covered pretty fully in CST, which is a prerequisite for this class, so that was a bit of a waste of time. We also spent a bit too long on covering code generation, which became repetitive, so we did have to rush a bit at the end. But codegen is really important for the project, so it shouldn't be ignored, but spending ~5 classes on MicroC codegen was a bit much. Edwards is a great lecturer. He's very funny and presents the material in a way that makes it very conducive to picking it up rapidly (or wickedly fast, as he would say). His lectures were actually a joy to go to. The best part of this class imo is the project, though. One of the most rewarding pieces of work I've done at Columbia. It really is a great synthesis of all the course material, and juts is a lot of fun to work on. Start work early, and work consistently. It will be a great time.