Computer Systems and Assembly Language

I find magic in understanding a computer all the way down to its ones and zeros.

From 2018 to 2019, I had the joy of teaching Computer Systems and Assembly Language at the University of California, Santa Cruz. In this “computer engineering 101” course, I restructured the curriculum and taught foundational concepts including binary, digital logic design, memory alignment, and assembly language.

My favorite topic to teach was data path where I guided students through how an assembly instruction breaks down into machine code and how those ones and zeros flow through the processor.

This page contains the course material from that class to serve as a reference for anyone interested, and as an example of my work in education, documentation, and curriculum design.

Photograph of whiteboard with a timing diagram.

Worksheets

I teach Computer Systems and Assembly language using fill-in-the-blank worksheets that I’ve designed. Students who manually write out notes are more likely to retain information presented in class over students who type notes.

These worksheets allow students to handwrite notes and maintain better engagement in class, rather than losing focus by copying slides. I include examples for students to work out both during lecture with their classmates, and outside of class.

Notes 0: Intro To Computing Systems

history of computing, computing levels of abstraction

Supplements

Who invented the computer?


Notes 1: Integer Numbering Systems

unary, grouping, positional, decimal, octal, hexadecimal, binary

Supplements

Number Systems and Bases: Better Explained

Introduction to number systems and binary: Khan Academy

The Number Base Calculator: Cleave Books


Notes 2a: Combinational Logic 1

MOSFET transistors, PMOS, NMOS, logic gates, inverter, and, or, nand, nor, xor, xnor, Venn diagrams

Supplements

CMOS Transistors: Peter Mathys (watch 13:05 - 17:00)


Notes 2b: Combinational Logic 2

digital circuit examples, sum of products (SOP), product of sums (POS), minterms, maxterms, programmable logic array (PLA)

Supplements

Minterms, Maxterms, and Cannonical Boolean Expressions: EngMicroLectures

SOP and POS: Peter Mathys


Notes 2c: Combinational Logic 3

multiplexors, decoders, half adder, full adder, ripple-carry adder, ALU


Notes 3: Boolean Algebra

Boolean identities, De Morgan's Law

Supplements

Boolean Algebra: electronics-course.com

Boolean Algebra Example: Peter Mathys

NAND/NOR Only Example: Peter Mathys


Notes 4: Sequential Logic

SR latch, active high, active low, D latch, D flip-flop

Supplements

Timing Diagrams: EngMicroLectures

SR Latches, D Latches, and D Flip-flops: EngMicroLectures

SR Latch: Ben Eater

SR Latch | NOR and NAND SR Latch: Neso Academy

Registers, Flip-flops, and Modular Design: EngMicroLectures


Notes 5: Signed Integer Representation

signed numbers, sign magnitude, two’s complement, bias / excess notation, floating point, fixed point

Supplements

Two's Complement: Negative Numbers in Binary: Ben Eater

Computer Science Concepts: Bias-K/Excess-K: Atiwong Suchato


Notes 6: Arithmetic and Logic Operations

carry out, overflow, bitwise, reduction, shifts, rotate

Supplements

Two's Complement Representation and Overflow: EngMicroLectures


Notes 7: Fractional Representation

fixed point, IEEE 754 single precision floating point

Supplements

Binary Fractions: Electronics Tutorials


Notes 8: Text Representation

ASCII, UTF-8


Notes 9: von Neumann Model

von Neumann architecture, memory, address space, addressibility, processing unit, control unit, input, output, memory


Notes 10: MIPS Instruction Set Architecture

general purpose registers, assembler directives, data directives, labels, instruction format, instruction types, operate instructions, data movement (loads and stores), control flow instructions, little endian, big endian, memory alignment, pseudo instructions, instruction encoding

Supplements

MIPS Reference Table: Rebecca Rashkin

MIPS Instruction Format: Rebecca Rashkin

Printable ASCII Characters: Rebecca Rashkin


Notes 11: MARS: MIPS Assembler and Runtime Simulator

memory display, syscalls

Supplements

MIPS Tutorial 1 Intro and Mars: Amell Peralta


Notes 12: MIPS Addressing Modes

register direct, immediate, register indirect, base + offset (displacement), PC relative, pseudo direct


Notes 13: Stacks and Subroutines

stack, jump instructions, return address, subroutines

Supplements

MIPS Videos: David Black-Schaffer (Videos 2.7 - 2.12)


Notes 14: MIPS Data Path

mips data path, r-type, i-type, j-type, pc, register file, alu, control unit

Supplements

MIPS32 Data Path: Rebecca Rashkin


Spoiler Alert!

How do I see the answers?

Here You Go!

Extra Credit

Computer Archeology

Write 250 words about the background, functionality, and social implications of an artifact from computer history. Create 1 - 3 slides on that artifact and present it to the class.

Get Your Ham Radio License

Get your ham radio license and attend 4 ucsc amateur radio club events.

Skill Progression

Learn a new skill, or progress in a skill you have already worked on. Show documentation of your skill progression and journal about it four times throughout the quarter. Examples: juggling, drawing, singing, dancing, playing a musical instrument, movement.

Malleable Intelligence Essay

Read the chapter “Intelligence as a Malleable Construct” from the Handbook of Intelligence and write a 500+ word essay. This assignment will have 3 parts: summary, reflection, and recommendations.

Sample Exams

Midterms

Fall 2019 Summer 2019 Spring 2019 Winter 2019 Fall 2018 Summer 2018

Finals

Fall 2019 Summer 2019 Spring 2019 Winter 2019 Fall 2018 Summer 2018

Resources

Reference Tables

MIPS Instructions

MIPS Instruction Format

Printable ASCII Characters

Git

Video references Git documentation

Tutorials

Git Immersion Learn Git Branching

Command Line Interface

Videos

BASH Basics Terminal Basics for Beginners

Command Line Text Editor References

Vim Emacs

Lab Applications

MARS: MIPS Assembler and Runtime Simulator

MARS homepage

Video tutorials

Multimedia Logic

Multimedia Logic homepage

Mac installation tutorial

Video Playlists

Course reference playlist

Digital Logic and Computer Organization: EngMicroLectures

Computer Organisation & Architecture: Semesters Simplified

MIPS Instruction Set Architecture 1: David Black-Schaffer

MIPS Instruction Set Architecture 2: David Black-Schaffer

Fun Stuff

TIS-100: assembly language video game

Skills based training

American Amateur Radio League (ARRL)

Perceptual Noise Generator