Coursework
My summary of CS, Math related courses at UW–Madison.
Computer Science
Course catalog ↗- Intro to Computer Networks (CS 640) Introductory course in the field of systems (CS). We basically learn how the internet works. More specifically we go through, network performance, the physical layer (encoding), the link layer (framing & error handling, L2 switching, ethernet, L2 reliable transmission), the network layer (IP introduction, efficient addressing, distance vector routing, link state routing, inter-domain routing, NAT & IPv6 & multicast), the transport layer (introduction, TCP connection management, TCP reliability support, TCP congestion control, TCP in-network support, Linux networking stack), network security, and the application layer (network applications, QUIC).
- Intro Reinforcement Learning (CS 639) (In progress)
- Intro to Artificial Intelligence (CS 540) Introductory course in the field of AI (CS). We get to learn the overall map of AI. More specifically we go through supervised learning (perceptron, logistic regression, neural network, gradient descent, SVM, decision tree, KNN, computer vision, convolutional neural network, naive bayes, natural language processing, recurrent neural network, LLMs), unsupervised learning (principal component analysis, hierarchical clustering, k means clustering), traditional AI (iterative deepening search, A* search, game theory, minimax and alpha-beta pruning), and reinforcement learning (multi armed bandit, markov decision process, deep reinforcement learning, multi-agent reinforcement learning).
- Intro to Operating Systems (CS 537) Introductory course in the field of systems (CS). We learn how the OS serves as an interface between hardware and applications. More specifically we go through virtualization (processes, scheduling, allocation, paging, TLB, multilevel page tables, swapping), concurrency (concurrency, locks, condition variables, deadlock, race detection), and persistence (I/O devices & HDD, SSD, file systems, FFS, LFS, journaling, RAID, container, distributed systems, VMM).
- Matrix Methods in Machine Learning (CS 532) (In progress)
- Intro to Web Development (CS 472) Introductory course in web development. We learn how to create and maintain web content. More specifically we go through, CMS, HTML, CSS, how the internet is made up, JavaScript (data types, control flow, functions, lists, loops, XSS, REGEX, function as first-class citizen, interacting with APIs), user experience & user testing, and security in web development.
- Programming 3 (CS 400) Third foundational course from the Java programming course sequence. We learn industry standards, more data structures, graph traversal algorithms, and complexity analysis. More specifically we go through, bash, SSH, Git version control, Make, BST rotations, Red-Black & B & AVL trees, anonymous classes & lambda expressions, Sets & Graphs, Spanning Trees, Prim's & Kruskal's & Dijkstra's algorithms, webservers, linear sorts, hash tables, javaFX, skip lists, streams and regex.
- Machine Organization & Programming (CS 354) Second foundational course from the Computer Engineering course sequence. We learn the structures of computer systems. More specifically we go through, learning the C programming language, I/O, virtual memory, heap & dynamic memory access, locality & cache, assembly & machine code, communication & interrupts, compiling and assembling.
- Programming 2 (CS 300) Second foundational course from the Java programming course sequence. We learn intermediate Object-Oriented programming. More specifically we go through, a review of basic Java programming, Inheritance & Interfaces & generics, algorithm analysis, recursion, searching & sorting, and analyzing different algorithms & data structure implementations of several abstract data types (Lists, Stacks, Queues, Binary Search Trees, Heaps).
- Directed Study in Computer Science (CS 298 with Professor Young Wu) (In progress)
- Intro to Computer Engineering (CS 252) First foundational course from the Computer Engineering course sequence. We learn how the computer really operates from the transistors and up. More specifically we go through, basic boolean algebra, basic combinational & sequential logic design, basic computer organization, and basic "LC3" assembly language programming.
- Programming 1 (CS 200) First optional foundational course from the Java programming course sequence. We learn the basic Object-Oriented programming process. More specifically we go through, basic data types, flow control (branching, methods, and loops), array(list)s, and I/O processing techniques.
Mathematics
Course catalog ↗- Intro to Cryptography (MATH/CS 435) Introductory course in the field of theory (CS). We learn the science of protecting information. More specifically we go through, classical cryptography (ancient cryptography, perfectly secure encryption), private-key cryptography (computational security, IND-CPA, cryptographic reductions, pseudo random functions, PRF to encryption, PRG & PRP, block ciphers, MAC, hash functions, IND-CCA security), and public-key cryptography (number theory, DLog & CDH & DDH, public-key cryptography, digital signature & certificate).
- Elementary Matrix and Linear Algebra (MATH 340) Foundational course in Linear Algebra. The topics we learn in depth are systems of linear equations, matrix algebra, determinants and diagonalization, vector spaces, linear transformations, change of basis, and inner product spaces.
- Introductory Probability (MATH 331) Foundational course in Probability. The topics we learn in depth are axioms of probability, conditional probability & independence, random variables, approximations of the binomial distribution, joint distribution of random variables, expectation & variance in a multivariate setting, tail bounds & limit theorems, and conditional distribution.
- Intro to Discrete Mathematics (MATH/CS 240) Foundational course in Discrete Mathematics. We learn basic concepts of mathematics with a focus on discrete structures. The topics we cover in depth are integer properties, logic, proofs, sets, functions, computation, induction & recursion, relations/digraphs, intro to counting, graphs, and trees.
Statistics
Course catalog ↗- Intro to Machine Learning & Statistical Pattern Classification (STAT 451) Introductory course in the field of AI (CS). We learn the algorithms and basic practices of Machine Learning. More specifically we go through supervised learning (SVM, linear regression, logistic regression, kernel regression, decision tree, KNN), unsupervised learning (density estimation, clustering, dimensionality reduction, outlier detection), basic practices (gradient descent, feature engineering, splitting data, underfitting/overfitting/bias/variance/regularization, hyperparameter tuning, cross-validation, algorithmic efficiency and model selection, assessing model performance), and ensemble learning (boosting, bagging, gradient boosting).