I took this online so it was more manageable compared to being in-person. We only had a final exam as opposed to two midterms + final but I did a lot better on it than I expected on it. So long as you review the past exams and make sure you understand the lectures and live sessions you should be straight. There's a pre-recorded lecture to watch before class and the class was just doing either live coding or making sure you understand what was taught in lecture. I won't lie - the lectures were so hard to focus on; I think I had to rewatch them two or three times. Otherwise, there's a lab each week that consists of a prelab (due tues 10am), inlab (due tues 11:59pm), and postlab (due fri 10am). These were absolutely horrible. Some were pretty easy/manageable while others were unbearable difficult. Sometimes I gave up and turned in something that didn't work or an empty file. The labs were submitted through gradescope so you can turn them in as many times as you want before the deadline. If you pass all the tests you should be straight most of the time. I struggled the most from lab 6 and past. Honor code is really strict here - I think they've failed like 10% of students each semester. It's not even worth it cheat; just take the L instead. OH was so bad. The TAs were VERY VERY helpful but the queue to get help was so long and sometimes I'd be in line for 2 hours only for OH to end and not even get help. My biggest recommendation is to start early!! You definitely cannot do these the night before like with 2110. It's best to get the pre and in-labs done before tuesday so you can work on the postlab throughout the week. This was definitely the class that took up most of my time this semester. Regardless of the difficulty, I will say it's the most I've ever gotten out of a CS class and I've learned a lot about not just CS, but my own skills as well. #tCFspring2021
Grade Distribution
145 Reviews
The course is tough but doable. It requires a constant stream of effort, persistence, and motivation throughout the entire semester. I found that starting the labs ahead of time was super helpful - the labs were released around 5 days ahead of when the first part was due, so I typically started them the first or second day after they were released. Starting the labs early means that you can get an idea of how to organize your time around them and avoid last-minute stress, especially if you take advantage of office hours, both of which I strongly, strongly, strongly recommend. The earlier you start each lab, the earlier you finish it, and the earlier you can start the next lab.
The content tested on the final, and from what I can see of the past midterms, is not particularly well-taught in the labs. However, it is very possible to do sufficiently well on the final to get an A overall if you do well in the labs and study *really hard* the 2-3 weeks prior to the final (and I would assume for the midterm(s)), though working through material and past exams throughout the semester would probably help a lot as well.
I was intimidated by the reviews, but after taking the course, I would not say that it is as bad as it sounds. Put in the effort, do work as early as possible, go to office hours (even if you don't have any major problems, just ask a question and the TA might mention something that you missed), and you can succeed.
#tCFspring2021
This class is extremely hard to keep up with because you're always stressed out. There are labs every week with three parts due throughout the week, so you always have something to worry about. Some are pretty easy, while others take hours. We were lucky this semester to just have labs and a final, but I'd advise studying hard for the exams since the labs don't prepare you that much. The exam is way more conceptual and there wasn't any coding.
Aaron Bloomfield is incredibly lazy and uninvolved. His exams are made up of deceptive, poorly worded questions that test your understanding of grammar intricacies rather than content mastery. In his review sessions he very infrequently is able to answer his own questions from exams of past and is too lazy to attempt solving questions he deems are too long. Despite doing well in the course, I leave with a mediocre understanding of the material and an overall distaste for computer science. Unless you are majoring in cs DO NOT take this class, especially not with a professor this poor.
Bloomfield definitely knows his stuff, and he also knows that the class takes a lot of time each week. 70% of your grade was labs this semester, and they definitely do take a lot of time. Of the 11 labs assigned this semester, for the prelab, inlab, and postlab combined, labs too me from 2 hours all the way up to around 20 hours to finish (yeah that was a rough lab). I haven't taken the final yet, but even not missing many points on the labs I'm still scared about the outcome since the available practice finals are pretty difficult. Anyways, the class is definitely a process, but if you like CS, it's not too bad and it's actually nice to learn C++. I can say that IBCM and Assembly were a pain, but C++ is the majority of the class and good to know for sure. Bloomfield is also incredibly well composed and can answer any question or explain any content seamlessly. Definitely the right teacher for the job. Also, GO TO OFFICE HOURS FOR HELP IF YOU'RE STUCK. It will save you a lot of time.
I probably learned more from this class than almost any other class I've taken so far. It really forces you to learn the material, which is actually useful in the real world, as many of these data structures have shown up on interviews I have done for jobs. Bloomfield is a good lecturer and includes relevant material in lectures.
I will say, there were a couple points in this class which I did not like. For one, with some of the labs, like IBCM and x86, I felt like there was a specific method or cheat code that if you did not learn from TAs, it would be very hard to logically get to. Especially with IBCM, I found those labs much more difficult because I missed the TA spots and it was hard to find the solution logically without getting pointed in the right direction. The other labs did feel intuitive and possible after going through the lectures though.
Overall, most of the labs did not take an insane amount of time, probably 7-9 hours for the hard ones and less than 2 for the easier ones. Time management is super important for this class though, and if I could redo it I would start the labs early and get help from TAs when stuck early, because the TA slots go quickly in the time right before the labs. Definitely a good class that makes you a far better coder and computer scientist.
Bloomfield is a solid lecturer and the class wasn't too bad. Labs are pretty manageable with labs 5, 6, and 10 being particularly challenging. My biggest issue was with the exam grading. Idk if it was just the TA I had but he/she had a huge power trip when grading my first exam. This mf kept trying to argue that insert and delete in a linked list aren't constant time operations in my regrade request. That plus a bunch of other poorly graded questions brought my first exam grade from what should've been high 80s low 90s down to a 73. Fortunately, the online final exam was multiple choice and computational questions, so there was no room for any subjective grading. Other than my TA experience, I enjoyed the labs and thought they were pretty fun challenges.
Lots of work, but don't be scared. Instructors and TAs are very helpful--USE THEM. I wish I had gone to office hours earlier in the semester, would've saved me a lot of time.
Out of all the CS classes I've taken so far, Professor Bloomfield has to be one of the best lecturers I've had. He is very knowledgeable about the material and isn't afraid to tell a student that he can't answer their question if he isn't 100% sure. In terms of workload, I spent about 9-12 hours per week on the material with Labs 2, 5, and 6 taking almost 12 hours, so be sure to start early. There are office hours everyday except Tuesday (lab day), Friday, and Saturday. Distributing the work throughout the week and leaving ample time to go to office hours for help will make this class more than manageable. Exams are difficult, but if you review the lecture slides and take the past exams you should be okay. You will learn a lot in this class and I highly recommend taking it with Bloomfield.
Personally I did not like the class being superficial. I know it is hard to go in-depth when there are a lot of materials to cover, but compared to similar-level cs courses that teach data structure and basic algorithms at other universities, such as Princeton, Berkeley, and Michigan, etc.., our course seems to be significantly easier, content-wise. I have not yet taken CS 4102, but if 4102 does not teach materials covered in 2150 (like variations of trees, sorting algorithms, backtracking, path-finding algorithms, and A LOT MORE) in much deeper level, i think in that case there is a significant flaw in our CS curriculum. Labs take a lot of time so make sure to get started on them early.