Roboforbes

Stephen Edwards

Computer Science · Columbia University

Courses Stephen Edwards teaches

What students said

CSEE W4840 · Spring 2026 · 3/5

This class has real pros and cons. The material is genuinely interesting, especially if you want a more concrete understanding of how hardware and software interact. The course covers hardware/software interfacing, bus protocols, device drivers, practical digital hardware design, C, and SystemVerilog. You also get to implement designs on real programmable hardware, which makes concepts like flip-flops, timing, memory, and I/O feel much more real than they do in Fundies. The official prerequisites are Fundies and AP, and the course says digital logic is recommended, but I think you can survive without having taken Digital Logic Design if you are willing to fill in gaps yourself. Prior FPGA or HDL experience is not expected. The most valuable part of the class is the hardware/software interface material. This shows up in the labs and is basically the core of the final project. For the project, you have a lot of freedom as long as you build something useful or interesting that uses custom hardware and demonstrates that you understand the main course ideas. The course is split between guided labs in the first part and a self-designed group project in the second half. The main issue is the instruction. Professor Edwards is clearly extremely knowledgeable, but I did not think he explained the material well from first principles. He often moves quickly through dense diagrams and comp…

COMS W4115 · Spring 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,…

CSEE W3827 · Spring 2013 · 4/5

I took this course with Edwards and Martha Kim in Fall 2012. This is a review of Edwards. His slides are simple and informative. His lecture style is very straightforward: he is one of the most rational and simplistic presenters of complex material I have ever encountered. If I had to take PLT, I would do so with Edwards. He introduces LogiSim, which Rubenstein does not. I told several of Rubenstein's students about LogiSim and it made their lives much easier. But really I'm writing this review because of Edwards' personality and humor. Edwards is a geek's geek. Perhaps he doesn't look like one, but he dresses like one and behaves like one. I find this enjoyable in a professor, but for some it may be an acquired taste, like Scotch whiskey. Some co-engineers of mine have pointed out that he can be rude, surly, and dismissive. I think these attributes seem to present themselves because he is rational above all else, and has a limited amount of time. (~2 orders of magnitude below Temple Grandin. Let's say the average engineer is about 4 below, Vallancourt is 6 below, and the average art history major is 10 below.) I don't think he has ever been rude to me, but in the sense of being hyper-analytical without regard to feelings, Edwards has a tendency to do this. And I personally find it liberating, assuming I am capable of keeping my ego out of the equation. I wouldn't say he equat…

COMS W4115 · Spring 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.

CSEE W3827 · Spring 2012 · 3/5

Prof. Edwards' sense of humor is really quirky. As the reviewers below noted, it could be quirky to the point of being a little bit embarrassing. However, I fundamentally disagree that his humor took away from his teaching. He is by no means a perfect lecturer. He isn't charismatic like Gulati, thorough like Vallencourt, nor approachable like Blaer. However, he still kept the lectures interesting and got the material through to the students. It definitely could be that PLT (which the reviewers below took) and fundamentals are fundamentally different in difficulty. However, if you see yourself having to take Fundamentals with Prof. Edwards, I would say go for it, but be ready for a barrage of quirky humor from your first day.

COMS W4115 · Spring 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 do…

COMS W4115 · Spring 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.

COMS W4115 · Spring 2018 · 3/5

Edwards is very prepared and cares a lot about the students, the course, and his TAs. He is engaging, funny, and not monotonous, but nevertheless his lectures are a bit awkward and hard to follow. That's because he mostly just verbalizes the symbols on his slides. E.g. If there is an arrow from A to B on a particular slide, he would just say "x moves from A to B". To improve his lectures, he could repeat what he is trying to get across more times (so we can have time to think about why x would move from A to B, and be able to more easily do problems of that sort) or actually elaborate on the reasons behind the actions that happen on his slides, to students.

COMS W4115 · Fall 2017 · 4/5

Professor Edwards is an awkward turtle, but likely one of the best lecturers I have ever had. This course is a heavy amount of work, but I can't imagine someone better to inspire a passion for programming language design as well as compilers (although he himself recommends Aho). Like everyone said before, the final project is a monster, it's really the whole course in one project. That being said, this is one of those classes where almost all the theory you learn in lecture can be directly or indirectly addressed by the design and coding of your project. Everyone says to pick an amazing team, which if you are like me and took the course your first sem in Columbia, is like saying try really hard to get lucky. Nevertheless, whoever your team may be, it pays off to work on your project incrementally and try to get everyone involved as early as possible. In the end, I think he mentions almost all projects get good grades although you'll have to work hard on yours. TL;DR: Take this class if you're really interested in the subject matter. Not a good class to tack on for a GPA boost or to check off a requirement.

COMS W4115 · Spring 2017 · 4/5

Professor Edwards is fantastic. He is engaging, funny, and extremely smart. This was a really great class, and I learned a ton. That being said, the project is definitely a ton of work, so start early! The material that you learn in class doesn't help much with the project itself. So, don't worry about starting the project before you feel like you learn the relevant information in class, because you likely will learn the information way after you need to already have applied it to your compiler.

Other Computer Science professors

Plan your semester on Roboforbes — free