3 Best Classes I Have Taken @ UW-Madison
A Computer Engineering + Computer Science double major’s most valuable classes at the University of Wisconsin — Madison
Every student’s week-long contemplation begins when the list of courses for the next semester is out. Don’t worry, I have been there too. Pulling up an Excel sheet, making a wishlist of courses, comparing average GPAs and instructors’ Rate My Professor rating, and hitting enroll before someone else takes your spot. Some courses have vague descriptions, which makes it harder for students to decide what class they want to enroll in. This, in turn, makes the whole enrollment process more stressful than it should be. With that being said, I am not here to eliminate ALL of the stress pertaining to the enrollment process, unfortunately, but I do hope to shed some light on a few of the best engineering and CS courses that I have taken. This may inspire you to take the class, or not, altogether — both of which help your decision-making for your next enrollment date. So, without further ado, here are my two cents.
CS 540 — Introduction to Artificial Intelligence
First up we have the Introduction to Artificial Intelligence, also known as CS 540. Before we proceed, let me clarify that we did not build anything like the image above. Nonetheless, this class was one of my favorites and it was pretty cool.
Introduction to AI was one of the most interesting classes I have taken at UW mainly because of the skillsets that were focused on in the class. The growth in the space of AI is taking off at a proliferating rate; by 2028, we are expected to see the AI market over $997 billion, and around 83% of companies today consider AI to be their top priority. Moreover, a study conducted by McKinsey found that AI could potentially add $13 trillion to global economic activity. Not to mention the rapidly growing popularity of ChatGPT is taking over multiple industries. The trend is quite evident and AI is going to be an important skill to have especially if you are trying to break into tech.
Coming back to CS 540. CS 540 covers most of the critical AI/ML models and tools to understand the true applications of Artificial Intelligence in practice; for instance, logistical regression, neural networks, vector quantization, reinforcement learning, transformer models, etc. Furthermore, the theory aspect is complemented very well with ten different programming projects in Python. The first project focused on training a model that predicts whether a document is from 2016 or 2020 purely based on linguistic semantics. Some of the other projects were building convolutional neural networks, making an AI game, and solving puzzles using reinforcement learning.
I can break this course down into three main parts. We started off the course with classical learning methods, applying linear regression, and hierarchical clustering methods. In the next part, we focused on deep learning and implementing software packages using neural networks with the PyTorch library. And finally, we ended with learning reinforcement learning, understanding areas where AI/ML models can be applied in the real world, and also ethical considerations in this space.
This course will be a great starter for CS/Engineering majors to get a feel of one of the most disruptive technologies in the world today. The course is very well structured and the coding projects follow a week’s worth of theory taught by world-class professors. All-in-all, you would not go wrong by taking this course.
CS 407 — Foundations of Mobile Systems & Applications
Research has found approximately 84% of the world’s population owns a smartphone, which is a whopping 6.6 billion people. This number is just going to keep rising as the smartphone penetration rate increases in rural areas across the globe. This trend suggests the need for more engineers who understand how to build and maintain complex mobile applications. Companies such as Meta (Facebook), Twitter, Google, Netflix, and Amazon are always looking for bright individuals who can streamline their application functionalities, improve their application’s UI/UX, and be good at collaborating with team members. CS 407 focuses on instilling concepts of agile mobile development technologies while also learning different aspects of a smartphone.
When I took this class, I spent almost the first half of the semester learning theoretical concepts and performing weekly labs (coding projects). We had two exams — one halfway through the semester and the other in finals week. Both exams were non-cumulative, but the second half of the course does assume your foundations are strong! The topics covered in this class include Android Studio, GUI Components, invoking external APIs, persistent storage, and multi-threaded processes. The later part of the course also touches upon wireless communication and networking protocols such as TCP/IP.
A significant chunk of the grade is the final project, which you will work on in groups of 5–6 to build a complex mobile application using all the tools taught in class. The work on the final project starts in the initial weeks when you start by picking project partners. The rest of the flow might look something like this:
- picking project partners → brainstorming ideas as a group → picking a potential project idea → receiving feedback from the TAs and Professor → building wireframes and low-fidelity prototypes → commencing development of the project.
Although the professor and TAs are not looking for a very professional-looking mobile application, it is important to get your project to a working prototype or an MVP-level (Minimum Viable Product) application. To be able to succeed in this project it is extremely crucial to work as a team and demonstrate efforts. The staff was very helpful throughout the whole process and are there to ensure no one is feeling stuck at any point.
Overall, highly recommend taking this course for a great introduction to the realm of mobile application development. Given other course alternatives in the CS department, I found this to be more fun and less time-intensive.
InterEGR 397 — Engineering Communication
As engineers, we often overlook the importance of communicating our thoughts and ideas. Even if you have an absolutely groundbreaking solution to a problem, it is most likely going to waste if you cannot articulate it in a structured and succinct way. InterEGR 397 is a requirement for this very reason: it helps us engineers break down our ideas and communicate them in a way that even non-technical individuals can comprehend. If you can successfully make your teammates understand your ideas, it will boost your team’s overall project growth.
In this course, you will be working towards writing a research paper (as a group or individually depending on the instructor) where you will address an engineering problem and its potential solutions. This might seem like any traditional English class, but what sets it apart from it is the way you approach the issues. This course will push you to explain your reasons behind every solution and its impact on a global, economic, environmental, and societal level.
The course kicks off with resume and cover letter writing. It then moves on to students writing their elevator pitches and delivering them as well. It’s safe to say that this course helps you stand out in the job search with well-refined resumes, cover letters, and elevator pitches. One part I really liked about the course is the peer review: all our individual assignments were randomly assigned to another student for peer review, after which the Professor provided direct feedback. The class begins to pick up after this. Students must select a specific engineering problem that discusses a project idea and delves into significant detail about how they plan on solving it. This will be the technical proposal and every student must submit one of their own. The professor will then filter 1/3 of the proposals and make groups of 3–4 people based on similar ideas. This is the group you will be working with for the rest of the semester in writing your final technical report and presentation. The report needs to elaborate on the proposal and dive deeper into the solution. This is approximately 6000–9000 words split between the whole group.
For example, my proposal’s problem statement was combating the increase in fake news using artificial intelligence. My proposal was chosen out of the lot and my group and I ended up splitting the report evenly.
Along the way, the course also focuses a bit on ethical choices to make during solving engineering problems such as environmental considerations, human resources challenges, company core values, etc.
Overall, this class might seem dry in the first few weeks, but as you get into the final project, you will get a lot more flexibility on the topic to focus on for the rest of the semester. Moreover, if the report topic is of interest to you, it would definitely be more fun when performing research and writing the report as well!
If you have any questions about anything related to UW-Madison, please do not hesitate to reach out to me at apatil6@wisc.edu!