Back to Teaching

Computer Organization and Assembly Language (CS-223)

Lecture Topic Download
Lecture 1: Course Intro and What Assembly Is
  • Covers course logistics (grading, rules, and how the class will run).
  • Introduces what “computer organization vs. computer architecture” means and where this course fits.
  • Explains what assembly language is, how it relates to machine language, and why learning it matters.
Download PDF
Lecture 2: Data Representation and Boolean Logic Basics
  • Explains how computers represent numbers in binary (and how to convert between decimal, binary, and hex).
  • Covers integer sizes and how signed vs. unsigned values are stored.
  • Introduces Boolean/bit-level thinking that underpins low-level programming.
Download PDF
Lecture 3: x86 Processor Architecture (How the CPU and Memory Work)
  • Breaks down a basic microcomputer: CPU, memory, buses, and I/O devices.
  • Introduces the IA-32 (32-bit x86) execution environment (registers, instruction cycle, and memory access).
  • Compares memory-management modes (real vs protected) and gives an overview of 64-bit processors and system I/O.
Download PDF
Lecture 4: Assembly Language Fundamentals (Core Instructions and Addressing)
  • Teaches instruction structure and operand types (immediate, register, memory).
  • Focuses on data movement and basic arithmetic (e.g., MOV and add/sub patterns).
  • Introduces addressing ideas (including indirect addressing) plus basic control flow like JMP/LOOP and a look toward 64-bit programming.
Download PDF
Lecture 5: Procedures and the Runtime Stack
  • Explains what the stack is and why it matters (PUSH/POP and how the stack grows).
  • Shows how procedures work using CALL and RET (including nested calls).
  • Introduces procedure design basics like parameters, preserving registers, and good documentation habits.
Download PDF
Lecture 6: Conditional Processing (Making Decisions in Assembly)
  • Reviews CPU flags and how bitwise/compare instructions affect them.
  • Teaches conditional jumps and conditional loop instructions.
  • Builds up to higher-level logic patterns like conditional structures and finite-state machines.
Download PDF
Lecture 7: MASM Control-Flow Directives (.IF / .WHILE / .REPEAT)
  • Shows how MASM lets you write readable IF/ELSE logic using “runtime expressions.”.
  • Explains how signed vs. unsigned comparisons change which jumps get generated.
  • Introduces structured looping directives like .REPEAT/.UNTIL and .WHILE/.ENDW
Download PDF
Lecture 8: Advanced Procedures I (Stack Frames and Parameters)
  • Introduces the idea of a stack frame (the reserved stack space used while a procedure runs).
  • Focuses on passing arguments on the stack (by value and by reference).
  • Covers the basics of local variables and stack-frame setup/teardown concepts.
Download PDF
Lecture 9: Advanced Procedures II
  • Extends advanced procedure concepts to include recursion (procedures calling themselves).
  • Introduces MASM tools like INVOKE/ADDR/PROC/PROTO for cleaner procedure calls and declarations.
  • Discusses how to organize larger programs across multiple modules/files.
Download PDF
Lecture 10: Locality, Memory Hierarchies, and Cache Basics
  • Explains temporal vs. spatial locality (why programs often reuse nearby/recent data).
  • Introduces memory hierarchies and the basic purpose of caches (small/fast vs big/slow memory).
  • Covers cache hits vs. misses and core cache design ideas like placement and replacement.
Download PDF
Back to Teaching