Coordinator: Gary Zoppetti
Structure of digital computers including register transfer notation, instruction set architecture, computer arithmetic, pipelining and parallel processors. Offered in fall.
C- or higher in CSCI 140 and CSCI 162.
- Understand the history and development of modern computers.
- Understand the basic concepts of a von Neuman architecture system.
- Understand the elements of advanced systems, such as parallel, pipelined, and RISC/CISC architectures.
- Understand the nature of various I/O devices and systems.
- Understand the elements of assembly language programming.
- Understand the mechanics and usage of assembler, macro processors, and link editors.
Major Topics Covered
- Computer abstractions and technology
- Historical perspective
- The role of integrated circuits in modern computers
- Operations of computer hardware
- Instruction representation
- Arrays, pointers, indirection, addresses, and address modes
- Number representation
- Addition and subtraction
- Logical operations
- Multiplication and division
- The processor; datapath and control
- The concept of a datapath and control
- Simple implementations
- Clock cycles and synchronization
- Pipelining and parallel processors
- Conceptual issues
- Implementation considerations; stalls and forwarding
- Branches and exceptions
- SIMD and MIMD computers
- Programming and interconnection of parallel processors
- Conventional memory implementations
- Virtual memory
- Interfacing processors and peripherals
- Disk and file systems
- Interfacing I/O devices to memory, processor, and operating systems
- Peripheral technology
- Assemblers and linkers
- Linkers and loaders
- Memory usage
- Procedure calls
- Exception and interrupts
- Input and output
- The basics of logic design and Boolean algebra
- Gates, truth tables and logic equations
- Combinatorial logic
- Memory elements
- Finite state machines
- Implementation and minimization
Sample Laboratory Projects
- 1,2. Assembler for a one-register, one address machine. (two parts, due to the complexity of the problem).
- Simulation of a one-register, one address machine.
- Addressing modes and array implementation.
- Linking of externally compiled subroutines, interfacing with high-level languages.
- 6,7. Designing logic circuits, including the use of Boolean algebra. (two parts, due to the complexity of the problems).