
COMPUTER SYSTEMS AND ASSEMBLY LANGUAGE
I find magic in understanding a computer all the way down to its 1s and 0s.
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.
RESOURCES
Useful Links
important stuff
(see syllabus for log in credentials)
sample exams
git
ucsc's gitlab documentation
multimedia logic
mars
video playlists
addt'l resources
cmd line interface
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.
unary, grouping, positional, decimal, octal, hexadecimal, binary
SUPPLEMENTS
betterexplained.com
khan academy video
number base calculator
MOSFET transistors, PMOS, NMOS, logic gates, inverter, and, or, nand, nor, xor, xnor, Venn diagrams
SUPPLEMENTS
CMOS
(watch 13:05 - 17:00)
digital circuit examples, sum of products (SOP), product of sums (POS), minterms, maxterms, programmable logic array (PLA)
SUPPLEMENTS
Boolean identities, De Morgan's Law
SUPPLEMENTS
BOOLEAN ALGEBRA
NAND/NOR ONLY VIDEOS
SR latch, active high, active low, D latch, D flip-flop
SUPPLEMENTS
TIMING DIAGRAMS
SR LATCHES
FLIP-FLOPS / REGISTERS
signed numbers, sign magnitude, two’s complement, bias / excess notation, floating point, fixed point
SUPPLEMENTS
TWO'S COMPLEMENT
BIAS NOTATION
fixed point, IEEE 754 single precision floating point
SUPPLEMENTS
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
reference tables: ascii, instruction formats, opcodes
stack, jump instructions, return address, subroutines
SUPPLEMENTS
procedures (David B.)
videos 2.7 - 2.12
functions (Amell Peralta)
video tutorials 15 - 18
mips data path, r-type, i-type, j-type, pc, register file, alu, control unit
SUPPLEMENTS
load, store, branch data path examples
EXTRA CREDIT
Each extra credit assignment is worth up to 1% added to your final grade.


