Skip to main content
UW
Computer Science & Engineering
4 credits

UW CSE 351: The Hardware/Software Interface

CSE 351 explains how the software you write actually runs on hardware: binary and integer/floating-point representation, x86-64 assembly, the memory hierarchy and caching, the stack, and how C maps down to the machine. It's the bridge between high-level programming and the physical computer underneath.

Fennie is independent and not affiliated with University of Washington. This is an unofficial study guide.

What makes it hard

The material is a flood of unfamiliar low-level detail (two's complement, IEEE floating point, assembly, stack frames), and it's all interconnected, so a gap early cascades. Reading and reasoning about assembly is a genuinely new skill, and the labs (especially the bomb-lab-style reverse-engineering assignments) are time sinks that punish students who don't build steady habits.

What you'll cover

  • Binary, two's complement, and bit manipulation
  • IEEE floating-point representation
  • x86-64 assembly
  • The stack and procedure calls
  • The memory hierarchy and caching
  • How C maps to machine code

The CSE 351 study guide

How to study for UW CSE 351, step by step.

  1. 1

    Get number representation airtight in week one

    Two's complement, bit operations, and floating point underpin everything in CSE 351. If they're shaky early, assembly and the labs become incomprehensible. Drill conversions until they're instant.

  2. 2

    Practice reading assembly daily

    Tracing x86-64 and mapping it back to C is a new skill that only builds through reps. Take small C functions, compile them, and read the assembly until the patterns (loops, conditionals, function calls) are recognizable on sight.

  3. 3

    Start the reverse-engineering labs immediately

    The assembly labs are notorious time sinks, and the debugging is slow. Beginning the day they open leaves room to learn the tools instead of panicking at the deadline.

  4. 4

    Connect each topic to the ones around it

    Stack frames, calling conventions, and the memory hierarchy interlock. Study them as a connected system, not isolated facts. Exam questions deliberately span the boundaries.

Today

Today's CSE 351 plan

Preview
65 min

What a Fennie Daily Plan looks like for CSE 351. Yours is built from your own syllabus and adapts every day to your deadlines and progress.

0 / 4 done~65m remaining
Keep this plan free

First plan free, no card required. Fennie is independent and unaffiliated with your school.

FAQ

Is CSE 351 hard?

It's a dense, detail-heavy course where everything connects, so falling behind compounds fast. The labs are real time investments. Students who lock down number representation early and read assembly daily manage it well.

Do I need CSE 351 before CSE 333?

CSE 351 is the usual prerequisite for CSE 333. It gives you the memory and machine model that systems programming in C and C++ builds on. Check current Allen School requirements.

How do I study for CSE 351 exams?

Practice reading and tracing assembly until the patterns are automatic, and study stack frames, calling conventions, and caching as a connected system, since exam questions span those boundaries.

More UW courses