"Assembly language experience is [important] for the maturity and understanding of how computers work that it provides." – D. Gries
- FETCH, DECODE, EXECUTE
Last day to Add/Drop is Friday 2024-01-26
- <2024-01-22 Mon>
- Binary, Digital, General-Purpose Computer
- What is a Computer?
- von Neumann's architecture
- Homework:- h001 - CPU Simulator Lab
- <2024-01-23 Tue>
- <2024-01-24 Wed>
- Watch: How Version Contol Works (sort of)
- Version Control
- Using
git
- Unsigned Integers
- Bases
- Binary, Hex, Decimal
- Conversion
- Arithmetic
- Integers in Non-decimal Bases
- <2024-01-26 Fri>
Last day of Add-Drop
- Reading: COD Section 1.1, 1.3-1.4
- Hardware Loop
while (true) {
fetch(); // next instruction into IDR
decode(); // IDR contents to electrical signals
execute(); // update state including PC
}
- COD's View of the von Neumann Computer
- Processor (CPU)
- Memory
- Input
- Output
- Due: h001 - CPU Simulator Lab
- Assignment: p001 - Number Bases (Java)
- The Big Ideas
- <2024-01-29 Mon>
- <2024-01-30 Tue>
- Group Work: gMIPS - Writing MIPS Assembly
- <2024-01-31 Wed>
- <2024-02-02 Fri>
- Read: COD Section 1.2
- Due: pNumberBases
- What is a
char
?
- Load/Store Different Sizes
- Assignment: p002 - Add Some Numbers (MIPS)
- Homework: h002 - Great Ideas
- General-purpose I : Encoding Integers
- <2024-02-05 Mon>
- Read: COD Section 3.1
- The Great Ideas
- Pair-Group-Class Discussion
- Due: h002 Great Ideas
- <2024-02-06 Tue>
- Group Work: gMIPSAndTwosCompliment
- <2024-02-07 Wed>
- <2024-02-09 Fri>
- General-purpose II : Encoding Instructions
- <2024-02-12 Mon>
- Read: COD Section 2.1-2.2, 2.5
- Memory: Registers
- Instruction Set Architecture
- Instruction formats
- Regularity
- Memory: RAM (Main Memory)
- Cheating: Where's the cache?
- Another big idea: Transparency
- <2024-02-13 Tue>
- Watch: Edgington, Functions [~36:00]
- Group Work: gLoopsAndFunctions
- <2024-02-14 Wed>
- Read: COD Section 2.6
- Assembly: Instruction to Integer
- Logic Instructions
- Review: Truth Tables
- Due: p003 - WhatToWear
- <2024-02-16 Fri>
- Encoding Other Types: Characters and Strings
- Encoding Composite Types: Arrays
- General-purpose III : Bits are more (or less) than numbers
- <2024-02-19 Mon>
- MIPS Calling Conventions
- Jump and Link
- Prologue
- Parameters
- Local Variables
- Epilogue
- Return values
- <2024-02-20 Tue>
- <2024-02-21 Wed>
- x001 - Exam 001 MIPS, Numbers
- <2024-02-23 Fri>
- MUX/DMUX
- <2024-02-26 Mon>
- <2024-02-27 Tue>
- <2024-02-28 Wed>
- Watch: Padraic Edgington Subtraction
- Watch: Padraic Edgington Building a 1-bit ALU
- Watch: Padraic Edgington Building a 32-bit ALU
- Using Digital
- Turning a 1-bit Adder into a 32-bit Adder
- Using tests from a separate file
- What's the difference: 1-bit to 32-bit Adder
- How to recognize zero
- <2024-03-01 Fri>
- Digital Design II: Sequential Circuits
- <2024-03-04 Mon>
- <2024-03-05 Tue>
- Lab: [[][Using Digital]] - Sequential Circuits Due at end of Class Period
- <2024-03-06 Wed>
- Watch: Padraic Edgington Datapath: Combined
- Defining a Word/Register
- Making a Register File
- <2024-03-08 Fri>
- The Instruction Decode Register
- <2024-03-11 Mon>
- <2024-03-12 Tue>
- Group Work: [[][gTestBed]] - Defining a Test Bed
- Due: c001 - Encode/Decode
- <2024-03-13 Wed>
- <2024-03-15 Fri>
- Programming Arrays
Last day to Withdraw or Elect S/U 2024-03-29
- <2024-03-18 Mon>
- Programming Redux
- Watch: Edgington, 1-D Arrays [~35:00]
- Arrays
- Indexing/Addressing Arrays
- <2024-03-19 Tue>
- Group Work: [[][gFibonacciMIPS]]
- <2024-03-20 Wed>
- Local Arrays
- Array Parameters
- <2024-03-22 Fri>
- More Arrays
- How would you sort it?
- x002, RAM, Hooking it Together
Last day to Withdraw or Elect S/U 2024-03-29
- <2024-03-25 Mon>
- <2024-03-26 Tue>
- x002 - Recursion in MIPS, combinatoric gates, sequential gates, logically complete sets of gates
- <2024-03-27 Wed>
- Finishing the CPU
- Multi-clock CPU: Pipelining
- <2024-03-29 Fri>
- Spring Recess
- <2024-04-01 Mon>
[Break]
- <2024-04-01 Mon> Lab
[Break]
- <2024-04-03 Wed>
[Break]
- <2024-04-05 Fri>
[Break]
- Digital, Binary, General-purpose Computers
- <2024-04-08 Mon>
- Thinking about prologues and epilogues
- Other Data Structures
- CS1 in Assembly
- Multiplication w/o
mult
- <2024-04-09 Tue>
- Group Work: [[][gSortAnArray]]
- <2024-04-10 Wed>
- <2024-04-12 Fri>
Last day to Withdraw, Elect S/U
- Dynamic Memory Allocation
- Linked Lists; Array Lists
- <2024-04-15 Mon>
- <2024-04-16 Tue>
- <2024-04-17 Wed>
- Linked List
- push
- pushback
- delete
- copy
- <2024-04-19 Fri>
- Classes, structs, dynamic memory
- <2024-04-22 Mon>
- Binary tree
- All the traversals
- <2024-04-23 Tue>
- Group Work: [[][gMethods]]
- <2024-04-24 Wed>
- Class member functions
- What is
this
in a method
- <2024-04-26 Fri>
- CPU: Datapath, ALU, Control
- <2024-04-29 Mon>
- <2024-04-30 Tue>
- Group Work: [[][gRegisterFile]]
- <2024-05-01 Wed>
- <2024-05-03 Fri>
- Considering the whole computer
- The Whole Execution Stack
- <2024-05-06 Mon>
- Operating System
syscall
- Machine language
- IDR
- <2024-05-07 Tue>
- Group Work: [[][gReview]]
- <2024-05-08 Wed>
- IDR
- CPU Control
- CPU Registers
- Immediate instructions
- <2024-05-10 Fri>
- Final Exam
- <2024-05-13 Mon 12:30>–<2024-05-13 Mon 14:30>