← Back to Home

My Course Journey

This page documents my academic journey through various courses, including my understanding, experiences, and projects completed during these courses.

Filter by Institution: All | Stanford | UW-Madison

Home | Research | Projects | Blog | Courses | Ask Me

Summer 2025

Institution: Stanford University

CS 107: Computer Organization and Systems

Instructor: Adam Keppler and Ola Adekola | TA: Ben Yan

Grade: A+ (99/100)

Course Description

A comprehensive systems programming course covering the fundamentals of computer organization, including data representation, machine-level programming, memory management, and security vulnerabilities.

Key Projects & Contributions

  • Assignment 6 - Heap Allocator: Implemented both implicit and explicit free-list heap allocators with advanced features including coalescing and footer optimization
    → Interactive Heap Allocator Visualization
  • Assignment 5 - Banking on Security: Explored buffer overflow vulnerabilities and security exploits in a controlled virtual bank environment
  • Security Contribution: Discovered vulnerabilities in Stanford's AFS (Andrew File System), responsibly disclosed them following proper protocols, and provided comprehensive solutions to the engineering team

Key Learnings

  • Low-level C programming and memory management
  • x86-64 assembly and machine architecture
  • Debugging with GDB and Valgrind
  • Security vulnerabilities and responsible disclosure
  • Performance optimization and cache efficiency

Reflection

CS 107 was my favorite course of Summer 2025 at Stanford. The combination of theoretical knowledge and hands-on implementation gave me a deep understanding of how computers work at the lowest levels. The heap allocator assignment was particularly rewarding—I completed all challenge functions and created a bidirectional free list implementation that significantly improved allocation efficiency.

The security assignment inspired me to explore real-world vulnerabilities, leading to my discovery of issues in Stanford's AFS system. Working with the teaching team on responsible disclosure was an invaluable learning experience.

→ Read my detailed CS 107 blog post


CS 161: Design and Analysis of Algorithms

Instructor: Matthew Sotoudeh

Grade: A (93/100)

Course Description

Fundamental algorithmic concepts including sorting algorithms, search trees, heaps, and hashing. Divide-and-conquer, dynamic programming, and greedy algorithm design paradigms. Graph algorithms including traversal, shortest paths, minimum spanning trees, and network flows. Emphasis on asymptotic and amortized analysis.

Key Learnings

  • Sorting: Selection, insertion, merge, quicksort, heapsort, and comparison lower bounds
  • Trees: BSTs, AVL trees, 2-3 trees, red-black trees, splay trees
  • Asymptotic Analysis: Big-O notation, best/worst/average cases, recurrence relations
  • Amortized Analysis: Aggregate method, potential method, dynamic arrays
  • Hash Tables: Hash functions, collision resolution, expected performance
  • Graph Algorithms: DFS/BFS, shortest paths (Dijkstra, Bellman-Ford, Floyd-Warshall), MST (Prim, Kruskal), max flow/min cut
  • Algorithm Design: Divide-and-conquer, dynamic programming, greedy algorithms

Projects Inspired by This Course

Reflection

CS 161 transformed how I think about algorithm design and analysis. Before this course, I was confused about how to measure and compare different algorithms systematically. The course taught me the philosophy of evaluating algorithms analytically rather than empirically, breaking down complexity into inputs, internal decisions, and data structure operations.

Matthew Sotoudeh's comprehensive teaching and excellent written materials made complex topics accessible. His practice of repeating student questions ensured everyone could follow along, which was particularly helpful in such a fast-paced course.

→ Read more about my CS 161 experience


Fall 2025 Semester (Current)

Institution: University of Wisconsin–Madison

COMP SCI 352: Digital System Fundamentals

Instructor: TBD

Course Description

Logic components, Boolean algebra, combinational circuits, circuit simplification. Decoders and multiplexers, arithmetic and logic units. Flip-flops, state machines, design and implementation of sequential logic circuits. Introduction to computer organization.

Topics Covered

  • Boolean algebra and logic gates
  • Combinational and sequential circuit design
  • State machines and finite automata
  • Digital system components: ALUs, multiplexers, decoders
  • Memory elements and flip-flops

COMP SCI 354: Machine Organization and Programming

Instructor: TBD

Course Description

An introduction to fundamental structures of computer systems and the C programming language with a focus on the low-level interrelationships and impacts on performance. Topics include the C programming language, data representation, memory management, caching, pipelining, system-level I/O, and concurrency.

Topics Covered

  • C programming and pointers
  • Memory hierarchy and cache optimization
  • x86-64 assembly language
  • System calls and OS interfaces
  • Process management and concurrency
  • Performance optimization techniques

COMP SCI 400: Programming III

Instructor: TBD

→ View CS400 Course Page with Materials & Assignments

Course Description

Advanced programming concepts including abstract data types, algorithm complexity analysis, and advanced data structures. Emphasis on team-based software development, version control, and collaborative programming practices.

Topics Covered

  • Advanced data structures (trees, graphs, hash tables)
  • Algorithm analysis and complexity
  • Object-oriented design patterns
  • Team-based software development
  • Testing and debugging strategies
  • Version control and collaboration

Group Project Structure

Projects in CS400 emphasize practical experience with tools and algorithms while developing communication and collaboration skills. Each student is graded individually on their specific contributions, with support from both team members and a larger group working on similar projects.


Spring 2025 Semester

Institution: University of Wisconsin–Madison

COMP SCI 200: Programming I

Instructor: Professor Jim Williams

Course Description

An introductory programming course focusing on fundamental concepts using Java.

Key Learnings

  • Reinforced core programming fundamentals
  • Enhanced understanding of lower-level operational logic
  • Developed teaching and peer support skills
  • Gained confidence in collaborative learning environments
public class Student { private String name; private int age; private double gpa; public Student(String name, int age) { this.name = name; this.age = age; this.gpa = 0.0; } public void updateGPA(double newGPA) { if (newGPA >= 0.0 && newGPA <= 4.0) { this.gpa = newGPA; } } public String getStatus() { if (gpa >= 3.5) return "Dean's List"; if (gpa >= 2.0) return "Good Standing"; return "Academic Warning"; } }

Reflection

While the material was relatively straightforward, the discussion sections proved to be the most valuable aspect of the course.

The opportunity to assist classmates not only reinforced my own understanding but also deepened my appreciation for programming fundamentals.

Professor Williams' teaching style was particularly effective - engaging, clear, and well-paced.

This experience has inspired me to consider becoming a TA for this course in the future.


E C E 252: Introduction to Computer Engineering

Instructor: Professor Bhuvana Krishnaswamy

Course Description

A foundational course in computer organization and low-level computing concepts.

Key Learnings

  • Understanding of computer organization
  • Assembly language programming
  • Byte and register-level data management
  • Computer architecture fundamentals
;************************************ ; Multiples two numbers AxB ; ; Parameters ; R0 - A ; R1 - B ;Returns ; R0 - AxB ;************************************ MULT ST R2, MULT_R2 AND R2, R2, #0 ADD R1, R1, #0 BRp MULT_LOOP AND R0, R0, #0 BR END_SUB MULT_LOOP ADD R2, R2, R0 ADD R1, R1, #-1 BRp MULT_LOOP ADD R0, R2, #0 LD R2, MULT_R2 END_SUB RET MULT_R2 .BLKW 1 .END

Reflection

This was my favorite course of the semester.

The exploration of assembly language and low-level computing concepts provided a fascinating insight into how computers operate at their core.

The course structure, featuring one lecture and two group-based discussion sections weekly, effectively reinforced the material.

This experience has motivated me to pursue COMP SCI 352: Digital System Fundamentals and COMP SCI 552: Introduction to Computer Architecture in future semesters.


MATH 340: Elementary Matrix and Linear Algebra

Instructor: Professor Ruhui Jin

Course Description

An advanced mathematics course covering matrix operations and linear algebra concepts.

Key Learnings

  • Linear transformations
  • Matrix operations
  • High-dimensional mathematical structures
  • Applications in machine learning and neural networks

Reflection

This intellectually stimulating course provided a deeper understanding of mathematical structures.

The concepts of linear transformations have significantly enhanced my understanding of neural network architectures, like Transformers.

While I'm performing well academically, I recognize the need for further study to fully grasp the interconnections between concepts.


COMP SCI 240: Introduction to Discrete Mathematics

Instructor: Professor Mitch Keller

Course Description

A course covering fundamental discrete mathematics concepts and their applications in computer science.

Key Learnings

  • Mathematical proofs
  • Relations and functions
  • Graph theory
  • Tree structures
  • Abstract logic

Reflection

This was the most challenging course of the semester, primarily due to the abstract nature of the content.

While I understand the importance of these concepts for data structures and algorithms, I found it difficult to maintain motivation for some of the more theoretical aspects.

I hope to gain a deeper appreciation of these concepts through their application in future advanced CS courses.


Overall Semester Reflection

This semester has been transformative in several ways:

  • Solidified my interest in computer systems and architecture
  • Developed a passion for low-level programming
  • Gained valuable experience in collaborative learning
  • Enhanced understanding of theoretical mathematics in relation to machine learning
  • Improved communication and teaching skills through peer support

While not all subjects resonated equally, each course has contributed to shaping my academic path and future interests. I'm particularly excited about pursuing further studies in computer architecture and systems, while continuing to build on my mathematical foundation for machine learning applications.


Note: This page is continuously updated as I progress through my academic journey.


Home | Research | Projects | Blog | Courses | Ask Me

Feel free to clone my template Xuming Huang