This is Xingpeng Sun's course guide @ UW-Madison

profile-pic


Introduction

My name is Xingpeng Sun, currently a senior undergraduate student at UW-Madison. I am a STEM student, double-majored in B.S. Computer Sciences, and Mathematics. I transferred 37 credits from AP and summer school. The courses I took are mostly related to my majors (CS & Math) and under the College of Letters & Science. This course guide may be helpful for students pursuing a similar academic path. Below is a detailed guide of all courses I have taken at UW-Madison.

Here is the link to my personal website: Xingpeng Sun portfolio website   




Computer Science & Math Course List

Course Name Course Topic Semester Instructor
COMP SCI/ECE 561 Probability and Information Theory in Machine Learning Fall 2022 Kangwook Lee
COMP SCI/BMI 567 Medical Image Analysis Fall 2022 Vikas Singh
MATH 475 Introduction to Combinatorics Fall 2022 Paul Terwilliger
COMP SCI 403 Internship Class CS & Data Science Summer 2022 Mollie Stolbov
COMP SCI/ECE 539 Introduction to Artificial Neural Network Spring 2022 Yu Hen Hu
COMP SCI/ECE 524 Introduction to Optimization Spring 2022 Line Roald
COMP SCI 537 Introduction to Operating Systems Spring 2022 Michael Swift
MATH 535 Mathematical Methods in Data Science Spring 2022 Sebastien Roch
COMP SCI/ECE 532 Matrix Methods in Machine Learning Fall 2021 Eduardo Romero Arvelo
COMP SCI 559 Computer Graphics Fall 2021 Eftychios Sifakis
COMP SCI 639 Elective Topic in Computing: Introduction to Computer Vision Fall 2021 Mohit Gupta
MATH 309 Intro to Probability & Math Statatics 1 Fall 2021 Miranda Rintoul
COMP SCI 638 Undergrad Topics-Computing: Capstone Fall 2021 Amber Field
COMP SCI 577 Introduction to Algorithms Spring 2021 Marc Renault
COMP SCI 564 Database Management Systems Spring 2021 Xiangyao Yu
MATH 319 Tech-Ordinary Differential Equation Spring 2021 Skylar Grey
COMP SCI 540 Introduction to Artificial Intelligence Fall 2020 Yingyu Liang et al.
COMP SCI 354 Machine Organization And Programming Fall 2020 Deb Deppeler
COMP SCI/MATH 514 Numerical Analysis Fall 2020 Chenxi Wu
COMP SCI/ECE 252 Introduction To Computer Engineering Summer 2020 Eric Hoffman
COMP SCI 400 Programming III Summer 2020 Florian Heimerl
COMP SCI 368 Matlab Programming Summer 2020 N/A
MATH 421 Theory of Single Variable Calculus Spring 2020 Siddesh Wagh
MATH 340 Elementary Matrix & Linear Algebra Spring 2020 Yousheng Shi
COMP SCI 300 Programming II Spring 2020 Gary Dahl
MATH/COMP SCI 240 Intro to Discrete Mathematics Spring 2020 Jun Le Goh
MATH 234 Calculus-Functions of Variables Fall 2019 Sergey Bolotin
COMP SCI 200 Programming I Fall 2019 Marc Renault



General Education Course List

Course Name Course Topic Semester
ENVIRST 100 Forests of the World Fall 2022
ENGL 150 Literature & Culture of Asian America Fall 2021
ASIAN AM 246 Southeastern Asian Refugees of Cold War Spring 2021
ANTHRO 105 Principles - Biological Anthropology Fall 2020
GERMAN 267 Yiddish Song and Jewish Experience Fall 2020
CLASSICS 322 The Romans Summer 2020
MUSIC 151 Basic Concepts of Music Theory Spring 2020
ESL 118 Academic Writing II Spring 2020
ESL 117 Academic Writing I Fall 2019
ECON 302 Intermediated Macroeconomic Theory Fall 2019
BOTANY 240 Plants and Humans Fall 2019


Transfer Credit

Course Name Course Topic Transfer From (=37 credits)
CHEM 103 General Chemistry I AP Chemistry
ECON 102 Principles-Macroeconomics AP Macroeconomics
ECON 101 Principles-Microeconomics AP Microeconomics
MATH 221 Calculus&Analytic Geometry 1 AP Calculus BC
MATH 222 Calculus&Analytic Geometry 2 AP Calculus BC
PHYSICS 207 General Physics AP Physics C-Mechanics
STAT 301 Intro-Statistical Methods AP Statistics
GEN ELCT X12 (AP U.S. History) AP U.S. History
ECE X10 Electives Carnegie Mellon University Summer Pre-College
GEN ELCT X12 Electives Carnegie Mellon University Summer Pre-College



Course Details



COMP SCI/ECE 561

This course talks about the probability side of machine learning. This is a theoratical ML course taught by Dr. Kangwook Lee. We start from calssification, regression, probability decision theory and relative entropy. Then we dive deeper and include naive Bayes, graphical models, discriminant analysis, and variational inference. The course topic is challenging and the teaching speed is fast, so it is better for students to have fundenmental understanding about probability theory and machine learning knowledge. In one sentence, CS561 & CS532 are two theoratical ML classes that prepare you for future graduate level research.





COMP SCI/BMI 567

Medical image analysis is an application field of computer science, especially AI. Topics include medical imaging formats, segmentation, registration, image quantification, classification. The class size is very small, only 20 people, which is unusally for a 500-level computer science class. The course is project-oriented and uses Matlab for coding. You will learn a lot about interdisciplinary research between medicine and computer science.





MATH 475

MATH 475 focuses on combinatorics, a really familiar topics for Haidian students who studied Math Olympiad from elementary school. And the first half of the course topic is exactly the same as elementary school Math Olympiad: counting strategies, permutations, combinations, pigeonhole principle, etc. The second half of course material is challenging, including generating functions, Polya counting, etc. We have weekly problem sets and 3 take-home exams in fall 2022. Ten years ago I was admitted by RDFZ because of Math Olympiad performance, and now I'm learning advanced combinatorics topics in my senior year. Life is a circle, moving in an ascending spiral.





ENVIRST 100

This is an environment science course about forest. Climate change, species extinctions, and many global problems depends heavily on the planet's forests, so it is important for us to have a good understanding of the ecology of forests of the world. We have 2 essays, 2 group projects, 1 midterms, and a news brief assignment in fall 2022. The courseload is not heavy and the grading seems to be friendly too. If you are interested in environmental topics and wants to find some course that makes your senior year less stressful, this course may be a good option. Also, it fulfill the biological science general education requirement.





CS 403

CS 403 is the intership course. Once you have an CS&DS intership outside campus, you need to take this course. The course intends to give you information about computer science career and helps student to build up career goal. It is a 1-credit course, so the courseload is small. In summer 2022, we also get the chance to develop and revise our resume, cover letter, and graduate school statement with the help of instructors. I think it's a practial course.





CS/ECE 539

This is a machine learning course talking about artificial neural networks, which means if you are an ML fan, you should consider taking CS 539 (I also notice that many graduate students will take this course in their first year). It first gives you an overview of the essential math background of ML, such as linear algebra, probability, and useful evaluation metrics. Then, it goes deeper into machine learning components such as classification models, SVM, MLP, convolution neural networks, deep learning, and much other related knowledge. There are 1 midterm and 1 final exam, which are challenging. However, professor Hu is very nice to undergraduate students, and he will curve undergrad scores at the end of the semester. This course has a final project which allows you to do something cool with the artificial neural network.





CS/ECE 524

This is a very popular course at UW-Madison lol. Its topic ranges from convex and linear programming to nonconvex and combinatorial models. You will learn to describe problems provided in plain text in mathematical models and build the ability to make use of Julia Optimization models to solve exciting engineering problems. It has 1 midterm and a final project. You will work within a team to use optimization models to solve real-world problems (interesting). By the way, the weekly homework is sometimes challenging.





CS 537

The famous operating systems course. The course material is divided into three little pieces: virtualization, concurrency, and persistence, giving a fundamental overview of operating systems. Professor Mike talks fast in lectures, so it is really important to read the textbook (which is written by Prof Remzi). There's no doubt that CS537 is a tough course (at least all my friends agree on this). The project is not very straightforward, and debugging the xv6 code is definitely a challenge too. Many CS major students take this course to fulfill the "Software & Hardware" requirement.





MATH 535

Unlike most 500-level math courses that focus mainly on pure math and rigorous proof, MATH 535 is a course about mathematical methods applied in data science field. Its topic includes regression, spectral graph theory, optimization, and many other mathematical models that extensively used in data science applications. It is a good choice for students who like applied mathematics and have some experience with programming.





CS/ECE 532

A theoratical machine learning course that is given by ECE department. The course is taught in the flip-classroom mode: watch lecture videos before class and then do quiz in class. This course is purely about the linear algebra portion of machine learning. Mathematical topics covered include: linear equations, regression, regularization, the singular value decomposition, and iterative algorithms. Machine learning topics include: the lasso, support vector machines, kernel methods, clustering, dictionary learning, neural networks, and deep learning. There are 6 exams in total and the workload is reasonable. One interesting thing about this course: you are asked to write unit summary for each unit, so it's not only a course to practice your coding skill but also writing skill.





CS 559

The topic includes linear transformation, curve, 2D&3D graphics, shaders, and many other fancy computer animations. JavaScript is the language mainly used for this course. The projects are open-ended that give students the opportunity to show their creativity and JS skills. Projects can be time-consuming if you want to make it very pretty and cool. The grading of this course is also largely depend on projects, so be creative and draw something cool :).





CS 639

There are many topics under CS639, and I took "Introduction to Computer Vision" in Fall 2021. Undoubtedly, computer vision is one of the most popular research fields in Computer Science. Each year, tons of computer vision applications and research papers are produced and implemented in the real world. However, this course's content is a little out-of-date. We did not cover state-of-art CV topics in the lecture, so if you are interested in computer vision, this course is just a good starter. There is a final project which gives students the freedom to explore the computer vision world and make use of computer vision techniques. The course workload is not large in comparison to other 500-level CS courses. However, the homework is written in Matlab, and it takes me some time to get used to it.





MATH 309

This is the intro to probability course, giving you basic ideas about random variables, distributions, and probability knowledge. I took this course to meet a Math major Elective requirement. In Fall 2021, we have weekly discussion to discuss lecture topics and do exercise together. The homework is relatively easy and the exam is also straight-forward. A nice course with light workload.





ENGL 150

ENGL150 is a popular general education course that meets literature requirements. The course talks about Asian Americans' history and life in America. The workload is high. You are asked to read ~6 books, write two essays, and take two exams in this course. This is not the general education course that you can easily get credits, but it's worthy of spending time on for those who like history and are interested in Asian American's life.





CS 638

In my opinion, CS638 is an internship course (while you do not get paid). You got the chance to work with large tech companies, such as Epic Systems, Capital One, etc. Mentors from companies provide ambiguous requirements, and your team spends a whole semester implementing it in codes and making an app. In the lecture, the instructors led us to do the user story and prototype, and let us practice DevOps such as agile workflow. Outside the lecture hall, we work in teams to develop an app just like what you would do in an internship. A practical computer science course for students who want to experience the industrial software engineer life.





ASIAN AM 246

A humanity course that I took purely for interest. This course has only three essays and no exams. I took it during the pandemic, so basically, all I did was listen to recordings, read books, and write essays every month. The topic is about Vietnam War, mainly focusing on the history of Vietnam, Cambodia, and Laos. If you are also interested in history and want to have a look at Southeastern Asian region from historical, political, and ethnic sides, then I strongly suggest you consider this course.





CS 577

The controversial famous algorithm course here at UW-Madison. First of all, this course is definitely a fruitful course, introducing topics like divide and conquer, dynamic programming, graphs, NP, etc. These are popular topics in SWE interviews, so CS577 is really a useful course that may facilitate your job-finding process. While this is also a challenging course. Homeworks are proof-based, so we not only write codes but also extensively do mathematical proof, which is hard. Anyway, CS577 is a compulsory course so take it as soon as you are prepared.





CS 564

The only database class for undergraduate students--CS564. Database is also a popular field in Computer Science and this course gives you a basic idea. The topic ranging from SQL, database systems, relational algebra, etc. One thing I want to mention is that the material and homework are a little out-dated. There are 3 problem sets and 3 group projects. Professor Xiangyao Yu explained concepts quite well and control the speed of teaching in a comfort pace.





MATH 319

This is the course focusing on solving Ordinary Differential Equation (ODE). Unlike 500-level math course, 300-level course do not emphasize on rigorous proof but on computing and understanding the math concepts. Given this premise, MATH319 gives me the opportunity to solve ODE encountered in physics, applied mathematics, biology, population modeling, etc. This course teaches you techniques in modeling real-world problems in differential equations and solving it. In spring 2021, we have 3 exams and weekly online homework.





CS 540

One of my favorite course at UW-Madison. Currently, AI is really on-fire on social media and in our life. If you are a AI fan, consider taking this course as your first AI course. In the first part of CS540, instructors would introduce some traditional AI algorithms, such as A* search, game theory, etc. Then, the most exciting part comes--Machine Learning. CS540 won't emphasize too much on ML, but gives you a flavor of traditional supervised / unsupervised learning applications, such as classification, regression, convolutional neural network, etc. There are 10 well-designed homework. We get a change to implement AI stuff in python and train AI models by ourselves. I also peer-mentored this course in Spring 2021, and here is the LINK to the course website.





CS 354

This course has mainly 3 sections: 1. C programming; 2. assembly language; 3. foundation of systems. This is the traditional CS course that really emphasizes details and C coding skills. You will learn fundamental computer knowledge from this course, such as memory, cache, pages, etc. I would say CS354 is a difficult course and needs students to work hard and learn things quickly to succeed.





ANTHRO 105

I took this course to fulfill Biological general education requirement. One interesting activity in this course is observing skulls. We are asked to observe skulls and tell the origin and species of each skulls.





CS/MATH 514

Numerical analysis is a applied area between computer science and mathematics. The course content includes methods for solving boundary value problems, polynomial interpolation, numerical differentiation, etc. In fall 2020, this is a pure math course extensively emphasized on proof. I took this course to fulfill advanced mathematics requirement for my Math major. Personally, I would suggest not taking this course too early (for example in Sophomore first semester) or under online teaching form. Also, for students interested in learning more about how computer science is used in numerical analysis, CS513 might be a better fit.





GERMAN 267

This might be one of the most relaxing course I have taken at UW-Madison. GERMAN 267 introduces Jewish history and their literature. For students who want to fulfill humanity general education requirement and learn Jewish history, I highly suggest taking this course. The course workload is light but I still learned a lot from it. Good course.





CS/ECE 252

This is an introduction course to the engineering side of CS. CS major students usually take this course in their Freshman year. The course material covers basic idea of computer science, such as bit operations, Von Neumann model, and assembly language programming etc. In summer, this course is taught in flip-classroom mode and in a speedly way (faster than usual semester). Meanwhile, this is also a prerequisite for CS354, so fully understand this course's material would definitely helps your future CS354's learning.





CS 400

CS400, the 3rd programming course in UW-Madison. Java is the language used in CS400. We covered topics like graph theory, JavaFX, hashtable, etc. In the summer term, we have five projects and one final individual project. The course is always intense in the summer term, and so is CS400. I would suggest taking this course in a usual semester with friends and planning for an exciting final project that can be written in a resume.





CLASSICS 322

This is the most intensive general education course I've taken at UW-Madison. CLASSICS 322 can both fulfill literature and communication B requirements. This course talks about ancient Roman: Roman history, Roman culture, and also Roman literature. In the summer, students have to read 10-70 pages of reading materials and write a 4-pages essay each week. The book assigned in Summer 2020 is "Aeneid." It is a challenge for a STEM student to read ancient literature, but once you try, you will fall in love with literature.





MUSIC 151

MUSIC 151 talks about music theory, so don't worry if you are not good at singing, just like me. The course briefly covers music notation, music history, and music analysis. The homework is interesting but not hard, and the grading is very friendly. This course counts toward the humanity course, which can fulfill general education requirements.





MATH 421

MATH 421 is a mathematics analysis course that mainly focuses on the calculus section. Just like all analysis courses, MATH 421 is a proof-based course too. The good news is, the topic is traditional and familiar to most students, so it is a friendly analysis course for math majors. Students usually take MATH 421 with MATH 340 to fulfill the intermediated analysis and linear algebra requirements that 500-level courses demand. In Spring 2020, we had three exams and weekly homework.





MATH 340

MATH 340 is the linear algebra course. Linear algebra is a useful tool in any area, especially math and computer science, so a good linear algebra background is a must for future STEM studies. MATH 340 covers topics like the linear equation, determinant, basis, singular matrix, eigenvalue, etc., and is more computing-based than MATH 341. Also, this is a prerequisite for almost all MATH 400-level, 500-level, and 600-level courses, so take this course (or MATH 341) early if you want a Math major.





ESL 118

ESL 118 must be a nightmare for all international freshmen. This is the academic writing course that all international students must take. Students are asked to write three academic essays, each 4-8 pages. I think ESL 118 is a helpful class for the reason that it teaches students to improve their academic writing skills, and academic writing is a crucial ability in their future careers. Thus, students should take ESL 118 as soon as possible. Also, the course load is hefty, so taking ESL 118 in the first year is a good option (usually, students do not have challenging major courses in the first year).





CS 300

CS300, the 2nd programming course in UW-Madison. You will learn data structure in CS300. Popular data structure like heap, stack, binary tree, etc., is introduced in CS300. Java is the language used in this course, and zybook is the textbook for CS300. As an introductory level CS course, CS300's course load is average, and the material is not challenging (but very useful). The exam of CS300 is a little tricky, for it extensively focuses on details and programming syntax.





MATH 240

MATH 240 is the discrete math course. Discrete math is a required course for both Math and CS major. This course is useful because it establishes foundation for math & CS concepts. (This is a prerequisite for CS577 algorithm class.) Because of the pandemic, this course was transfered into online course in Spring 2020. We have 3 exams and weekly proof-based homework. I would suggest to look over lecture notes and homework before exams.





ESL 117

This is the academic writing course before ESL 118. Before the first semester, international students receive an English entry test and will be assigned to a specific level (ESL 115-118) based on the test score. I was assigned to the ESL117 level, which means I need to take ESL 117 +ESL 118 to fulfill the academic writing requirement. ESL 117 is a good starter for college academic life. The coursework is relatively easy, so it's a good fit for a freshman. Also, ESL 117 will help you further succeed in ESL 118. I highly suggest students finish ESL courses in their first year rather than waiting until senior year.





ECON 302

ECON 302 talks about Macroeconomics. Economics is an interesting subject and it's worthy to spend a semester learning some fundenmental economics knowledge (though I'm not an Econ major). Macroeconomics contains topics like GDP, inflation, recession, economic models, etc. The homework is not heavy, but requires time and thinking. I took ECON 302 to fulfill the social science general education requirement.





BOTANY 240

BOTANY 240 is a course that fulfills Biological science general education requirements. The courseload is below average (at least I think this way): there is basically no homework. I experienced my first field trip in this class. However, the exam is not easy. Students have to read the textbook and memorize many botanical terms and lecture notes to get good grades. Extra credits are provided, so the grading is flexible.





MATH 234

This is my first college course. MATH 234 talks about multi-variable calculus. The course content is abstract for freshman students, so be prepared to self-teaching and ask for help. MATH 234 is a course that has TA-led discussion (most Math courses do not have discussion sessions). In Fall 2019, we had three exams, and they were all relatively easy. Students in STEM majors are required to take this course.





CS 200

CS 200 is the first introductory computer science course. You are going to write your first line of code in this class. Many students with AP Computer Science could jump CS200 and directly attend CS300. The course content is very easy, containing variables, loops, classes, etc. While, the exam is not easy. It requires you to be very careful and extensively focus on programming details. If you intend to major in CS, then definitely take this class as soon as possible.