Coursework at the University of Wisconsin–Madison. † denotes graduate-level courses.
Selected Course Notes
MATH 240 — Introduction to Discrete Mathematics
An introduction to discrete mathematics covering proof techniques, recursion and structural induction, recurrences, functions and relations, graphs and trees, finite automata and regular expressions, and counting.
MATH 341 — Linear Algebra (Honors)
One of the more rigorous linear algebra offerings at UW–Madison. We began with abstract properties of vector spaces, subspaces, and fields, then covered matrix computation, eigenvalues, diagonalization, Gram–Schmidt, and orthogonal complements. Notes in
whuang369/MATH-341.
CS 300 — Programming II
My first formal CS course at UW–Madison. Covered Java fundamentals (objects, polymorphism) and elementary data structures (BST, heap). Ten Java programming assignments.
CS 252 — Introduction to Computer Engineering
Compilation, basic digital logic, and assembly programming in LC-3.
CS 400 — Programming III
The final course in the Java sequence. Practical tooling (Linux, git) alongside algorithms (Kruskal, Dijkstra) and data structures (red-black trees).
MATH 521 — Analysis I (Honors)
Introduction to real analysis: basic set theory, topology on metric spaces, formal definitions of derivative and integral, and properties of sequences, series, and functions. Textbook: Principles of Mathematical Analysis by Rudin (formerly of UW–Madison).
MATH 541 — Modern Algebra (Honors)
Abstract algebra: basic set theory, group theory (with group actions), ring theory, Euclidean domains, PIDs, and congruence problems via CRT. Mostly followed Prof. Chenxi Wu's lecture notes.
Related blog posts.
MATH 551 — Elementary Topology (Honors)
Point-set topology: set theory, topology on metric spaces, then general topology.
Related blog posts.
MATH/CS 475 — Introduction to Combinatorics
Permutations and combinations, binomial coefficients, inclusion–exclusion, recurrences, generating functions, special counting sequences (Stirling, Catalan), and Pólya counting. Textbook by Prof. Brualdi (UW–Madison).
CS 540 — Introduction to Artificial Intelligence
Broad survey of classical AI topics; see the
course page for the full syllabus. Ten Python programming assignments. Solid probability and linear algebra are essential prerequisites in practice.
CS 502 — Theory & Practice in CS Education
Pedagogy seminar on CS education: use of LLMs, fostering belonging in CS courses, and the qualities of effective peer mentors. Included structured observations of TAs and peer mentors.
CS 577 — Introduction to Algorithms (Honors)
Taught by Prof. Dieter van Melkebeek. Greedy, dynamic programming, divide-and-conquer, network flow, P/NP/NP-hard/NP-complete, reductions, and randomness. Weekly graded problems plus optional practice; two midterms and one final. Strongly recommend the honors section.
CS 639 — Deep Learning for Computer Vision
Taught by Prof. Yong Jae Lee. CNNs, R-CNN, RNNs, optimization, object detection, segmentation, attention, vision transformers, VAEs, GANs, diffusion, and self-supervised learning.
MATH 522 — Analysis II (Honors)
Rudin Ch. 7–9: uniform convergence, Stone–Weierstrass, Fourier series, the Gamma function, the inverse and implicit function theorems, and the rank theorem. The honors track additionally covered Lebesgue theory.
MUSIC 60 — All-University String Orchestra
University string orchestra open to all students. I play cello. Weekly rehearsals with a concert at the end of each semester.