A Review of the CS Undergraduate Curriculum at UI
This is my review of the University of Iowa UNDERGRAD CS program.
It is alright. I don't have a lot of positive things to say about it other than some classes I learned a lot and some professors were really good.
I do have a lot of negative things to say though. I hated how variate the quality of courses were. Some were rigourous and fun, and the others were a pain. It wasn't the course content, I just feel like the teaching skills of professors varied so much.
Speaking about rigor, I wish they were harder and covered more. The only classes that were actually hard was Computer Organization (2630), Programming Language Concepts (3820), and Distributed Systems and Algorithms (5620).
Would I recommend University of Iowa's computer science program to a prospective high schooler?
If they are somewhat capable of math, the answer is no. The answer is self explanatory and you will only find 1-3 courses enjoyable, so yeah.
Well, these were my personal rankings of classes/profs
Courses [Fun]
S: 5620, 4330, 5830
A: 3330, 3640, 4980
B: 3620, 3820, 2210
C: 2630, 2230, 5820,
D: 5610, 2820
Courses [Difficulty]
S: 2630
A: 5620, 3820, 5610, 5830
B: 3620, 5820, 4980
C: 2210, 2230, 2820, 3330, 3640
S:
5620 | Distributed Systems and Algorithms
This class is really interesting. However, it got pretty hard later on. In the past, I would be on my device during class. I'd look up and be able to get everything going on. The second half, I look up and have no idea what is going on. The worse part is that as a grad class, there is 0 help online. Good luck finding someone who knows Ben-Or!
4330 | Theory of Computation
Another very interesting class. Very fun proofs, fun homework, fun exams, and pretty easy. I think while it was a bit too easy, it was still very enjoyable.
5830 | Software Engineering Project
This was an insanely fun class. I'm suprised people can graduate CS without it here. The entire class was literally, alrighty, no HW, no lecture, you will work on project for semester and present it at various times. There even was a lovely senior capstone presentation at the end of the year. In my opinion, it was hard at first. Learning how to be completely free of guides, no mentor and only relying on team members, responsibility. But over time as I gained these skills, the class suddenly became incredibe. We faced huge hurdles that no other team faced, and yet we locked in and got an incredible product at the end together.
Actually peak class. I absolutely think this class should be a HARD requirement at UI, I have no clue why it is not.
A:
3330 | Algorithms
I will pretend that I did not have Denise as my professor, and judge it based on content. It was interesting. That's all I will say. I grinded LC so every algo problem was easy.
3640 | Networks
Really interesting class. Layer1 + Layer2 stuff were super cool. I didn't really like TCP unit. Applications would've been fun if I actually studied. Loved the prof and loved the research paper project at the end. Pretty easy to mem everything and get a good grade, if only I did that.
4980 | Special Topics with Rahul
Content was kind of boring as I feel like there was not too much interesting with the previous text processing techniques. But the semester long project was quite a good learning experience, got to play with emergent semantic networks and also got a lot of good ideas from the professor. It is a good time to experiance the opiniation of academia while the bar is low.
B:
3620 | Operating Systems
I will say I might have not found it this low if the homework were actually interesting and programming OS stuff in C rather than a stupid bank program. The last units on power management and real time systems were fire though.
3820 | Programming Language Concepts
Uh. Fun class. Super fun haskell homework. Fun grammar parser. Horrible agda. Horrible project.
That's about all I have to say, other than the fact that the class gave out so many As, I never really tried too much.
C:
2630 | Computer Organization
...
We don't talk about this class. This class was painful AF. Despite getting an (A-), this class was absolute turd. There was a custom assembly language that nobody knows how to use, the concepts were super hard to understand. I spent at least 20 hours every 2 weeks on the homework. It was just downright torture land.
C:
2230 | Data Structures
I don't know why I hated this class so much. I just remember hated the tRats and iRats. I also remember getting a bad grade in this class, and bombing the final caz it was situated between 4 APs. Megaoof.
C:
5820 | Software Engeering Languages and Tools
Project was cool. Some content were cool, but not as much application to rl as I hoped. The quizzes were like wtf (got a terrible grade on them lol). Imagine getting fired at a job because you don't know what a "seam" is. "Do you know what a "seam" is? Cool, because I don't! => FIRED!!!"
D:
2820 | Software Development
Hmm. This class taught a bunch of memorization stuff that I forgot in a few weeks. The project was pretty irrelavant, and sprints were easy af. Overall, I didn't gain a lot from this class.
5610 | Computer Architecture
The class was kind of useless tbh. It was not exactly fun either, just a lot of memorization and standard HW/textbook sorta stuff. Does not deserve to be a grad class in my opinon.
Profs [my rankings on how good teachers]:
S: Rishab Nithyand
A: Sirium Pemmaju, Rahul Singh
B: Elizabeth Kleiman, Steve Goddard, Hans Johnson, Octav Chipara
C: Denise Schiezel
Pretty self-explanatory.