Course Number & Title
CSU380 Computer Organization (4 SH)
Course Description
Introduces the basic design of computing systems: CPU, memory,
input and output. Provides a complete introduction to assembly
language: the basics of an instruction set plus experience in
assembly language programming using a RISC architecture. Uses
system calls and interrupt-driven programming to show the
interaction with the operating system. Covers machine
representation of integers, characters, and floating point
numbers. Describes caches and virtual memory.
Prerequisites:
CSU213
Textbooks:
David A. Patterson and John L. Hennessy.
Computer Organization
and Design: The Hardware/Software Interface.
Morgan Kaufmann, San Mateo, 1998.
Second edition.
Brian Kernighan and Dennis Ritchie.
The C Programming Language: Second Edition.
Prentice Hall, 1988.
Topics Covered
Number representations
decimal, hexadecimal, binary
twos complement
C-Language (basics + pointers)
syntax
declaration of main()
pointers, arguments, arrays, strings, structures
Storage management
static, stack, heap
memory allocation
garbage collection
Assembly Programming
arithmetic, data transfer
decisions
procedures
logical operations
bytes
Instruction representation
Floating Point
representation in computers
decimal <-> float conversion
MIPS registers, instructions
rounding
Running a Program
compiler, assembler, linker, loader
Performance
I/O and Interrupts
memory-mapped I/O
SPIM simulation
cost of polling
interrupt handlers
Disks
Caches
blocks
direct mapped, associative
Virtual Memory
princile of locality, memory hierarchy
page table
TLB
Course Outcomes
Upon completion of this course, a student should know:
what operations a CPU can perform
what data structure represents each of those operations
how the hardware decodes each operation, and carries it out
all operations are carried out by doing boolean algebra on single bits
how all this affects performance
how to write small programs in assembly language
pointers and dereferencing in C
Measurement of Course Outcomes
The course outcomes will be measured and verified by:
weekly labs
occasional small quizzes
four to six programming assignments
one (or two) midterms
final exam