COURSE SYLLABUS CSCI 223 - Computer Organization and Assembly Language Catalog Data: CSCI 223: Computer Organization and Assembly Language. System and processor architectures; assembly language; I/O and storage devices and control techniques; addressing and linkage techniques; macros. Prerequisite: 112. (3). Coordinator: P. Tobin Maginnis, Associate Professor of Computer and Information Science. Goals: Students are given an overview of the register transfer level of a computer and the processor-memory-switch level of a computer system to understand how these components allow computation. Students are then shown how to program the Intel 80x86 family of processors. Textbook: Computer Systems: A Programmer's Perspective by Randal E. Bryant and David R. O'Hallaron, Prentice Hall, 2002. Prerequisite by Topic: 1. Familiarity with general purpose high-level language 2. Familiarity with general programming concepts Topics: 1. Architecture, implementation, and realization (1 hour) 2. A Tour of Computer Systems; The PDP-8 minicomputer (4 hours) 3. Representing and Manipulating Information (4 hours) 4. Machine-Level Representation of Programs (3 hours) 5. Processor Architecture (3 hours) 6. Optimizing Program Performance (3 hours) 7. The Memory Hierarchy (3 hours) 8. Assembly, Linking, and execution (3 hours) 9. Exceptional Control Flow (2 hours) 10. Measuring Program Execution Time (3 hours) 11. Virtual Memory (3 hours) 12. System-Level I/O (3 hours) 13. Network Programming (3 hours) 14. Concurrent Programming (3 hours) 15. Tests (four plus the final exam) Course Grading: Four written tests @ 100 points each 400 Six program exercises @ 16.66 points each 100 --- Total course points 500 First ten questions of the final must replace a previous test, last ten questions count 5 bonus points for each question. 450 and up -> A 400 to 449 -> B 350 to 399 -> C 300 to 349 -> D Below 300 -> F Course Objectives Upon course completion the student should be able to: 1. Describe the difference, and design trade off, between proprietary and public-knowledge software. 2. Write an assembly language programs using pointers. 3. Describe a computer architecture execution cycle. 4. Describe number representations and ASCII code. 5. Describe the program compilation process. 6. Explain the memory hierarchy and virtual memory. 7. Describe system-level I/O