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
ISAs, registers, and instruction formats
Write and single-step a small RISC-V program.
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.
Data representation, addressing, and memory
Analyze array, struct, and pointer access.
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.
Control flow and function calls
Recover C control flow from assembly.
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.
ABIs, stack frames, and linking
Debug calling-convention and linking errors.
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.
System calls, exceptions, and interrupts
Implement a minimal user-space syscall wrapper.
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.
x86-64 comparison and disassembly
Use objdump and gdb to recover program behavior.
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.
Machine-level security and performance
Observe stack corruption, ROP fragments, and hot loops.
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.
Assembly project and review
Submit an assembly library, tests, and debugging notes.
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
Concept questions, reading responses, design tasks, and small programming or lab exercises.
Assembly implementation, disassembly analysis, debugging records, and tests.
Participation in discussions, demos, code or paper reviews, and peer feedback.
Submit reproducible artifacts, a technical report, and a demo explaining methods, results, limitations, and future work.
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
International
- CMU15-213: Introduction to Computer Systems
- CornellECE 2300: Digital Logic and Computer Organization
- ETH ZurichDigital Design and Computer Architecture
- Georgia TechCS 2110: Computer Organization and Programming
- MIT6.1810: Operating System Engineering (RISC-V assembly)
- PrincetonCOS 217: Introduction to Programming Systems
- StanfordCS 107E: Computer Systems from the Ground Up
- UC BerkeleyCS 61C: Great Ideas in Computer Architecture (RISC-V)
- UIUCECE 391: Computer Systems Engineering
- University of WashingtonCSE 351: The Hardware/Software Interface
China 985 Universities
- 上海交通大学计算机系统基础(ICS,含汇编语言)
- 中国科学技术大学计算系统综合实验(含汇编)
- 北京大学汇编语言程序设计
- 北京航空航天大学微机原理与接口技术
- 华中科技大学汇编语言与微机原理
- 南京大学计算机系统基础(含汇编语言)
- 哈尔滨工业大学汇编语言程序设计
- 复旦大学汇编语言与计算机组成
- 武汉大学汇编语言与接口技术
- 清华大学汇编语言程序设计
- 西安交通大学微机原理与接口技术