CS@GWU homepage


world wide web
cs @ gwu

Department of Computer Science
The George Washington University
801 22nd Street NW, Suite 704
Washington DC 20052

Voice: (202) 994-7181
Fax: (202) 994-4875
E-mail: cs@gwu.edu

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, 2’s 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.
• 2’s 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 (Ceaser’s 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 variables—run-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

  • Schedule of courses
    Libraries

    SEAS Website
    GWU Website