Introduction to organization of modern digital computers - understanding the various components of a computer and their interrelationships. Study of a specific architecture/machine with emphasis on systems programming in C and Assembly languages in a UNIX environment.
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 Sun workstations and their SPARC 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.
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.
Please see Prerequisites page.
Every quarter: Fall, Winter, and Spring. Please see Tentative Course Offerings page.