Revised October 17, 2011
CS 230: Introduction to Computers and Computer Systems
General Description
An introduction to hardware and software concepts used in computer systems.
Specific topics include machine-level programming, memory organization, and basic I/O mechanisms.
Logistics
Intended for 2nd-year students with an interest in Computer Science. Not open to Computer Science students.
Normally available Winter.
Related courses (see calendar for official details)
-
Predecessors: One of CS 116, 136, 138, 146; Not open to Computer Science students.
-
Successors: CS 338, CS 436.
-
Conflicts: CS 241, CS 251.
Hardware/Software used: UNIX, MIPS Simulator.
Typical Reference(s)
D. Patterson, J. Hennessy, Computer Organization and Design, 4th ed., Morgan Kaufmann.
Required preparation
At the start of the course, students should have the ability to
- Follow programs written using imperative control flow.
- Write simple imperative programs using lists, iteration, and array indexing for both read and write (mutable memory model).
- Use basic algebra, calculus, and probability (for performance analysis).
Learning objectives
At the end of the course, students should have the ability to:
- Write short machine- and assembly-language programs to perform simple data manipulation.
- Describe data representations used by computer hardware at the bit level, operate on these representations, and compute their values.
- Explain some simple processor implementation optimization techniques, in particular pipelining, and how differences in code ordering can impact performance for processors using these optimizations.
- Compare basic memory and I/O architectures, and how they can impact performance.
- Compare various forms of multiprocessing computing platforms.
- Exemplify basic functionality and components of an operating system.
Typical syllabus
Introduction 2 hours
Assembly language 8 hours
- fundamental operation and components of computer
- registers vs. memory / control flow / indirection
- build process, declarations, assembler directives
- stacks, subroutines, arrays
Data representation and arithmetic 4 hours
- binary representation of integers, bit operations
- other representations: ASCII, UTF8, strings, floating point
Compiling and linking 4 hours
- assembler: opcodes and symbol table
- linker: import/export symbols, relocation
- compiler: control flow & arithmetic expressions
Basic processor design 4 hours
- datapath, pipelining, hazards
Memory and I/O devices 6 hours
- caching and virtual memory
- secondary storage
- I/O mechanisms: programming, interrupt, DMA, parallel vs. serial, etc.
Multiprocessing 6 hours
- basic concurrency concepts: synchronization and mutual exclusion
- scalar vs. superscalar processing
- hardware threading
- distributed parallel systems
Operating systems 2 hours
- brief overview of components


Last modified: Wednesday, 15-Feb-2012 10:27:20 EST