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
Course Intro
Week 1- Data Representation
Chapter 2
Data Representation1 Two’s Complement Representation -Video
Operations Logic Operators-Video
Lab Week 1 Introduction to Circuits
Getting Stated with Circuits
Digital Logic Materials
Transistors & Logic Gates (Week 2)
Chapter 3
Devices-Transistors How Transistors work (Video)
Building Gates from Transistors (Video)
Boolean Functions & Combinational Logic Circuits
Truth Table to Logic Circuit - Video
Exercises: CedarLogic Circuits for Week2
Exercises - Cedar Logic Circuits-PDF Week 2
Karnaugh Maps and Circuit Design- Review
Combinational Logic Circuits
(Week 3) Chap.3
Data types & Bitwise in C
Combinational Logic Devices
Decoders-Video Multiplexers-Video
CedarLogic Circuits-Multiplexer-Decoder-Latches
Circuits with Feedback-Latches [Video ??]
Exercises(PDF file)-Week3
Sequential Logic (Week 4)
Chapter 3
Sequential Logic & Finite State Machines
Clocked Circuits - Flip Flops (Video)
CedarLogic-Examples of Sequential Logic
Introduction to Finite State Machines (video)
Example:FSM Design(video)
Review: C Bitwise operations
Exercises-Week4 (bitwise ops in C)
Week 2 Lab Design of Combinational Logic circuit using Integrated Circuits
Week 3 Lab Using DIP Switches in Logic Circuits
Week 4 Lab Review and Project 1 questions
Week 5 Lab Review Project 2. Install LC3 tools - see links to LC3 download instructions under Class Resources on this page.
Test Code for LC3 Assembly Test Code
Example Sequential Logic Devices in CedarLogic - For Project3 reference
ISA and Assembly Programming Materials
von Neuman Model (Week 5)Chap. 4-5
LC3 Instruction Set Architecture(ISA)
von Neuman Architecture and Instruction Execution
von Neuman model and Instruction Processing Cycle (Video)
LC3 Instruction Set
LC3 ISA-Operate Instructions Dataflow (Video)
LC3 ISA-Memory and Branch Instructions (Video)
Assembly Programming (Chap 6-7)
Exam 1 - October 12 (Tuesday) - week 7)
Programming in Assembly [Video]
Exam Covers material upto (including) LC3 ISA
Processor Datapath (week 7)
Chapter 5, Appendix A,C
LC3 Datapath Design
Datapath Design - Overview of LC3 Datapath(video)
Datapath: Implementing Fetch, Decode, Execute (Add) - video
Datapath: Implementing Load and Control Unit(FSM) Design - video
Example: Datapath design in Cedar Logic
Example- Designing a processor datapath
Assembly Programming
Weeks 8-9
Chapters 7-10
Iinput-Output/Traps and Subroutines in Assembly(LC3)
Example- Traps and Subroutines Data for example
Inclass Exercises Oct.21
Stacks and Interrupts [Video]
Quiz 6: LC3 Exercises
Labs Weeks 6-9
Lab Week 7
Lab Week 8
Getting Started with Assembly Programming-Multiplication exercise
More Assembly- XOR exercise [Video]
Exercise: Assembly program using Subroutines
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
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
Quiz 8(code generation group quiz) Solutions
Dynamic Memory-Malloc
1-dimensional Dynamic Array Code
2-D Dynamic Array - Question
Review: Examples of function call & memory state(Video)
Labs Weeks 10-12 Programming in C
GDB Tutorial(Video)
Valgrind Tutorial (Video)
File I/O
Lab 11 Files
Lab 12 Files
Exam 2 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
Labs Weeks 12-14 Project 5,6 discussions
Course Summary Course Summary: Real Architectures [Video]