An introduction to basic computer hardware, machine language, assembly language, and C programming.
- To understand the structure and operation of a modern computer from the ground up.
- Understand basic hardware concepts: digital circuits, gates, bits, bytes, number representation
- Understand the Von Neumann model and the structure and operation of a basic data path
- Understand the structure and function of machine language instructions
- Understand the structure and function of a symbolic assembly language
- Understand basic concepts of computer systems such as the runtime stack, simple I/O devices
- Introduce the C language with particular emphasis on the underlying assembly and machine language as well as interaction with hardware.
- (Competency Knowledge) Be able to identify and/or construct basic digital structures such as MOS FET logic gates, decoders, multiplexors, adders, memory.
- (Competency Application) Be able to construct a state machine diagram and then implement it as a finite state machine circuit.
- (Competency Comprehension) Understand data representation. Be able to convert numbers between various representations: Binary, octal, decimal, hexadecimal, and IEEE Floating Point.
- (Competency Knowledge) Be able to identify the component parts of the Von Neumann Model of computer and be able to explain the purpose of each component.
- (Competency Synthesis) Be able to write, debug and run assembly language programs including recursive subroutines, traps, basic input/output.
- (Accomplishment Synthesis) Be able to write, debug and run multi-file C programs several hundred lines long using "make" to compile and execute said programs.
- (Competency Synthesis) Be able to utilize (in C programs) proper typing and casting constructs, structs, pointers and arrays, functions, function pointers, dynamic memory allocation and variables of different storage classes (auto, static, volatile, etc.)
These notes were originally created on Notion.so and then converted to HTML. It is not a perfect conversion but the material is still preserved. The notes are available here.
- Homework 01 - Bases and Bitwise Operations
- Homework 02 - Digital Logic and the ALU
- Homework 03 - Sequential Logic & State Machines
- Homework 04 - LC-3 Datapath
- Homework 05 - Intro to Assembly
- Homework 06 - Subroutines and Calling Conventions
- Homework 07 - Intro to C
- Homework 08 - GBA
- Homework 09 - Dynamic Memory
- Homework 10 - Implementing Malloc
- Timed Lab 01 - Arithmetic Logic Units
- Timed Lab 02 - Finite State Machines
- Timed Lab 03 - Subroutines and Calling Conventions
- Timed Lab 04 - C
- Coding Part 1 - LC-3 Assembly
- Coding Part 2 - C