- ES Español

- EN English

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.
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:
- Describe the basic building blocks of computers and their role in the historical development of computer architecture [Describe]
- 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
- Programming abstractions, interfaces, use of libraries Programs: Distribution , Programs: Execution Properties , GPU Programming , Programs: Implementation Mappings , Programs: Declarative Parallelism , Programs: Starting Activities .
- Distinction and interaction between application and OS services, remote procedure call Role and Purpose of Operating Systems .
- Basic concept of scaling: performance vs problem size.
Learning Outcomes:
Core:
- 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]
- Describe that hardware, OS, VM, and application are additional layers of interpretation/processing [Describe]
- Describe the mechanisms of how errors are detected, signaled back, and handled through the layers [Describe]
- 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]
- Identify bugs in a layered program by using tools for program tracing, single stepping, and debugging [Analyze]
- 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:
- 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
- State and state transition (e.g., starting state, final state, life cycle of states) Formal Languages and Automata .
- Finite state machines (e.g., NFA, DFA) Formal Languages and Automata .
- Computers and Network Protocols as examples of State Machines Fundamentals of Networks and Communications .
Learning Outcomes:
Core:
- Describe computations as a system characterized by a known set of configurations with transitions from one unique configuration (state) to another (state) [Describe]
- Describe the distinction between systems whose output is only a function of their input (stateless) and those with memory/history (stateful) [Describe]
- Develop state machine descriptions for simple problem statement solutions (e.g., traffic light sequencing, pattern recognizers) [Create]
- Describe a computer as a state machine that interprets machine instructions [Describe]
- 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]
- 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
- Sequential vs parallel processing. Concurrency , Programs: Distribution , Programs: Execution Properties , GPU Programming , Programs: Implementation Mappings , Programs: Declarative Parallelism , Programs: Starting Activities .
- Application-level sequential processing: single thread Concurrency , Programs: Distribution , Programs: Execution Properties , GPU Programming , Programs: Implementation Mappings , Programs: Declarative Parallelism , Programs: Starting Activities .
- Simple application-level parallel processing: request level (web services/client-server/distributed), single thread per server, multiple threads with multiple servers, pipelining Concurrency , Programs: Distribution , Programs: Execution Properties , GPU Programming , Programs: Implementation Mappings , Programs: Declarative Parallelism , Programs: Starting Activities .
Learning Outcomes:
Core:
- Write a simple sequential problem and a simple parallel version of the same program [Write]
- 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]
- 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
- Different types of resources (e.g., processor share, memory, disk, net bandwidth) Fundamentals of Networks and Communications , File Systems API and Implementation , Memory Management , Scheduling .
- Common resource allocation/scheduling algorithms (e.g., first-come-first-serve, priority-based scheduling, fair scheduling, and preemptive scheduling) Scheduling .
- Advantages and disadvantages of common scheduling algorithms Scheduling .
Learning Outcomes:
Core:
- Define how finite computer resources (e.g., processor share, memory, storage, and network bandwidth) are managed by their careful allocation to existing entities [Define]
- Describe how common resource allocation/scheduling algorithms work [Describe]
- Develop common scheduling algorithms and evaluate their performances [Create]
- 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
- Latencies in computer systems:
- Speed of light and computers (one foot per nanosecond vs one GHz clocks) Functional Organization
- Memory vs disk latencies vs across-the-network memory Memory Hierarchy , Performance and Energy Efficiency enumerate
- Caches and the effects of spatial and temporal locality on performance in processors and systems Memory Hierarchy , Performance and Energy Efficiency , Memory Management .
- Caches and cache coherency in databases, operating systems, distributed systems, and computer architecture Memory Hierarchy , DBMS Internals , Memory Management .
- Introduction to the processor memory hierarchy Memory Hierarchy , Performance and Energy Efficiency .
- The formula for average memory access time Memory Hierarchy .
Learning Outcomes:
Core:
- Describe the breakdown of the latency of computer systems in terms of memory, disk, and network [Describe]
- Explain the importance of locality in determining system performance [Explain]
- 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:
- Explain why it is important to isolate and protect the execution of individual programs and environments that share common underlying resources [Explain]
- 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]
- 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
- Performance figures of merit Performance and Energy Efficiency , Evaluation .
- Workloads and representative benchmarks, and methods of collecting and analyzing performance figures of merit Performance and Energy Efficiency , Evaluation .
Learning Outcomes:
Core:
- Explain how the components of system architecture contribute to improving its performance [Explain]
- Explain the circumstances in which a given figure of a system performance metric is useful [Explain]
- 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
- CPI (Cycles per Instruction) equation as a tool for understanding tradeoffs in the design of instruction sets, processor pipelines, and memory system organizations Performance and Energy Efficiency , Evaluation .
- Amdahl's Law: the part of the computation that cannot be sped up limits the effect of the parts that can Performance and Energy Efficiency , Evaluation .
- Order of magnitude analysis (Big O notation) Asymptotic Notation and Complexity Classes , Complexity Analysis: Recursion, Amortization, and Tight Bounds , Complexity Analysis Framework , Computational Complexity Theory .
- Analysis of slow and fast paths of a system Functional Organization .
- Analytical tools to guide quantitative evaluation.
Learning Outcomes:
Core:
- Describe Amdahl's law and discuss its limitations [Describe]
- 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:
- Apply software tools to profile and measure program performance [Apply]
- Design and conduct a performance-oriented experiment of a common system (e.g., an OS and Spark) [Design]
- 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
- Distinction between bugs, faults, and failures Coordination , Reliability Concepts , Reliability Engineering .
- Reliability vs availability.
- Reliability through redundancy:
- check and retry Reliability Support , Fault tolerance
- redundant encoding (error correction codes, CRC, FEC, RAID) Memory Hierarchy , Distributed Databases/Cloud Computing , Reliability Support
- duplication/mirroring/replicas Distributed Databases/Cloud Computing enumerate
- Other approaches to reliability (e.g., journaling) Reliability Support , Fault tolerance , Reliability Concepts , Reliability Engineering .
Learning Outcomes:
Core:
- 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]
- Articulate the distinction between detecting, handling, and recovering from faults and the methods for their implementation [Articulate]
- Describe the role of error correction codes in providing error checking and correction techniques in memories, storage, and networks [Describe]
- Apply simple algorithms for exploiting redundant information for the purposes of data correction [Apply]
- 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
- Common system security issues (e.g., viruses, denial-of-service attacks, and eavesdropping) Network Security , Protection and Safety , Security Design and Controls Engineering , Threat Analysis and Security Engineering , Trusted Computing and Privacy Engineering , AI and Hardware Security , Access Control and Applications , Security Mindset and Principles .
- Countermeasures Network Security , Principles of Operating System , Protection and Safety :
- Cryptography Protocols, Applications and Advanced Cryptography , Cryptographic Algorithms , Cryptography Fundamentals
- Security architecture Security Design and Controls Engineering , Threat Analysis and Security Engineering , Trusted Computing and Privacy Engineering enumerate
- Representative countermeasure systems:
- Intrusion detection systems, firewalls Network Security
- Antivirus systems enumerate
Learning Outcomes:
Core:
- Describe some common system security issues and give examples [Describe]
- Describe some countermeasures against system security issues [Describe]
- 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:
- Describe common criteria of system design [Describe]
- Given the functionality requirements of a system and its key design criteria, provide a high-level design of this system [Generate]
- 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
- Intellectual property rights of computer systems Open Source, Piracy and DRM , Digital IP Rights and Copyright , Intellectual Property Foundations , Licensing, Plagiarism and Authorship .
- Common software licenses Open Source, Piracy and DRM , Digital IP Rights and Copyright , Intellectual Property Foundations , Licensing, Plagiarism and Authorship .
- Computer crimes Computer Crimes and Attacks , Security Laws, Policies and Responsibility .
Learning Outcomes:
Core:
- Describe the intellectual property rights of computer systems [Describe]
- List representative software licenses and compare their differences [List]
- List representative computer crimes [List]