My UW Madison Course Tier List thumbnail

My UW Madison Course Tier List

April 25, 2024David Teather

Table of Contents

I’m about to graduate from UW Madison and I thought I’d share my thoughts on the classes that I’ve taken. I’m a Computer Science major with a certificate in Entrepreneurship, which I’ll talk about in the later sections.

These are generally ranked by how much I enjoyed the class and how much I felt like I learned from the class. These are 100% the correct rankings and you should take my word as gospel and they’re definitely not just my opinion.

CS 500+ Level Courses

S Tier

For this tier these are the classes that you should take if you have the chance to take them. They’re the most interesting and the most beneficial to you in terms of learning and experience.

642 - Information Security

This class is probably my favorite class I’ve taken throughout my degree. I took it with Rahul Chatterjee and I know that some people don’t like his lectures however I did enjoy them. I came into the class as someone who was interested in the field of security and who liked breaking systems particularly in my web scraping experience. However I didn’t know much about the real fundamentals of information security and this class was a survey course about a lot of the different topics that are in the field, most of which I enjoyed.

Topics Covered This is the list of the topics that were covered in the course when I took it, however I believe that the specific topics changes from semester to semester. We had 75 minute lectures twice a week.


I definiely would have taken this class again and I would recommend it to anyone who is interested in the field of security as it gives you a good overview of the field and some of the topics that you might want to dive deeper into.

537 - Introduction to Operating Systems

I took this with Professor Yuvraj who was an assisant Professor at the time and it was mainly being run by Professor Swift. I will not lie this is a super difficult class in terms of the time you need to commit to it. From my perspective when I took it the class was not super difficult to get an A in as long as you had tons of hours to pour into it because the projects were worth 50% of your entire grade and all the test cases were public for me. However, again the projects just take tons of time easily the class I’ve spent the most time on.

Topics Covered: (look at OSTEP for more details)

544 - Big Data Systems

I took this class when it was first offered as a 639 section and taught by Tyler Caraza-Harter and for it being the first time the course was ever offered it was structured and designed better than most of the other classes I’ve taken, the amount of work that was put into it was very evident.

I’d reccomend this class to anyone who’s interested in working on data engineering or any sort of data processing as it gives you a good fundamental understanding of many relevant and currently used technologies in the field and how they work at a lower level which you might not learn in as much detail on the job.

This is definitely the class if you want hands on experience with a lot of actually industry relevant technologies, this is an amazing class for that and as a bonus you get some resume worthy projects and experience out of it.

Topics Covered:

A Tier

This tier I still would highly recommend taking if you like the topic or are interested in the field.

536 - Introduction to Programming Languages and Compilers

I’m taking this class right now with Beck Hasti and I’m enjoying the class a lot, however I think there’s a few things that could be changed with how the projects work to put this class into the S tier. The projects in my opinion skip over some of the interesting theoretical things talked about in class and instead use technologies that already do a lot of the work like jlex and jcup. The cool thing about the projects is that they build ontop of each other and you’re building an entire compiler for a C-style language which is pretty cool to see come together from source code to assembly.

Topics Covered:

639 - CS Capstone

This is a pretty interesting but relatively easy class where you get to work with a small group and get partnered up with a company or non profit and do a project for them. Getting mentorship and connections to these companies can be super valuable and especially if you find your project interesting it can be a great experience. I’d recommend that you sign up for this class with some friends that you know you can work well with.

I personally built Orbit-IQ for The Union of Concerned Scientists. I also thought it was valuable to get experience understanding what the clients really want and how to communicate with non-technical people to get the information you need to build the project which is something that I think is super important in the real world and valuable to learn.

Especially if you’re looking for a class to take that will give you some experience working on a project that you can put on your resume I’d recommend this class as it’s a great way to learn some technologies you might not work with in other classes and get some experience working with a team.

B Tier

For this tier, I would say that these are still probably worth taking, however I would suggest looking at taking a grad course instead of these if there are grad courses that are more interesting to you.

640 - Introduction to Computer Networks

I’m taking this with Professor Suman and it definitely taught a good amount on how the internet works, although I think that the class felt more difficult than it needed to be as the quizzes were fairly difficult but I got the hang of it later on.

If you’re interested or like networks this is definitely a good class for you especially because Suman let groups of students instead of doing the homeworks to do a project on a topic of their choice as long as it interacted with networks in some way which seemed like a cool opportunity that many other classes wouldn’t have given.

The last project is working on implementing a simple version of TCP which I’m currently procrastinating on finishing by writing this blog post.

There are probably better classes to take if you’re not super interested in networks, I’d encourage people to consider taking a grad course on something they’re more interested in if they’re not super interested in networks.

564 - Database Management Systems

I took this with AnHai Doan and he’s a great lecturer although I don’t know if enough material got covered in the class. I had come in with previous experience using SQL and relational databases (in addition to taking OS before this class) and in general and this class might be more beneficial to someone who hasn’t had those experiences.

However, there were still some interesting topics covered like: external sort, B+ trees, how logging is done in databases, and the ER model which I hadn’t seen before but gives a good framework for communicating about database schemas.

I do think that a lot of this class at least with AnHai could’ve been collapsed into a few days of self study and a project to apply the knowledge might’ve been more beneficial. For the final we were given a note sheet and to prove a point I collapsed every note I ever took into my 2 sided note sheet if you want to take a look.

502 - Theory and Practice in Computer Science Education

I took this class with Andy Kuemmel and I did feel like it was an interesting class in terms of lecture material. It was only a single credit hour and I felt like I was doing more than a single credit hour of work for the class which was annoying.

Andy seems to often change the structure of the class but when I took it we had: 1 hr of shelf peer mentoring hours, 1 hr class study group, avg of 0.5 hr of TA observation, and 50 minutes of lecture, and a brief reading and sometimes reflection on the reading each week. The semester after this one I’m aware that he had restructured it to be less of a time commitment.

I personally would’ve found this class more interesting if it focused more on the content creation side of teaching and course design rather than the peer mentoring side of things. However, this was more on me for not understanding that this class was more so about improving the peer mentors and TAs who are teaching classes rather than how to teach or design a class yourself.

In my opinion: I think that maybe if you’re already going to be a TA or a peer mentor for a class this class might be beneficial to you and may provide an advantage if you’re applying for those positions. However, if you’re not going to be a TA or peer mentor I don’t think this class is worth the time commitment.

If there was a class that was more focused on the content creation side of teaching and course design I would be interested in taking that class.

C Tier

577 - Introduction to Algorithms

I took this with Professor Renault and I like him as a person, but the lectures were very much powerpoint slides and I didn’t feel like I was learning much from them. However, I did feel like since I was applying to jobs at the time I did feel that my ability to do Leetcode problems did improve although I’m not sure how much of that was from the class and how much was from me just doing Leetcode problems.

Note: You still should take this course, it’s just not as interesting as the other courses in the other tiers and I didn’t like it too much.

D Tier

I’d consider avoiding these classes if you can, however if you’re interested in the topic or if it’s a pre-req for a class you want to take I’d still consider taking it.

540 - Introduction to Artificial Intelligence

This is also a super professor dependent class and I’ve heard great thing about Fred’s version of the class so I’d recommend taking it with him if you can.

If you’re interested in doing AI this isn’t a bad course to take for survey detail, however I took it when Jerry Zhu with my lecturer being Yudong Chen. I’ve heard this is better with other professors. I personally don’t think I had many good takeaways from the class other than a few refreshers in linear algebra and statistics. The homeworks were not at all related to any of the contnet we’ve learned in class as no programming was covered in lecture and the lectures were all theory based. The homeworks were all programming heavy and a lot of the libraries we were using felt like an entirely new language and the averages on the project were super easily done by AI boosting the grade averages which meant that the only thing that mattered was the midterm and final grade.

Which was annoying because the midterm and final focused entirely on the theory taught in lecture which we didn’t have any practice with in the homeworks or other assignments. I could see this being more valuable for people who (1) plan to do AI and (2) don’t know anything about AI yet. I personally felt like I didn’t want to do AI before taking the class and I did feel like I was already trying to understand AI and it in the news so a lot of the content that I did understand wasn’t new to me.

639 - Parallel and High Throughput Programming

Oh, where do I even start. I’m writing this in the class right now. The professor is constantly showing up to class 5 minutes late, the lectures feel like line by line code walkthroughs, and the projects feel like busy work.

I feel like this class has interesting takeaways maybe like once a week, this class maybe can be more interesting to you if you like simulations or graphics as the professor is super knowledgeable in the field however this wasn’t my interest and you might gt more out of his office hours. Most of the class focuses on matrix operation optimizations which seems more directly relevant to those use cases than what I’d be interested in. However, I feel like if you care about those you should take the grad level HPC course instead of this one as I’ve heard that one is more interesting and more beneficial.

The projects feel like they’re just busy work and I’m not learning much from them. There was a single project where I feel like I learned anything and that one we had to implement and improve these different functions/kernels using some of the techniques we learned in class which was a good project.

However a significant amount of the projects are just “hey here’s this code on our git repo for the class, can you compile it then run it and tweak like a parameter or two and write a report on what the difference was?“. Sometimes if we were lucky the project would be just read the documentation for this function and get it to do this thing differently then run it, tweak parameters, and report the run time.

In my opinion, if a project is just “run this code and write a report on it” it’s not a good project. Projects should be about implementing things you’ve learned in class or trying to use at least some mental effort to solve a problem that will reinforce your learnings in class. They should challenge you at least a little bit to try to apply what you’ve learned in class, which these “benchmarking” projects don’t do.

This is the exact sort of class that I would’ve dropped if I had the chance to do it over again. I don’t feel like I’m learning much from the class and I feel like I’m just doing busy work. It’s the exact type of class that the 639 number was made for trialing out classes before they’re official. The professor says that this class will become an official cataloged class soon and I hope that when it does it gets restructured to be more beneficial to the students taking it.

Like one easy improvement that could get people more involved is making the projects more difficult and maybe more like “here’s a problem, here’s some code that does something similar, can you make this faster using the techniques we learned in class?“. And for student engagement you could have students upload it to Gradescope and enable Gradescope’s leaderboard feature for speed of the code like how 577 does it with the coding assignments would easily engage people more in the class and get them to learn more and care more about the projects for not much more effort on the professor’s part. This wouldn’t fix everything about the class but it would at least make it feel more engaging and like you’re learning something from the projects.

Entrepreneurship Courses

I decided to do the entrepreneurship certificate because I thought it would be interesting and I wanted to learn more about the business side of things especially in the tech industry. I think that the certificate could be valuable as long as you intentionally take the right classes and get the right experiences out of it. However, I think that I didn’t pick the optimal ones for me so here’s the ones I took and my thoughts on them.

Also do not be afraid to take classes that don’t count towards the certificate if you think they’ll be beneficial to you or if it’s a pre-req for another class on the list.

S Tier

None 💀

A Tier

Marketing 365 - Technology Product Marketing

I’m in this right now and it’s pretty interesting. The professor is knowledgeable and the class is structured well. I definitely feel like I’ve learned a lot about more of the business side of the tech industry and how they market their products. I think this class is valuable if you’re interested in working in the tech industry and want to learn more about how they market their products.

B Tier

Marketing 300 - Marketing Management

I thought this was a good class on the basics of marketing. I think it’s a good class to take if you’re interested in learning more about marketing and if you’re intereted in potentially creating your own product in the future you’ll need to market it and having the fundamentals of marketing down will be beneficial.

MHR 322 - Introduction to Entrepreneurship

I took this class quite awhile ago so I don’t remember much about it. I do remember that it was a fair amount of good information about how to start a business and the different things you should to do to get started like making a business plan, product market fit, etc. The main project focuses around designing and selling a T-shirt in a group, but I didn’t like this part of the class.

C Tier

Econ 101 - Principles of Microeconomics

It was fine, I mean it’s econ 101. I can’t really say much about it. I’d only take this if you want to take more classes later on that require it as a pre-req like Marketing 300.

D Tier

Gen Bus 310 - Fundamentals of Accounting and Finance for Non-Business Majors

I took this class online and I didn’t really like it. The recorded lectures are a little bit old and the professor comes off as super condescending in them with jokes like “I know this is an online class and you might’ve taken it to slack off but my class is not one you can slack off in”. I just didn’t like the tone and it felt like a lot of the content was just memorizing or “I got ya” sort of questions which I don’t think is a good way to teach a class or structure exams.

However the professor when I took it did a outside of class personal finance and investing seminar sort of thing that might’ve been literately the most valuable use of my time in college. This is completely unrelated to the class and he doesn’t get paid for it, and if you can find out the time and place for it I’d recommend going to it. It’s a brief crash course on personal finance and investing and it’s super valuable information that I think everyone should know.

Gen Bus 311 - Fundamentals of Management and Marketing for Non-Business Majors

It’s not entirely this class’s fault but I took it online. It was too easy, I don’t remember anything from it. It seemed like a lot of content repeat from MHR 322 & Gen Bus 310 to the point where I felt like I was wasting my time.

Gen Eds

Note: I took a lot of these online over covid so they might’ve changed significantly since I took them.

S Tier

Afro Amer 154 - Hip-Hop and Contemporary American Society

This is definitely by far my favorite Gen Ed that I’ve taken here. I took it with Professor Shashko and he is super knowledgable and a great lecturer. I personally found the class super interesting as you learn about the history of hip hop and do some readings on it. For the final paper you get to pick a year and write about the top 3 impactful things you think happened in hip hop that year and justify it. Any class where you can get almost a perfect score on the final paper writing about: The Travis Scott McDonald Meal and Hamilton is a pretty good class in my opinion.

Lit Trans 276 - Special Topics in German and World Literature (German Folklore)

I think the Professor teaching this job hopped somewhere else but I thought this class was pretty interesting and relatively easy. We got to read a lot of fairy tales and it was interesting to analyze and make a small little presentation on them for the final project.

Comm Arts 355 - Introduction to Media Production

Ok first off, I would not take this course as a gen ed if you’re not already interested in media production or just want the credit. I took this course because I was interested in learning more about video production and I thought it was a great class for that although pretty intense. I definitely got some subpar group members which made the class a lot more difficult than it needed to be. But definitely interesting and I learned a lot about video production and editing.

A Tier

Anthro 105 - Principles of Biological Anthropology

This one is where you learn about the evolution of humans and get to do some cool online labs of like analyzing skulls and other bones to try to determine what species they are. I thought it was pretty interesting of a class and opened my eyes to some of the things that are studied in anthropology.

Genetics 133 - Genetics in the News

I feel like if I wasn’t in CS I would’ve at least considered majoring in genetics since it’s always seemed super interesting to me. This class is great for people who are interested in genetics and want some foundational knowledge about it that can help them understand the news better and discuss current events and news in genetics.

Music 113 - Music in Performance / Clap for Credit

The one, the only clap for credit. Great if you’re looking for an easy A and need to hit some credit requirements. I think the only con to this is that it’s a 1 credit class but takes up a good amount of time in your schedule as it’s just something else you have to do.

B Tier

Astron 103 - The Evolving Universe: Stars, Galaxies, and Cosmology

Was interesting, although at least somewhat fairly difficult. It definitely had interesting content and does make you feel quite small in the grand scheme of things, if you’re interested in space it’s good.

C Tier

Comm Arts 100 - Introduction to Speech Composition

I took this online and I didn’t like it. I felt like the content was pretty basic and I didn’t feel like I learned much from it.

My Full Semesterly Schedules

These are just all the semesters I’ve taken and the classes I’ve taken so hopefully you can get an idea of how difficult your schedule might be :D

Back to Blog