55AA-006B

Assembly Language

Level
Undergraduate
Status
Under development

Note: this course is still being designed and calibrated; the page content is for reference and does not represent the final teaching version.

Syllabus

Course Overview

Assembly Language trains students to reason directly about machine state: registers, stacks, calling conventions, linking, exceptions, system calls, and disassembly. The course compares RISC-V and x86-64 for systems programming, reverse engineering, exploitation, and performance debugging.

This is the machine-level foundation for systems programming, software security, cryptographic implementation, and embedded systems.

Prerequisites

  • Computer organization fundamentals.
  • Familiarity with C pointers, arrays, and function calls.
  • Ability to use command-line tools, compilers, and debuggers.

Learning Outcomes

  • Read and write small assembly programs.
  • Explain ABIs, calling conventions, stack frames, and linking.
  • Use debuggers and disassemblers to locate machine-level bugs.
  • Understand machine-level manifestations of integer, memory, and control-flow errors.
  • Build machine-level intuition for systems code and security analysis.

Course Format

  • Two meetings per week: one for core concepts and one for labs, paper discussion, or project review.
  • The course proceeds over 16 weeks, each with a checkable assignment, lab, or project milestone.
  • Reproducibility is required: code, configuration, data, lab logs, and reports must be reviewable by staff or peers.

Weekly Plan

Week 2

ISAs, registers, and instruction formats: lab and review

Write and single-step a small RISC-V program. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 4

Data representation, addressing, and memory: lab and review

Analyze array, struct, and pointer access. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 6

Control flow and function calls: lab and review

Recover C control flow from assembly. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 8

ABIs, stack frames, and linking: lab and review

Debug calling-convention and linking errors. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 10

System calls, exceptions, and interrupts: lab and review

Implement a minimal user-space syscall wrapper. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 12

x86-64 comparison and disassembly: lab and review

Use objdump and gdb to recover program behavior. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 14

Machine-level security and performance: lab and review

Observe stack corruption, ROP fragments, and hot loops. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 16

Assembly project and review: lab and review

Submit an assembly library, tests, and debugging notes. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Assessment

Individual assignments

Concept questions, reading responses, design tasks, and small programming or lab exercises.

25%
Labs and project

Assembly implementation, disassembly analysis, debugging records, and tests.

40%
Participation and review

Participation in discussions, demos, code or paper reviews, and peer feedback.

10%
Final report and defense

Submit reproducible artifacts, a technical report, and a demo explaining methods, results, limitations, and future work.

25%

Course Project

Students implement a small assembly library, interpreter fragment, or reverse-engineering task with tests, debugging notes, and comparison against a C implementation.

Policies

  • AI tools are allowed, but generated code, lab notes, and design suggestions must be reviewed by the student and disclosed in the report.
  • Students may not submit code, proofs, configuration, or experimental results they cannot explain; each member must defend their own design, tests, and tradeoffs.
  • Late work affects iteration grades, but the course values reproducible, auditable, and maintainable results over last-minute accumulation.

Reference Courses