Surviving UMich CS Major

A compilation of tips, warnings, and strategies for navigating undergraduate Computer Science (EECS) coursework at the University of Michigan. Compiled by an alum who lived to tell the tale.

EECS 280 Diff: 🌶️🌶️

Programming & Intro Data Structures

Basic programming concepts, OOP, recursion, dynamic memory management, functional programming pointers, and object lifetimes in C++.

Survival Tip: Always write detailed unit tests before submitting. The autograder queue gets very long on deadline day; local testing saves hours.
EECS 281 Diff: 🌶️🌶️🌶️🌶️

Data Structures & Algorithms

The gateway course for CS. Explores complexity analysis, sorting, search algorithms, stacks, queues, trees, graphs, and dynamic programming.

Survival Tip: Start projects on Day 1. The runtime and memory constraints are very strict. Optimize your algorithm choice before typing code.
EECS 370 Diff: 🌶️🌶️🌶️

Intro to Computer Organization

Bridging hardware and software. Covers assembly code, machine code instruction sets, CPU datapath pipelines, caches, and virtual memory.

Survival Tip: Draw cache and pipeline state charts by hand. Master cache mappings (direct, fully/set associative) and hazards early on.
EECS 376 Diff: 🌶️🌶️🌶️🌶️

Foundations of Computer Science

Theoretical boundaries of computing. Explores automata theory, Turing machines, decidability, NP-completeness, and basic cryptography.

Survival Tip: Focus on reduction proof methodologies. Practice writing logical mathematical claims, and form study groups to dissect problem sets.
EECS 482 Diff: 🌶️🌶️🌶️🌶️🌶️

Introduction to Operating Systems

Multithreading, concurrency control (locks, condition variables), virtual memory systems, physical memory mapping, and file system layouts.

Survival Tip: Choose your project group extremely carefully. Sketch comprehensive state diagrams to locate deadlock potentials before writing a single lock.
EECS 485 Diff: 🌶️🌶️🌶️

Web Systems

Modern web architectures. Includes client-server setups, REST APIs, templates, relational databases, security, search engineindexing, and MapReduce.

Survival Tip: Excellent industry preparation. Projects are large, so keep a clean Git branch structure and divide tasks efficiently among team members.