|
CSci 52 - Introduction to Computer Organization (replaced by CSci 135)Narahari and Staff
Credits: 3
Broad introduction to all aspects of computer systems architecture. Number representation, computer arithmetic, digital logic and circuit design. Computer organization, micro-architecture and processor datapath, assembly and machine language programming. Introduction to memory organization and the hardware-software interface. Implementation of high level language constructs in a machine language, and impact of architecture on program performance. Prerequisite: CSci 133, Corequisite: CSci 143. (Fall)
Textbooks:
(Suggested) Introduction to computer systems: from bits and gates to C and beyond. Patt and Patel. McGraw Hill.
Contact time: 2.5 hours lecture and 75 minute lab per week.
Schedule of topics.
1. Week 1: Intro and Number representation
Introduction to Computer Architecture organization levels, abstraction.
Number representation: binary numbers, 2s complement, ASCII, floating point.
Lab: Unix tutorial.
Book chapters 1,2.
2. Week 2: Number representation in C, arithmetic and logic operators and introduction to logic devices
Data representation, operators (Bitwise and logic operations) in C.
2s complement arithmetic and logic
CMOS transistors as building block for basic combinational logic gates.
Lab: conversion from ASCII to Integer exercises. Project on bit manipulation exercises in C.
Book chapters 2,12
3. Week 3,4,5: Digital Logic Design
Combinational circuits using basic gates (AND, OR).
More complex combinational logic devices: Decoders, Multiplexers, PLAs, Adders (ripple-carry, carry lookahead, simple multiplication)
Design of Boolean circuits using Karnaugh maps.
Flip-flops and storage elements. Simple memory model.
Clocked sequential circuits, including counters and control logic for processor datapath.
Design of finite state machines.
Labs: Use of circuit simulators, design of combinational and sequential circuits using logic simulator. Teamwork and team assignments.Project on bit manipulation exercises in C.
Book chapters: 3, Notes provided (also textbook for CS123 for Boolean algebra)
4. Week 6: introduction to von Neumann architecture model
components of CPU, instruction execution process, processor datapath design.
Machine level representation of programs and Instruction Set Architecture (ISA).
Instruction set, registers, addressing modes, opcodes, control flow instructions and branch instructions.
Book chapters 4,5,6
5. Weeks 7,8,9: Architecture of a simple processor and Assembly Language Programming.
Assembly process, linking, loading.
Example assembly programs.
I/O routines, Traps, Stack, subroutine calls.
Labs: Using the processor simulator, Hands-on in-class assembly programming exercises, testing and debugging programs, Project on implementing a large assembly program (Ceasers cipher, tic-tac-toe, tetris)
Book chapters: 5,7,8,9,10, 15
6. Weeks 10,11,12: How a high level program works. Systems programming and implementation of C programs in assembly
Program execution process: Compiling, translation, linking, loading. Testing and debugging.
Allocation of variablesrun-time stack. Simple data structures.
Function calls and smashing the stack attacks.
Memory layout, pointers, heap, dynamic data structures.The malloc process.
Labs: Review of unix utilities, Make files, using debuggers such as gdb, the gcc compiler. Compiling C programs to assembly. Stack smashing attacks.
Book chapters: 11,12,13,14, 16,17,18,19
7. Week 13: Introduction to Memory hierarchy and Memory management.
Memory hierarchy, and introduction to cache memory concept.
Labs: Implementing dynamic data structures and file I/O in C. Project on implementing a C program requiring use of malloc and file I/O.
Book chapter notes provided.
8. Week 14: Program performance and code optimization.
Models of program and system performance.
Code optimization techniques function inlining, strength reduction, memory and loop optimizations, profiling.
Labs: Profiling tools such as gprof. Project on code optimization.
Book chapter: Notes provided.
Sample course outline
Back to:
Undergraduate Courses
Graduate Courses
CS for Non-CS Students
|
|