CS2001 Fundamentals of Computing Systems

The objective of this course is to teach basic CS concepts by constructing a general-purpose computer system from the ground up. By introducing computer architecture, compilers, operating systems, and algorithms through hands-on projects, students will explore the interdependency of hardware and software design techniques and balance tradeoffs between competing design constraints. Students will learn about the engineering of computer systems across many levels of abstraction, from digital logic to software design.

Corequisite

CS2020 and MA2025.

Lecture Hours

3

Lab Hours

Current: 3; New: 2

Course Learning Outcomes

Upon successfully completing the course, the student will be able to:

  • Apply the von Neumann model to construct a general-purpose computer system.
  • Apply the principle of abstraction to solve computer system design problems.
  • Understand how processors are designed and organized.
  • Understand how the processor and memory unite to execute programs.
  • Apply Boolean logic to the design of digital circuits.
  • Construct complex systems from primitive digital circuits.
  • Understand how programs work at different levels of abstraction.
  • Translate programs to progressively lower levels of abstraction.
  • Describe and explain the dynamics of procedure invocation and evaluation.