-
Department Info
-
-
Admissions
-
-
Academics
-
-
-
Research
-
-
-
Main navigation | Main content
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.
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.
| 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. |
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.
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.
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.
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.