This course is a first introduction to computer system organization and assembly language programming. It examines a computer system from two different points of view: a programmer’s view and a computer designer’s view.
From the programmer’s view, the course describes how programs written in a high-level language, such as C or Java, get translated into machine (or assembly language) instructions which the hardware executes directly. It also explains why a general-purpose computer is designed the way it is and the influence of electronics on this design and its performance. From the designer’s view, the course introduces the basic elements used in designing a computer, such as logic elements, functional units, memory subsystems, and I/O and the control for these subsystems. It presents a basic control unit which makes it possible for the computer to execute programs.
Our study of a computer is performed based on abstraction levels. The relationship between different levels is hierarchical and helps abstract away the details of the levels below. This grouping into a level and its abstraction to a higher level establishes a hierarchical relationship between elements of the computer system. This relationship aids in understanding the hardware and its programming by breaking it into more easily understandable sub-components.
In our study of computer organization, the following levels and their relationships are discussed (top to bottom):
Topics covered include:
MIPS Assembly Labs & Programming Assignments cover the following topics:
Past Projects include: