2.16. System Fundamentals (SF)

2.16. System Fundamentals (SF)

A computer system is a set of hardware and software infrastructures upon which applications are constructed. Computer systems have become a pillar of people's daily life. As such, it is essential for students to learn knowledge about computer systems, grasp the skills to use and design these systems, and understand the fundamental rationale and principles in computer systems. It could equip students with the necessary competence for a career related to computer science.

In the curriculum of computer science, the study of computer systems typically spans multiple knowledge areas, including, but not limited to, operating systems, parallel and distributed systems, communications networks, computer architecture and organization, and software engineering. The System Fundamentals knowledge area, as suggested by its name, focuses on the fundamental concepts and design principles in computer systems that are shared by these courses within their respective cores. The goal of this knowledge area is to present an integrative view of these fundamental concepts and design principles in a unified albeit simplified fashion, providing a common foundation for the different specialized mechanisms and policies appropriate to the specific domain area. The fundamental concepts in this knowledge area include an overview of computer systems, basic concepts such as state and state transition, resource allocation and scheduling, and so on. Moreover, this knowledge area introduces basic design principles to improve the reliability, availability, efficiency, and security of computer systems.

Table 2.16: List of KUs in the System Fundamentals area.

2.16.1. SF/Hardware Components and Logic  (CS Core: 2 hrs) ↑ Back to top

Introduces the building blocks and basic components of a computer, hardware as a computational paradigm, and the concept of pipelining.
Topics:
Core

  • Basic building blocks and components of a computer (gates, flip-flops, registers, interconnections; datapath + control + memory).
  • Hardware as a computational paradigm: Fundamental logic building blocks; Logic expressions, minimization, sum of product forms Digital Logic and Digital Systems .
  • Basic concept of pipelining, overlapped processing stages Functional Organization .

Learning Outcomes:
Core:

  1. Describe the basic building blocks of computers and their role in the historical development of computer architecture [Describe]
  2. Design a simple logic circuit using the fundamental building blocks of logic design to solve a simple problem (e.g., adder) [Design]

2.16.2. SF/Layers, Abstractions and Scalability  (CS Core: 2 hrs) ↑ Back to top

Covers programming abstractions, the distinction between application and operating system services, the concept of scaling, and the layered organization of computer systems.
Topics:
Core

Learning Outcomes:
Core:

  1. Describe how computing systems are constructed of layers upon layers, based on separation of concerns, with well-defined interfaces, hiding details of low layers from the higher layers [Describe]
  2. Describe that hardware, OS, VM, and application are additional layers of interpretation/processing [Describe]
  3. Describe the mechanisms of how errors are detected, signaled back, and handled through the layers [Describe]
  4. Construct a simple program (e.g., a TCP client/server) using methods of layering, error detection and recovery, and reflection of error status across layers [Create]
  5. Identify bugs in a layered program by using tools for program tracing, single stepping, and debugging [Analyze]
  6. Understand the concept of strong vs weak scaling, i.e., how performance is affected by the scale of the problem vs the scale of resources to solve the problem. This can be motivated by simple, real-world examples [Assess]

2.16.3. SF/Digital Systems and Logic  (CS Core: 2 hrs) ↑ Back to top

Covers digital vs. analog systems, logic gates, Boolean expressions, clocks, and combinational and sequential logic, as the foundation for understanding computer systems operation.
Topics:
Core

  • Digital vs Analog/Discrete vs Continuous Systems.
  • Simple logic gates, logical expressions, Boolean logic simplification.
  • Clocks, State, Sequencing.
  • Combinational Logic, Sequential Logic, Registers, Memories Digital Logic and Digital Systems .

Learning Outcomes:
Core:

  1. Describe the differences between digital and analog systems, and between discrete and continuous systems. Can give real-world examples of these systems [Describe]

2.16.4. SF/State Machines  (CS Core: 2 hrs) ↑ Back to top

Introduces the concept of state and state transitions, finite state machines (FSMs), and their application to computers and network protocols as examples of state machines.
Topics:
Core

Learning Outcomes:
Core:

  1. Describe computations as a system characterized by a known set of configurations with transitions from one unique configuration (state) to another (state) [Describe]
  2. Describe the distinction between systems whose output is only a function of their input (stateless) and those with memory/history (stateful) [Describe]
  3. Develop state machine descriptions for simple problem statement solutions (e.g., traffic light sequencing, pattern recognizers) [Create]
  4. Describe a computer as a state machine that interprets machine instructions [Describe]
  5. Explain how a program or network protocol can also be expressed as a state machine and that alternative representations for the same computation can exist [Explain]
  6. Derive the time-series behavior of a state machine from its state machine representation (e.g., TCP connection management state machine) [Analyze]

2.16.5. SF/Sequential and Parallel Processing  (CS Core: 2 hrs) ↑ Back to top

Covers sequential and parallel processing, including single-thread and multi-thread models at the application level, and the evaluation of performance of parallel program versions.
Topics:
Core

Learning Outcomes:
Core:

  1. Write a simple sequential problem and a simple parallel version of the same program [Write]
  2. Evaluate the performance of simple sequential and parallel versions of a program with different problem sizes and be able to describe the speed-ups achieved [Evaluate]
  3. Describe on an execution timeline how parallelism events and operations can take place simultaneously (i.e., at the same time). Explain how work can be performed in less elapsed time if this can be exploited [Describe]

2.16.6. SF/Resource Management  (CS Core: 1 hr, KA Core: 1 hr) ↑ Back to top

This knowledge unit covers different types of resources in computer systems and common resource allocation and scheduling algorithms.
Topics:
Core

Learning Outcomes:
Core:

  1. Define how finite computer resources (e.g., processor share, memory, storage, and network bandwidth) are managed by their careful allocation to existing entities [Define]
  2. Describe how common resource allocation/scheduling algorithms work [Describe]
  3. Develop common scheduling algorithms and evaluate their performances [Create]
  4. Describe the pros and cons of common scheduling algorithms [Describe]

2.16.7. SF/Latency, Cache and Memory Hierarchy  (CS Core: 2 hrs, KA Core: 2 hrs) ↑ Back to top

Covers latencies in computer systems, spatial and temporal locality in caches, cache coherency, and the processor memory hierarchy with its average memory access time formula.
Topics:
Core

Learning Outcomes:
Core:

  1. Describe the breakdown of the latency of computer systems in terms of memory, disk, and network [Describe]
  2. Explain the importance of locality in determining system performance [Explain]
  3. Calculate average memory access time and describe the tradeoffs in memory hierarchy performance in terms of capacity, miss/hit rate, and access time [Calculate]

2.16.8. SF/Virtualization and Isolation  (CS Core: 1 hr, KA Core: 1 hr) ↑ Back to top

Covers the rationale for isolation and virtualization for protection and predictable performance, levels of indirection via virtual memory, and methods for implementing virtual memory and virtual machines.
Topics:
Core

  • Rationale of virtualization and isolation: protection and predictable performance Virtualization .
  • Levels of indirection, illustrated by virtual memory for managing physical memory resources Virtualization .
  • Methods for implementing virtual memory and virtual machines Virtualization .

Learning Outcomes:
Core:

  1. Explain why it is important to isolate and protect the execution of individual programs and environments that share common underlying resources [Explain]
  2. Describe how the concept of indirection can create the illusion of a dedicated machine and its resources even when physically shared among multiple programs and environments [Describe]
  3. Evaluate the performance of two application instances running on separate virtual machines and determine the effect of performance isolation [Evaluate]

2.16.9. SF/Performance Metrics and Benchmarks  (CS Core: 1 hr, KA Core: 1 hr) ↑ Back to top

Covers performance figures of merit, representative workloads and benchmarks, and collection and analysis methods for the quantitative evaluation of computer system performance.
Topics:
Core

Learning Outcomes:
Core:

  1. Explain how the components of system architecture contribute to improving its performance [Explain]
  2. Explain the circumstances in which a given figure of a system performance metric is useful [Explain]
  3. Explain the usage and inadequacies of benchmarks as a measure of system performance [Explain]

2.16.10. SF/Analytical Performance Models  (CS Core: 1 hr, KA Core: 1 hr) ↑ Back to top

Covers the CPI equation as a design tool, Amdahl's Law and its limitations, order of magnitude analysis (Big O), critical path analysis, and analytical tools for quantitative evaluation.
Topics:
Core

Learning Outcomes:
Core:

  1. Describe Amdahl's law and discuss its limitations [Describe]
  2. Apply limit studies or simple calculations to produce order-of-magnitude estimates for a given performance metric in a given context [Apply]

2.16.11. SF/Events, Tools and Experimentation  (CS Core: 1 hr, KA Core: 1 hr) ↑ Back to top

Covers events and their effect on performance (stalls, cache misses, page faults), understanding layered systems as evaluation platforms, microbenchmark pitfalls, and tools and experiments for measuring system performance.
Topics:
Core

  • Events on their effect on performance (e.g., instruction stalls, cache misses, page faults) Functional Organization , Memory Management .
  • Understanding layered systems, workloads, and platforms, their implications for performance, and the challenges they represent for evaluation.
  • Microbenchmark pitfalls.

Learning Outcomes:
Core:

  1. Apply software tools to profile and measure program performance [Apply]
  2. Design and conduct a performance-oriented experiment of a common system (e.g., an OS and Spark) [Design]
  3. Design a performance experiment on a layered system to determine the effect of a system parameter on system performance [Design]

2.16.12. SF/System Reliability  (CS Core: 2 hrs, KA Core: 1 hr) ↑ Back to top

This knowledge unit covers the distinction between bugs, faults, and failures; reliability vs availability; and reliability through redundancy including check and retry, redundant encoding, and duplication.
Topics:
Core

Learning Outcomes:
Core:

  1. Explain the distinction between program errors, system errors, and hardware faults (e.g., corrupted memory) and exceptions (e.g., attempt to divide by zero) [Explain]
  2. Articulate the distinction between detecting, handling, and recovering from faults and the methods for their implementation [Articulate]
  3. Describe the role of error correction codes in providing error checking and correction techniques in memories, storage, and networks [Describe]
  4. Apply simple algorithms for exploiting redundant information for the purposes of data correction [Apply]
  5. Compare different error detection and correction methods for their data overhead, implementation complexity, and relative execution time for encoding, detecting, and correcting errors [Compare]

2.16.13. SF/System Security  (CS Core: 2 hrs, KA Core: 1 hr) ↑ Back to top

This knowledge unit covers common system security issues and countermeasures, including cryptography and security architecture, as well as representative countermeasure systems such as intrusion detection systems and antivirus systems.
Topics:
Core

Learning Outcomes:
Core:

  1. Describe some common system security issues and give examples [Describe]
  2. Describe some countermeasures against system security issues [Describe]
  3. Describe representative countermeasure systems [Describe]

2.16.14. SF/System Design  (CS Core: 2 hrs, KA Core: 1 hr) ↑ Back to top

This knowledge unit covers common criteria of system design (e.g., liveness, safety, robustness, scalability, and security) and the designs of representative systems.
Topics:
Core

  • Common criteria of system design (e.g., liveness, safety, robustness, scalability, and security) Evaluation .
  • Designs of representative systems (e.g., Apache web server, Spark, and Linux).

Learning Outcomes:
Core:

  1. Describe common criteria of system design [Describe]
  2. Given the functionality requirements of a system and its key design criteria, provide a high-level design of this system [Generate]
  3. Describe the design of some representative systems [Describe]

2.16.15. SF/Society, Ethics, and the Profession ↑ Back to top

This knowledge unit covers intellectual property rights of computer systems, common software licenses, and computer crimes.
Topics:
Core

Learning Outcomes:
Core:

  1. Describe the intellectual property rights of computer systems [Describe]
  2. List representative software licenses and compare their differences [List]
  3. List representative computer crimes [List]

Spotted a typo, an outdated course, a broken link, or have a suggestion? Let us know.

Scan to open on your phone