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.

Announcements

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

Class Resources

Schedule

Introduction Materials
Week 0
Chapter 1
Course Logistics Meet the instruction team
Course Intro Syllabus-Video
Week 1- Data Representation
Chapter 2
Data Representation1 Two’s Complement Representation -Video
Operations [Video]
Lab Week 1 Introduction to Circuits(Notes posted on Blackboard- Ohms Law)
Getting Stated with TinkerCad
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
CedarLogic Circuits for Week2 LogiSim Circuits for Week2
Cedar Logic Circuits Set1 - figures
Karnaugh Maps and Circuit Design- Review
Combinational Logic Circuits
(Week 3) Chap.3
Data types & Bitwise in C
Review Karnaugh Maps (Reading)
Combinational Logic Devices
Decoders-Video Multiplexers-Video
Cedar Logic Circuits-Week3 Logisim Circuits Week3
Circuits with Feedback-Latches [Video…coming soon to a theater near you!]
Review: Data rep and Bitwise in C
In Class C exercises (Bitwise)
Sequential Logic (Week 4)
Chapter 3
Sequential Logic & Finite State Machines
Clocked Circuits - Flip Flops (Video)
CedarLogic-Examples of Sequential Logic Devices
Introduction to Finite State Machines (video)
Example:FSM Design(video)
CedarLogic-Examples: Finite State Machines
Week 2 Lab Design of Combinational Logic circuit using Integrated Circuits
Week 3 Lab Using DIP Switches in Logic Circuits
Week 4 Lab Design of Logic Devices - project 1
Week 5 Lab Review: Example Sequential Logic Devices in CedarLogic , Project 2 discussions.
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)
Processor Datapath (week 6)
Chapter 5, Appendix A,C
LC3 Datapath Design
[Example Datapath Requirements for an LC3 instruction(Video)]
Example: Datapath design in Cedar Logic
Design of a processor datapath (Example)
Inclass Exercises-October 9
Assembly Programming (Chap 6-7)
Exam 1 - week 7 (October 13)
Programming in Assembly [Video]
Exam Covers material upto (including) LC3 ISA
Assembly Programming
Weeks 8-9
Chapters 7-10
I/O and Traps in LC3 [Video]
Subroutines/Functions in Assembly [Video]
Inclass Exercises Oct.20
Stacks and Interrupts [Video]
Inclass Exercises Oct.22
Labs Weeks 6-9
Lab Week 7
Lab Week 8
Getting Started with LC3 simulator [Video]
Writing an Assembly Program [Video]
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-Part1 (Video)
Arrays and Pointers
Structures
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]