C. Shub CS 216 Spring 2010 2009 #3 Page 1 CS 216 - Computer Organization and Assembly Language Programming Catalog: Provides an introduction to the concepts of com- puter architecture, functional logic, design and computer arithmetic. It presents material on the mechanics of information transfer and control within a computer system. Also included are sym- bolic programming techniques, implementing high level control structures, addressing modes and their relation to arrays, subprograms, parameters, linkage to high level languages and the assembly process. Prer., C S 145 and C S 206. Textbook: "Computer Organization and Design" by Patterson and Hennessey (fourth edition) Earlier editions may be used, but there are sub- stantial differences. Moreover, some of the mate- rial does not appear or appears ONLY on the CD-ROM in earlier editions. Coordinator: Charles M. Shub, Professor Goals: o Enable students to understand machine organiza- tions. o Enable students to understand interconnection structures o Enable students to understand methodologies for information transfer. o Enable students to understand methodologies for information storage. o Enable students to know diverse information rep- resentation schemes. o Enable students to know tradeoffs among diverse processor organizations o Enable students to know necessary components of instruction sets o Enable students to write assembly language pro- grams o Enable students to understand machine organiza- tions. o Enable students to understand the role and importance of system software standards. C. Shub CS 216 Spring 2010 2009 #3 Page 2 o Enable students to know diverse representation schemes. o Enable students to understand the fundamentals of processor design. Prerequisites by topics: o Familiarity with using a computer system. o Ability to design and implement algorithms in a procedure oriented language. o Understanding of concepts and implementations of data structures Topics: I. Introduction and historical perspective II. Computer Abstractions and Technology III. The Role of Performance 1. Factors 2. Evaluation IV. Instruction Sets 1. Operations 2. Operands 3. Representing Instructions 4. Assembly Language Programming 5. Logical Operations 6. Instructions for Making Decisions 7. Support for Procedures 8. Communicating with People 9. Addressing Modes 10. Translating and starting a program 11. Compiling Basics 12. Object Orientation C. Shub CS 216 Spring 2010 2009 #3 Page 3 13. Arrays versus Pointers V. Computer Arithmetic 1. Signed and Unsigned Numbers. 2. Addition and Subtraction 3. Multiplication 4. Division 5. Floating Point VI. Processor Design 1. Logic Design 2. ALU Design VII. Processor Implementation 1. Building a Datapath 2. Implementing a Simple Datapath 3. Multiple Cycle Implementations 4. Exceptions Laboratory projects: (number and specific assignments vary with instructor) I. Design and implementation of several simple applications II. Integration of simple applications into a cohesive package. Target Population: All Computer Science Majors, or anyone requir- ing a knowledge of computer organization and assembly language programming. Relation to Rest of Curriculum: The course should be taken in the sophomore year. It depends on knowledge of pro- gramming concepts developed in the prerequisite CS courses. The course builds the basic knowledge of how a computer works that is necessary for further study. The course is required as a prerequisite for the computer architecture course.