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
- Slack - Join here
- LC3 Download Instructions
- LC3 Download Page
- LC3 Tools Guide
- Git Instructions & Video Demo
- CEDAR Logic Instructions & Video Demo
- Logism Instructions & Video Demo
- Tinkercad Instructions & Video Demo[This will be set up ONLY if we have to go remote]
- Visual Studio Code Instructions & Video Demo
Schedule
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 |
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 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] |