-
Department Info
-
-
Admissions
-
-
Academics
-
-
People
-
-
Research
-
-
-
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
- To give students an understanding of the kinds of operations that can be executed efficiently in hardware and how programs run on real systems.
- 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.
- To familiarize students with both numerical and non-numerical data representation.
- 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.
- To prepare students for more advanced computer system courses.
Related Links
- CSE Undergraduate Portal
- Undergraduate Advising Office Hours
- UMN Academics Page
- CS Undergraduate Catalog
Advising Related Sites
- CLA Lower Division advising
- IT Lower Division advising
- CLA Upper Division Application Requirements
- IT Upper Division Application Requirements
- Transferring credit
- CLA Career and Community Learning Center
- IT Career Services
- Job Resource Center (AfterCollege)
- University Counseling and Consulting Services
- CSE Graduate Admissions
Other Programs
Other Opportunities
- Student Organizations
- The UROP program
- Research Opportunities
- Learning Abroad Center
- Other IT Student Groups
Other Sites of Interest

