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.

Build my CSE 351 study plan

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.

  5. 5

    Let Fennie keep the interlocking topics on track

    Upload your CSE 351 syllabus and Fennie's Daily Plan paces representation, assembly, and memory-hierarchy practice to your exam dates and lab deadlines, with quizzes generated from your actual course materials. Free to start.

    Start my CSE 351 plan free

How Fennie helps with CSE 351

Fennie's Daily Plans pace CSE 351's interlocking topics — representation, assembly, the memory hierarchy — to your exam dates and lab deadlines, so a gap in one doesn't cascade into the next. Chat through how a C snippet compiles to assembly or why a cache miss happens, and quiz yourself on two's complement and floating point before exams.

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.

Pass CSE 351 with a plan, not a cram

Upload your CSE 351 materials and Fennie generates a Daily Plan paced to your deadline — plus chat, flashcards, and quizzes built from the actual course content.

Get started free

More UW courses