University of Minnesota
Computer Science & Engineering
http://www.cs.umn.edu/

CSCI 2021: Machine Architecture and Organization

Overall Description

CSci 2021 is the first introductory course on computer organization and computer systems. It is a required course that CS majors should take in their sophomore year. 2021 introduces students to the organization of basic components in modern computers such as processors, hierarchical memory systems, and I/O peripherals, and includes basic concepts in logic circuit design. It also introduces students to the underlying principles by which programs are executed on a computer. This course provides broad coverage of processor operation and the aspects of system software such as compilers, linkers/loaders, and operating systems that are important from the programmer's perspective. In order to study the behavior of programs at this level, the student will be introduced to the system programming language C and to the instruction set architecture of at least one processor.

Catalog Description

Introduction to hardware/software components of a computer system: data representation, boolean algebra, machine-level programs, instruction set architecture, processor organization, memory hierarchy, virtual memory, compiling, linking. Programming in C.

Content

1/2 Week INTRODUCTION
Introduction to course, motivation, and overview of computer systems.
2 Weeks ELEMENTS OF DIGITAL COMPUTER LOGIC
Boolean logic, combinational circuits including components such as the Full-Adder, encoder, decoder, and multiplexer. Sequential circuits: flip-flops, clocks, registers, counters, finite state machines.
2 Weeks REPRESENTING DATA IN COMPUTERS
Organization of data in computers - bytes. words, etc., representation of characters and integers, integer arithmetic, and representation of floating point numbers.
3 Weeks MACHINE LEVEL REPRESENTATION OF C PROGRAMS
The representation of C language constructs in assembly, including ISA for a particular machine, accessing information, arithmetic and logic operations, control flow, procedures including use of stack, array allocation and access, and other data structures.
3 Weeks MEMORY HIERARCHY
Storage technologies, locality, memory hierarchy, caches, including impact of cache on program performance, virtual memory, dynamic memory allocation.
1/2 Week MEASURING AND OPTIMIZING PROGRAM PERFORMANCE
Capabilities of optimizing compilers, common optimizations, measuring time on a computer system.
1/2 Week LINKING
Static linking, object files, executable files, linking libraries, relocation, loading, shared libraries.
1 1/2 Week PROCESSOR ORGANIZATION
Datapath, control, pipelines.
3 Weeks (during recitations/labs) C programming.

Why This Class is Important and its Role in the Curriculum

This is the only required class that discusses the computer: its organization, the representation of programs and data at the machine level, and the system information students need to understand issues of performance and to be able to debug a sizable system when something breaks. It provides important background information for classes in operating systems and compilers. It also provides an introduction to programming language C, a language required in some higher level computer science courses.

Prerequisites and Rationale

Computer Science II (CSci 1902). 2021 requires students to have some experience in high-level language programming, and familiarity with basic data structures such as arrays, stacks, and linked lists. Moreover, although the language in 2021 (C) is not the same as in 1902 (Java), students will find it easier to learn and use C in 2021 after having used Java in 1902.

Classes Having 2021 as a Prerequisite and Rationale

These include CSci 3081 (Program Design and Development), 4203 (Architecture), and 4061 Operating Systems. CSci 3081 teaches the C++ programming languages and assumes some knowledge of C. CSci 4203 builds on the architecture basics in 2021. CSci 4061 assumes both some C programming skill as well as familiarity with the other material in 2021.

Class Format

4 credits, 3 large class + 1 recitation hour per week. Recitations/labs will be used to present information about C programming and the use of software required by assignments. They will also be used to do examples extending the material covered in class, and for discussion of homework.

Probable Text, If Any

  • R. Bryant, D. O'Hallaron. Computer Systems: A Programmer’s Perspective. Prentice Hall, 2003
  • A. Kelley, I. Pohl. C by Dissection, 4th edition. Addison Wesley, 2001.

Course Objectives

  1. To give students an understanding of the kinds of operations that can be executed efficiently in hardware and how programs run on real systems.
  2. To provide students with essential information concerning the structure and function of computer components and their interaction. Students are also expected to learn basic terminology of computer architectures.
  3. To familiarize students with both numerical and non-numerical data representation.
  4. To expose students to assembly language. The students are expected to learn how to read the assembly code generated by a compiler and to understand how it relates to the source code. The students will also be familiar with techniques and tools used by system designers, such as debuggers, code profilers and performance measurement tools.
  5. To prepare students for more advanced computer system courses.
Contact CS&E | CS&E Employment | Site Map
Contact: 4-192 Keller Hall, 200 Union St, Minneapolis, MN 55455     Phone: (612) 625-4002