Your feedback has been sent to our team.
175 Ratings
Hours/Week
No grades found
— Students
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.
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.
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.
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.
*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?
A great course, and a great lecturer. You will learn a ton, and if you're on the fence of doing CS or not, this will basically decide it for you because this is the heart of CS. You do some cool labs and learn some cool stuff, but apparently the course is getting revamped and possibly changed in a semester or two so double check that. If it holds true, the 2nd, 6th, and 10th labs are all pretty hard, so start those early. If you get the opportunity to take the class, then do it though because this was the most important and knowledge-gaining class I've taken so far.
This is not a course for lazy people. If you wait until the last minute, Bloomfield will crush you faster than a C program can print "Hello World!". On the other hand, if you are consistent and dedicated, you really don't have anything to worry about. The course is highly structured, and it's easy to get into a rhythm and start cranking out 10's on the labs. The released exams make a huge difference, I studied from those exclusively. The exams tend to cover a very small percentage of the material actually taught in the course, but they are very consistent and you will likely see questions from previous exams on your own tests. One thing to watch out for are the booby traps: honest and trivial mistakes can earn you a zero on some significant assignment.
Bloomfield is great, by the way. He is really good at teaching this course, very dedicated, and humorous a lot of the time. Also likes to say "more better," so English majors might want to avoid this class.
Here's a little review of the labs and their difficulty:
1. Introduction: If you think this one is hard, there's always room in finger painting.
2. Linked List: Challenging for those of you new to C++; pointers are really the biggest difference from Java (or Python or whatever they teach now), so if you understand those it's not too bad.
3. Stacks: Not all that intense, certainly easier than lab 2. The UNIX tutorial is a nice added bonus here, this stuff is really useful. Stacks are about as simplistic as you can get.
4. Numbers: This one requires more reasoning on your part, not programming. That might make it easier or harder for some people.
5. Trees: You need to modify his code for this, depends if you like to do that. The Makefile tutorial is extra detailed and hard to sift through, but it is very important for later labs. (Realize that he could have made this lab much, MUCH more difficult.) This one has a report.
6. Hash Table: Here it's a good idea to start early; the problem itself is not overwhelming, but if you're not used to writing moderately-sized programs you might have a little trouble. The amount of code you have to write is not really that intense, mine was ~350 lines including whitespace, ending curly brackets and comments. You might want to use the diff command on your program's output before you submit the prelab, this is an easy way to check if it's right that for some reason is only introduced in the in-lab. This one also has a report.
7. Machine Language (Itty Bitty Computing Machine): Be careful here; it's easy to waste a lot of time if you don't plan well for these problems ahead of time. B is your friend. In case you were wondering, this one has a report.
8. x86 Assembly Language Part I: If you get stuck this can take a long time, if you don't it's really simple. Don't forget the report!
9. x86 Assembly Language Part II: Really a continuation of lab 8, not too difficult because you've already done similar stuff. Those similarities would include a lab report.
10. Heaps and Huffman Coding: Similar to lab 6, just a different problem and a different data structure. How else are they similar? They both have a report.
11. Graphs: Yes, this one also has a report. Apart from that, drink plenty of water and you won't get dehydrated from the crying. Doxygen is a little tricky, especially since he says to "use stuff we didn't teach you," which doesn't help much. But I got full credit, so it's not impossible.
12. Objective-C: NO MORE REPORTS! The euphoria of freedom will billow your sails into your infinite domination of the helpless final exam.
One more thing: if you get in trouble at the beginning, don't give up. In mid-September I had a 67 in the course; at the end I had a 98.
This is a required course for CS majors so there is really no point of reading reviews except to choose which professor to take this course with.
Take it with Professor Bloomfield because he basically created computer science.
Tips to succeed:
Do the prelab on Sunday (or Saturday).
Do the inlab before the actual lab and if you have questions, ask TA during lab.
Do the postlab right after the actual lab.
First midterm: study past midterms for 2-3 days and get an 85-90%
Second midterm: study past midterms 75% of the time and then study his lectures (video recordings + slides) 25% of the time and get an 80-85%
Final: study past finals 25% of the time for the gist of what he can ask and what the questions will look like. Then use those finals' questions to plan what you're ACTUALLY going to study. The final will be completely different so you should prepare by listening to lecture, taking crazy good notes, and reading slides. Then use Google and form a study group to study the material for about 3 days.
Labs are very important. Make sure you do them beforehand and you will be sexy.
Don't f*** around and skip lecture. You're going to have to listen to lecture or lecture recording anyways, and it's better to hear the information twice. ALL THE ANSWERS TO EXAMS ARE IN THE LECTURE. The slides only give you 70% of the knowledge you need.
Have fun spending 10 hours a week on lab! huehuehuehueheuhuehue!!!!!!11111oneoneONEONEONE
CS 2150 is the best class I have ever taken at UVA. Here's why:
1. The professor (Aaron Bloomfield) is amazing at teaching the course. He knows all the material inside out and can answer any of your questions. He's been teaching the course for like 10 years now, and has developed a very solid curriculum. He also makes the lectures interesting and keeps you engaged.
2. The course is just so well designed. Everything you need is laid out for you, grading is clear, you get to see ALL past exams to prepare adequately. Basically, what is expected of you is told to you. The main problem students have with the course is simply not putting in enough time. That is why the GPA for this course is so low (At least I believe). I think 75% of students can get an A or A- in the class, but that requires at least 10 hours of work every week. Since most kids don't put in that much time, their grade in the class suffers.
3. You figure out if you really like CS. Every week you're doing a lab; there's almost no break between labs and learning something new. That being said, this tells people if they really like CS or really hate it. For example, one of my friends could not stand the class and decided to quit CS, but I personally found myself to like it even more. The class really teaches the foundation of data structures and the "core" concepts that I think every aspiring CS major should understand.
Tips to succeed in this class:
-Go to lecture! Bloomfield makes it worthwhile to go
-If you signed up for Mark Floryan's section (sometime he teaches the course as well), try to go to Bloomfield's lecture. I found Bloomfield to be much more knowledgable about all the topics. Floryan doesn't usually teach the course so he tends to be rusty on a lot of topics and often could not answer questions that we asked of him.
-Ideally have some friends in the class that you can collaborate with on the labs. As long as you're not directly comparing code you can work with friends on the lab - share ideas, high-level implementation, etc. This is really helpful as multiple streams of ideas helps when some of the labs can be tough.
-If you're on the waitlist, don't give up as usually many people drop the class after the first lab. Even the professors scare you and act as if you probably won't get into the class. But every semester 99% of the kids who want to get into the class get in. You (most likely) will get into the class.
Get us started by writing a question!
It looks like you've already submitted a answer for this question! If you'd like, you may edit your original response.
No course sections viewed yet.