CS 2500
Fundamentals of Computer Science 1
Filter Reviews
Class Ratings
Professor Rating
Prof: Olin Shivers / Spring 2022
Apr 13, 2022
Fundies is my happy place. Coming in with almost no coding experience (just a little C++ from Cornerstone of Eng, and a fair bit of poking around in Scratch and Excel over the years), this class bridged the gap for me between seeing coding as some esoteric thing that just didn't make sense and seeing it as something I can and do understand. Lots of people shit on Racket, but in my experience it's really not that bad. The functional programming means you have to think about the problems very differently from, in my case, C++ and Scratch. It feels like good mental exercise.
"The structure of the code follows the structure of the data." The course essentially teaches you how to build code with structured data. You start off with very basic data types and learn how to build up structures of data (structs, lists, trees, etc.) from there. You learn how to write code using recursion and other concepts to process these structures and achieve some desired output.
Olin is great. He's always sharing interesting stories and giving advice. He's met many important figures in the CS world and has considerable experience. He makes class engaging and interactive by constantly asking the class for input and taking questions.
Pay a lot of attention and practice heavily during the first few weeks. It's absolutely essential to get an understanding of basic Racket syntax and structure ingrained in your head early on so you can focus on the concepts for the rest of the course.
Class Ratings
Prof: Ben Lerner / Fall 2020
Aug 22, 2021
Very tough class. The use of Racket as a language is justified by the professors for two reasons: It "helps" instill design fundamentals, and it prevents people from gaining an unfair advantage if they already know the language, since Racket is the opposite of not a commonly learned language. The problem is that Racket is needlessly difficult as a language to use in a general fundamentals course as it was designed for making other languages. This makes it so that many times, you may have the right idea of what to do to code a problem, but the actual coding part takes up 75% of your time and a million tries. This would not happen in a popular language such as Java because there's so much help out there on the internet you can Google. "BuT gOogLe iS CHeaTinG" no it's not as long as you hav...read more
Be prepared to dedicate your evenings and weekends to this class ESPECIALLY if you have a bad HW partner. Switching partners will likely not help either since the only other people switching partners also have bad partners and you will likely end up with another bad partner. If you expect to be able to go out and party on Fridays and Saturdays, think again because you will either not do well in this class or spend so much of your remaining time on it that you do poorly in other classes. For the second half of the semester, I simply chose to drop my focus on this class in order to lift up my other classes. I was taking 5 classes so definitely do not do that, 4 is the absolute max number of classes you should take in a semester with this.
Ben Lerner is not a good professor. He teaches the accelerated sections as well as the normal sections and therefore he tends to go very fast in lecture and treats his normal sections as if they were accel. He is also very snarky and rude to students who have questions that he doesn't view as "good" questions, perhaps they aren't deep enough or he already explained it while rambling through lectures at lightspeed, but either way many students are scared into not asking questions. He is also extremely egotistical and will insult you and hate you forever if you point out a mistake he does wrong or ask about doing anything in a way that you discovered that is different from his way. Lerner is definitely one of the bottom 3 professors I've ever had.
Leave a Review