CSE 30 Computer Organization and Systems Programming

Course Objectives This course gives an introduction to computer organization of modern digital computers, from the basic stored program model attributed to John von Neumann in the 1940s. The influence of these principles can be found in almost every computer which is in use these days, and they will lead the student to an understanding of the various components of a computer and their inter-relationships.

We will use a specific machine to study computer architecture at the assembly language and C interface level. We are currently using the HP/Apollo 9000/400 series workstations and their Motorola 68000 series microprocessor to familiarize students with machine-oriented programming. Efficient and portable high-level language software engineering is achieved by understanding comparative architecture-dependent implementations of various constructs and mechanisms, such as stack frame implementation within the runtime environment (text/data/BSS/ heap/stack) and internal storage representations (including byte ordering and number of bytes of an object on different architectures).

Programming assignments using C and assembly languages with some emphasis on UNIX systems programming will be used to reinforce these concepts.

Course Description Introduction to computer organization of modern digital computers - understanding the various components of a computer and their inter-relationships. Study of a specific architecture/machine with emphasis on systems programming in C and Assembly languages in a UNIX environment. 4 units

Format 3 hours of lecture per week, 2 one-hour sections per week, 8 hours of computer lab per week, and 2 hours of outside preparation per week.

Prerequisites CSE 12 and CSE 20 or consent of the instructor.

Example Textbooks Microcomputer Architecture and Programming -- The 68000 Family, John F. Wakerly, Wiley, 1989. CSE 30 Lecture Notes and CSE 30 Lab Notes and Guides.

Laboratory work 4 to 5 programming assignments using C and assembly languages to familiarize the student with a particular architecture at the C/assembly and assembly/hardware levels with emphasis on the runtime environment, to include the structure and use of stack frames and how they support conventions of C/assembler routines calling each other, recursion, dynamic memory management, etc.

With the understanding of a specific architecture implementation and general comparisons of other architectures, students should gain the knowledge and skills necessary to produce more efficient and portable high-level language code throughout their careers.

These programming assignments will also emphasize concepts in UNIX systems programming. This course assumes a good working knowledge of C programming.

Offered Every quarter: Fall, Winter and Spring.

SYLLABUS
1. Categories of machine organization/classifications. Basics of modern digitial computer organization.

2. Number systems, bases, internal integer and floating point representations.

3. Basic assembly language instructions: data transfer, arithmetic, logical expressions, program flow control (branching and subroutine calling), bit manipulation, string and character processing. All with comparisons to C language constructs.

4. Instruction formats, addressing modes, decoding and encoding instruction streams, instruction pipelining.

5. Subroutines, Procedures, Functions, Recursion with emphasis on stack frame mechanisms.

6. The ALU, Control Unit, Memory subsystems, and Input/Output systems.

7. Compile/assembly through execution process: preprocessor/compiler/assembler/linker loader. Dynamic and static binding.

8. OS interactions: process control, context switching, scheduling, file systems, memory management/virtual memory, interprocess communications, booting process.

9. Performance issues, benchmarking techniques, RISC/CISC debate, parallel computing.


Back Top Next Contents