This is an introductory course on Computer organization and computer systems. The course will expose the student to the different layers in a computer system and examine the working of a computer system at these different levels. It will expose the student to the low level details of how machines are assembled and the tools to program them – it will expose what really happens when your programs are run, thereby providing you with the intellectual tools needed to solve problems when things go wrong. In addition to the theoretical concepts, the course through the lab section will provide an exposure to systems skills using various tools and focusing on issues such as performance and correctness. The course will take a bottom-up approach: it will start with the basic components of a computer system, machine representation of data, digital logic circuits, instruction sets and assembly programming, and moves to a discussion of how C programs are translated to the machine level. The course also introduces systems programming concepts such as memory management, file systems, safe programming, system stack, debugging and performance tuning of programs. The lecture, and some lab sessions, will consist of in-class activities and students will be required to work in groups.


  • This website is under construction - all content subject to change!

Class Resources


Introduction Materials
Week 0
Chapter 1
Course Logistics and Syllabus
Week 1- Data Representation
Chapter 2
Data Representation
(Video) Two’s Complement Representation (Video) Logic Operators
Lab Week 1 Introductions and Review
Digital Logic Materials
Transistors & Logic Gates (Week 2)
Chapter 3
(Video) How Transistors work
(Video) Building Gates from Transistors
Boolean Functions & Combinational Logic Circuits
(Video) Truth Table to Logic Circuit
CedarLogic Introduction-Circuits: Set1
Karnaugh Maps and Circuit Design- Review
Combinational Logic Circuits
(Week 3) Chap.3
Data types & Bitwise in C
Combinational Logic Devices
Video- Decoders
(Video) Multiplexers
CedarLogic Circuits - Set2: Comb Logic Devices
Circuits with Feedback-Latches
CedarLogic Circuits-Latches
Sequential Logic (Week 4)
Chapter 3
Sequential Logic & Finite State Machines
CedarLogic- Sequential Circuits
(Video) Clocked Circuits - Flip Flops
(Video) Introduction to Finite State Machines
(Video) Example:FSM Design
C and Data Representation (Week 5) Review: C Bitwise operations
Exercises-Week5 (bitwise ops in C)
Week 2 Lab Review - Logic circuits
Week 3 Lab Logic Circuits and C bitwise operations
Week 4 Lab Sequential Logic circuits Working with Hardware
Week 5 Lab Review Sequential Logic (Finite state machines).
Review C bitwise operations (Project 2)
Install LC3 tools - see links to LC3 download instructions under Class Resources on this page.
Example Sequential Logic Devices in CedarLogic - For Project3 reference
ISA and Assembly Programming Materials
von Neuman Model (Week 5-6) Chap. 4-5
LC3 Instruction Set Architecture(ISA)
von Neuman Architecture and Instruction Execution
(Video) von Neuman model and Instruction Processing Cycle
LC3 Instruction Set
(Video) LC3 ISA-Operate Instructions Dataflow
(Video) LC3 ISA-Memory and Branch Instructions
LC3 Machine Program Examples/Exercise
Jeopardy Exam Review
LC3 Tools (Chap 6-7)
Exam 1 - October 11 (Tuesday) - week 7)
Exam Covers material upto (including) LC3 ISA
Processor Datapath (week 7)
Chapter 5, Appendix A,C
LC3 Datapath Design
(Video) Datapath Design - Overview of LC3 Datapath
(Video) Datapath: Implementing Fetch, Decode, Execute (Add)
(Video) Datapath: Implementing Load and Control Unit(FSM) Design
Example: Datapath design in Cedar Logic
Example- Designing a processor datapath
Assembly Programming
Weeks 8-9
Chapters 7-10
Intro to Assembly Programming Example1
Assembly Exercise1
Iinput-Output/Traps and Subroutines in Assembly(LC3)
IO Example1 IO Example2
Subroutines in LC3 Example Subroutine
Exercise-Ques3 Exercise-Ques4 Data for ques4.asm
Stacks and Interrupts
Week 6 Lab Week 6 Lab
Labs Weeks 7
Lab Week 8
Lab Week 9
Lab Week 10
Getting started with LC3 tools. Install LC3 tools - see links to LC3 download instructions under Class Resources on this page.
Week7 Lab: Getting Started with LC3 Tools Example
Week 8 Lab: More Assembly- XOR exercise, Project 3 Review
Exercise: Assembly programming
Assembly: Using Subroutines Subroutine Example2
Implementing C programs on Machine ISA Materials
Running high level programs (Week 9)
Quick Review of C (Week 9) Chapters 11,12,13
Run-time Stack
Translation Process and Role of Compiler
Test Scoping rules in C
Run-time Stack
Review of Run-time stack - Video
C programs on LC3 (weeks 10-12)
Activation Records and Function Calls (Chap 14)
Arrays and Pointers (Chap 16)
Dynamic Memory (Heap)Chap.19
Functions- Notes
Functions-In Class Exercise
Functions-Part1 (Video)
Arrays and Pointers Arrays/Pointers- Group Exercise code
C to LC3 code examples
Dynamic Memory-Malloc
1-dimensional Dynamic Array Code
2-D Dynamic Array - Question
Review: Examples of function call & memory state(Video)
Labs Weeks 11-12 Programming in C
GDB Tutorial(Video)
Valgrind Tutorial (Video)
File I/O
Lab 11 Files
Lab 12 Files
GDB Valgrind Slides
Using GDB in VSCode
Exam 2 - Nov.17 All material upto Dynamic Memory in C
Program Performance and Computer Architecture Materials
Performance Optimization (Weeks 12-14)
Memory Hierarchy
Code Optimization
Performance metrics & Memory Hierarchy
Code Optimization Techniques
Notes on Memory Blocking
Labs Weeks 13-14 Project 5,6 discussions
Course Summary Course Summary: Real Architectures [Video]