Skip to main content
Sponsored
CS 2150 Program and Data Representation
Last taught: Fall 2022
☆ Rating
Difficulty
GPA
Instructor
Enjoyability
Difficulty
Recommend
Reading
Writing
Groupwork
Other
Total Hours

Grade Distribution

No grade data available

Average GPA
Students Measured

145 Reviews

Add Review
Fall 2015
5.0
Average

*Unpopular Opinions of CS 2150, a la FAQ. Read the other reviews for popular opinions!*

-> On a scale from Dudley to Voldemort, how hard is it to best this course (get an A or A+)?
I'd say it's about the equivalent of vying for a golden egg from the Hungarian Horntail in the 1994 Triwizard Tournament. It seems intimidating, but is actually quite manageable if you can use your resources effectively (your broomstick). While I agree with other reviews that the course requires effort to get a decent grade in, I don't think it is an absurd/unfairly difficult class. In fact, it was by far my favorite class during the semester I took it; all of my other classes were not nearly as exciting or fun as CS 2150. The plurality grade of the class is an A, and Bloomfield typically gives the top 3-5% of students an A+.

-> Would Kylo Ren let the labs/exams stand in his way?
The lab assignments may seem daunting, but they are thoroughly documented and if you use office hours/Piazza/stack overflow, they are much more doable. The exams are similarly straightforward if you take the time to review the past 3 or 4 instances of the exam and know them well. Lab 6 (word puzzle search) and lab 10 (Huffman encoder/decoder) are non-trivial labs; they are not necessarily difficult, they just take longer than most other labs. Optimizing the word search was one of my favorite memories of the class, as it was the first time I have been asked by a Professor to make a program run as fast as possible. Kylo Ren would probably rage-quit the second lab and not finish what Darth Vader started.

-> How can I exploit the course and reach M4X1MUM P0W3R?
- Actually use Piazza, even if you're too cool for it; you'll be greatly rewarded for posting good answers, followup discussions, and questions at the end of the semester with your participation grade. I received an obscenely high participation grade (you can go well above 100%) by doing this and the impact on my overall grade was significant.
- Contribute to the GitHub repository with bug fixes and typo fixes to further boost your participation grade. Every point counts!
- Start the lab assignments on Friday/Saturday and get any help you need later from Piazza and office hours on Sunday/Monday while everyone else is just beginning the assignment. This strategy especially helps with the non-trivial lab assignments (6 and 10).
- Have fun, it's over before you know it :'(

TL;DR harry potter, star wars, science?

Instructor 5.0
Enjoyability 5.0
Recommend 5.0
Difficulty 2.0
Hours/Week 6.0
Fall 2015
1.7
Average

This course is honestly ridiculous. Tests count for about twice as much of your total grade as they realistically should, given that the material presented on them is completely random and generally not reflective of what you've been spending every waking hour learning through the homework. Bloomfield throws you in the deep end of the pool with no swimming experience the second week with the linkedlist lab. An absurdly difficult 3-part Huffman coding lab is assigned over Thanksgiving break with no access to TA office hours. Lab instructions take forever to understand because they skip all over the place like they were written by a crackhead. Bloomfield is indeed a "nice guy" to talk to in person, and his lectures (for being CS lectures) are paced well and entertaining enough. But that isn't nearly enough to make up for the fact that the tests are absolutely the worst (not just hardest; worst in terms of testing how well you've gotten what you need from the course) I have encountered at UVA, and they count for 55% of the course grade! All those hours I spent essentially teaching myself data structures and C++ to complete the labs went to waste, because I still got a bad grade in the course due to terrible grades on the god-awful exams. I went to plenty of office hours and went to the review sessions for the midterms, with little to show for it in my exam grade.

Instructor 2.0
Enjoyability 1.0
Recommend 2.0
Difficulty 5.0
Hours/Week 24.0
Fall 2015
4.3
Average

This class was tough, both homework and tests required a lot of time if you want to do well, but a lot of the material is relevant and necessary to learn if you are going to pursue a career in CS so in the end it is worthwhile. However, you'll have to learn and research on your own a lot of the material on tests since you do not really have to understand in depth what is happening /the stuff you do in the labs is different than what is tested.

Instructor 5.0
Enjoyability 3.0
Recommend 5.0
Difficulty 4.0
Hours/Week 0.0
Fall 2015
4.7
Average

This class is honestly amazing. YES it is a lot of work. YES some of the labs will take over ten hours. BUT you are going to learn computer science, and learn it well. Bloomfield is an engaging and enthusiastic teacher that tries to learn peoples names and is always receptive to any questions people have. He also puts an insane amount of effort into keeping this course running smoothly. I would be remiss if I didn't mention the labs. People I think were a little bit dramatic in talking about how long the labs take. Most of the labs will take you less than 6 hours total. Exceptions to this are labs 2, 6, and 10 (especially 10 which took me about 12 hours). But the labs do an exceptional job of solidifying the material in the course. My only complaint about this class is that tests can be a bit of a shit-show just because there is so much material that Bloomfield can pull from. There is a very generous curve at the end to offset this, so it wasn't too big of a deal. Overall, easily the best course I have taken here so far and it's courses like this that remind me why I pay tuition to go to UVA.

Instructor 5.0
Enjoyability 4.0
Recommend 5.0
Difficulty 4.0
Hours/Week 6.0
Fall 2015
3.3
Average

Aaron Bloomfield is great. Really entertaining and engaging, and he knows how to clearly explain topics that most people find difficult to grasp. This class teaches you how computers really work, which is great. You also learn how to create data structures which is great, and you practice by coding them in C++.

This class is very difficult, potentially one of the most difficult classes offered at UVA. It's basically a weed out class for CS majors. Part of why it is so hard is because he just throws so much at you, and it feels like you need to learn C++ on the fly.

I failed this class and am now switching majors. Things I wish I had done differently:
1. Learn C++ beforehand. Would have made things a lot better!
2. Utilized the TAs and Piazza a lot more. Office hours kind of suck but might as well use the TAs if they are there.
3. Set aside more time for this class! I should have made more sacrifices if I wanted a better grade in this class.

Overall, very hard class but I recommend it because you learn a lot of very important material, and it taught me that Computer Science just isn't for me.

Instructor 4.0
Enjoyability 2.0
Recommend 4.0
Difficulty 5.0
Hours/Week 12.0
Sponsored
Fall 2015
3.7
Average

This class would be much more manageable is there were not 3 labs a week. You can tell bloomfield loves teaching a hard class from day 1, but he teaches well and admittedly this class has taught me so much about computer science. I am constantly doing labs, but it is worth it because they are helping me become a better programmer, in contrast to CS 2110 which I took last semester. The labs are hard and they take forever, the tests are hard but you have more than enough time, and I have become a better programmer as a result of this class. However, just be prepared to lose a lot of your free time

Instructor 4.0
Enjoyability 3.0
Recommend 4.0
Difficulty 5.0
Hours/Week 12.0
Spring 2015
3.0
Average

Bloomfield is great! The class is difficult, but just know how to manage your time and you'll survive. The class is really useful, so make sure to do all the homework thoroughly to really learn the material.

Instructor 5.0
Enjoyability 1.0
Recommend 3.0
Difficulty 5.0
Hours/Week 35.0
Spring 2015
4.3
Average

Professor Bloomfield does a wonderful job of making the class interesting and engaging. I absolutely recommend this course, although be ready to put 10-15 hours a week in for the labs. The labs that have a lot of hype about being difficult (2,6,10) ARE difficult, so start early! The labs are hard, and time-consuming, but in my opinion they are very rewarding and truly solidify the material.
In studying for the exams, do as many old practice exams as possible and be able to thoroughly explain everything. The exams can be tricky, although they are often all curved so your grade will not suffer too much if you do not do great on one of the tests.
All in all, great class and highly recommend for CS/CPe majors in order to get a very strong understanding of computers, C++, and efficient problem-solving.

Instructor 5.0
Enjoyability 4.0
Recommend 4.0
Difficulty 4.0
Hours/Week 15.0
Spring 2015
5.0
Average

This course was AWESOME!

Regarding Bloomfield: Professor Bloomfield is incredible. He's very approachable, always willing to help, and really really puts his energy into this course. He's worked very hard to create high-quality course materials and lab writeups. He's quite busy, so some people find him hard to contact; however, I've never had this problem.

Regarding the Course:
If you like CS 2150, you will certainly enjoy CS. (This is not an if and only if statement, though.) It starts with a fast-paced introduction to C++, proceeds to some data structures, discusses x86 assembly language, and wraps up with some more advanced C++ and memory management topics. It briefly introduces Landau notation (you'll be expected

Some people find this class difficult. The best preparation I can recommend is:
1) Install Ubuntu or Kubuntu Linux and get used to the terminal and a commandline editor (emacs is preferred, but he'll let you use vim). Doing this will place you worlds ahead of those without Linux experience, because you can only use that OS for programming in this course.
2) Teach yourself some C++. If you understand some of the key differences between it and Java, and can write a simple input/output program with subroutines, you'll find the first few weeks of class much easier.
3) Actually read the course materials and policies on the GitHub site. I felt like a lot of people just skimmed these and were surprised by how things were graded, etc.
4) Ask for help early and often. This is *not* a course in which you want to get behind.

Instructor 5.0
Enjoyability 5.0
Recommend 5.0
Difficulty 3.0
Hours/Week 3.0
Spring 2015
3.3
Average

This was definitely the hardest but most rewarding class I have ever taken in my life. There were many times when I wanted to drop out of CS because of this class. If labs take you 10+ hours to complete, do not feel discouraged! Be willing to put this much time into the labs, three times a week (pre-lab, in-lab, post-lab). This is not an exaggeration. Get started on Lab 2 as soon as possible because there is a MASSIVE leap in difficulty from Lab 1. There's a lot of hype about Lab 6 (Hash lab) but the hardest lab in my opinion is actually Lab 10 (Huffman coding). All the even number labs are hard. Start the labs on Sunday so you can go to less crowded office hours. If you don't mind losing your weekend, DO IT because it will make your life much easier later. Study all the old exams that he gives you because they will help you do much better than the average. Even though you'll end up putting in a tremendous amount of work into this class, there is a generous curve in the end, and you will learn more than you ever could've imagined.

Instructor 5.0
Enjoyability 1.0
Recommend 4.0
Difficulty 5.0
Hours/Week 70.0
Sponsored