A truly one-of-a-kind class, with Aaron Bloomfield who I firmly believe is the best teacher I have had at UVa.
This class was what I needed to get to the next level as a programmer. By the end, I not only had a comprehensive knowledge of how to program in C++, but also could give the algorithm analysis and intuitions behind my code.
Coding is something that can only be improved with deliberate practice. While comprehensive and sometimes difficult, the labs in this class gave me this practice and more. While it was a tough transition from other classes, it was such an amazing learning experience that I do not think I could have gotten any other way. Grade-wise, I think it is fair to say anyone who dedicates time, starts early enough on assignments, and has a genuine interest in Computer Science can expect to perform well. Taking this in a lighter semester will also allow you to fully appreciate the class which I would recommend also. Regardless, don't listen to rumors saying this class will ruin your life; if you start early you will be totally fine. A few final tips: go to Sunday office hours as the later you go the more packed they will be; ask the professors questions on things you don't understand, the class seems daunting at first, but Floryan and Bloomfield are so knowledgable they will help you instantly just talking to them; do as many past midterms before exams as you can, they're great prep; PSEUDO CODE - this is actually really important - I think one reason I really succeeded on the labs was I drafted out everything first on paper, and walked through it to make sure it made sense - then I started coding and it just flowed easier; code a little test a little - constantly test small parts of your code to make sure the whole thing works - will be way easier when mistakes come up; USE THE DEBUGGER - such an awesome practice you learn in this class that actually saves you loads of time. Again, what a great class. Enjoy the ride.
Grade Distribution
No grade data available
145 Reviews
I think, simply put, if you're willing to put in the time to start early, attend office hours and work hard to code/debug for hours, pull a few all nighters, you will be fine in this class. Expecting to start assignments last minute and still do well is just infeasible. The tests were pretty hard, but the final was fair. Looking back, I'm SO glad I'm done with 2150, but I do feel like I truly implemented the concepts I learned in class and know pointers/data structures extremely well.
this was a hard class for me, lots of lab work that could range from a few hours to pulling all nighters. I passed the class and survived but i would recommend the class with Bloomfield, he is the c++ god. dont give up, you can make it. lab 6, 10 were really hard, and 2, linkedlist was hard cause of the jump of scale in hw size/time. final exam was fair, but midterm 2 was a deathtrap.....rip the piazza memes. start early on labs, this semester there were no in lab extensions
This was probably my favorite class that I've taken at UVA so far. There are tons of in-depth reviews already so I won't repeat them, but I will add a few comments.
1) This class was a bit less time consuming than previous years (I believe, I could be wrong though) because the going to your lab section was optional this semester - instead, lab sections were open office hours with TAs and the entire lab could just be done remotely. You have to go to your lab section for exams still, so make sure to pick a time that works with your schedule.
2) The labs that are commonly regarded as the hardest ones are 2,5,6, and 10. I would argue lab 2 actually isn't that bad (hear me out here). The primary reason lab 2 is challenging for most people is because it's most people's first time seeing pointers and working with c++. I spent maybe two or three hours learning c++ right before the semester started which allowed me to get ahead with the course early and as a result found lab 2 to be one of the easier labs, as linked lists are a very simple data structure. From personal experience, I highly recommend taking some time before the semester begins to get accustomed to basic c++ if you're worried about getting stuck early. Lab 5 was, in my opinion, the most challenging lab, so make sure to start on that one as early as you can.
3) Attend lecture! Professor Bloomfield is an incredible lecturer - easily the best and most dedicated lecturer I've encountered thus far at UVA.
Great exposure to the fundamentals of computer science. I liked the Huffman and Hash labs especially.
Recommendations:
1. Take this during a semester you know a good amount of your friends are taking it. It will be SO helpful to have people to explain things you don't quite understand.
2. PAY ATTENTION IN CLASS. It will be SO hard, but SO worth it. Paying attention in class: 90 on exam; not paying attention/not going: 60. (hold studying constant)
3. Start labs early, they are way easier to get done when you aren't stressed about finishing on time. (prelab sunday morning, inlab as soon as you finish prelab, postlab on wednesday).
4. Take an easy (by easy I mean take classes that don't require time consuming work outside of class) schedule.
5. Actually read each lab description from top to bottom so you don't get points off because you didn't do your method iteratively vs recursively etc; they also provide lots of hints on how to go about each lab which a lot of people seem to miss and get overwhelmed
6. Probably goes without saying I'd only take this class if you need it for the major or want to do software dev when you graduate. Very time consuming, but very worthwhile
I heard horrible things about the difficulty of this class, so I went into it expecting to need to work hard to do well. The class is difficult, but mostly because of the time required to complete assignments. Expect to spend 10-15 hours on some labs each week (2, 5, and 6 are especially horrible). Despite the time commitment, if you are willing to work hard, you will do well. The exam average is low, but I didn't find the exams to be too challenging, as they are predictable. Also, the course is curved. Unlike 2110 and 2102, you will ACTUALLY learn in this class, and you will feel like a REAL computer science major. I have a love-hate relationship with this class, as all computer science majors do, but overall I expect this class to be one of the most rewarding and applicable courses I take at UVA. At the same time, I cant wait for this class its over.
Bloomfield was a good lecturer that explained things pretty clearly as long as you had the motivation to pay attention the whole time, which I mostly didn't. Still, all the slides were only and easy to review. Homeworks took a long time, but as long as you put the work in, you got a decent grade. Since they weigh so much, try to put a lot of time into making sure they compile and work properly. Exams were definitely the worst part in this class, and the practice exams are helpful but lack answer keys, so sometimes you're left wondering if you will ever know the right answer to a question. You learn a lot about data structures that come in handy for interviews, so it's pretty practical. Grit your teeth through the exams, but it's one of the better CS requirements.
CS2150 is the gateway drug to the nerdy world of Computer Science. Bloomfield has pretty much mastered teaching this course, and all you have to do is stay on top of labs and lectures and you're guaranteed to learn a great foundation for CS. This class is definitely time-intensive even if you're a super-smart TJ CS whiz. This is because Bloomfield covers many topics and expects students to master each concept before moving to the next topic. Honestly, don't fall behind and you'll do great!
This class really sucks man. I think people generally have a revisionist outlook when they write reviews on course forum; simply, when you are going through this class, it is utterly terrible. I generally did not sleep on Monday nights this semester (pre-labs are due Tuesday mornings). Credit is due to Bloomfield because he did do a very great job constructing the class. You learn a lot and I feel I truly understand PDR due to the rigor of the class. If you want a good grade, it is impossible to not learn a huge amount in this class. That being said, I think the workload is just way overboard. Absolutely killed me and I barely spent time on anything but 2150 this semester. My grade was fine, but it really sucked. Advice: if you are taking this, make sure the rest of your schedule is light, and allocate a bunch of time for the labs (**don't do them last minute**). God bless your soul and good luck.