# Computer Science Fundamentals
## Table of Contents
1. [Parallelism and Concurrency](#parallelism-and-concurrency)
2. [Operating Systems & Software](#operating-systems--software)
3. [Networks & the Internet](#networks--the-internet)
4. [Databases & Information Storage](#databases--information-storage)
5. [Emerging Fields in Computer Science](#emerging-fields-in-computer-science)
---
## 1. Parallelism and Concurrency
### What is Parallelism?
**Parallelism** is a key concept in computer architecture and programming, allowing multiple processes to execute simultaneously, thereby improving performance and efficiency. Different types of parallelism can be employed based on the nature of the tasks and the architecture of the system.
### Key Terminology
| Term | Definition |
|------|------------|
| **ALU (Arithmetic-Logic Unit)** | The part of a computer system that performs arithmetical and logical operations on data |
| **Computationally Intensive** | Describes a problem requiring a large number of arithmetical operations (more than 10¹²) to solve |
| **Control Unit** | The part of a computer system that controls the memory, arithmetic-logic, and input/output units |
| **FLOPS** | Floating Point Operations Per Second - a standard measure of computer speed |
| **Parallel Computing** | A form of computing where actions are performed simultaneously by several processors |
| **Sequential Computing** | Actions performed one after another by a single processor |
---
### Types of Parallelism
#### 1. Instruction-Level Parallelism (ILP)
Instruction-Level Parallelism refers to the ability of a CPU to execute multiple instructions simultaneously.
**Key Features:**
- **Superscalar Architecture**: Processors can issue multiple instructions per clock cycle
- **Out-of-Order Execution**: Instructions execute as resources become available
- **Instruction Pipelining**: Instructions divided into stages (fetch, decode, execute, memory access, write-back)
**Benefits:**
- Increased throughput between consecutive instructions
- Improved utilization of CPU resources
**Applications:**
- High-performance computing (scientific simulations, financial modeling)
#### 2. Data-Level Parallelism (DLP)
Data-Level Parallelism involves performing the same operation on multiple data elements simultaneously.
**Key Features:**
- **SIMD (Single Instruction, Multiple Data)**: One instruction operates on multiple data points
- **Vectorization**: Compilers optimize loops to execute multiple iterations concurrently
**Benefits:**
- Efficient processing of large datasets
- Significant performance improvements in data-intensive applications
#### 3. Task Parallelism
Task parallelism decomposes a task into subtasks and allocates each for concurrent execution.
**Key Features:**
- Processors execute different subtasks simultaneously
- Each subtask may perform different operations
#### 4. Bit-Level Parallelism
Based on increasing processor size to reduce the number of instructions needed.
**Example:**
- An 8-bit processor needs two instructions to sum two 16-bit integers
- A 16-bit processor performs the same operation with one instruction
---
### Serial vs. Parallel Computing
#### Serial Computing
**Characteristics:**
1. Problem broken into discrete instructions
2. Instructions executed one by one
3. Only one instruction executes at any moment
**Real-life Example:**
People standing in a queue for movie tickets with only one cashier serving customers one at a time.
#### Parallel Computing
**Characteristics:**
1. Multiple processing elements work simultaneously
2. Problems broken into instructions solved concurrently
3. All resources work at the same time
**Advantages:**
- **Time & Cost Savings**: Multiple resources reduce execution time
- **Scalability**: Can solve larger problems impractical for serial computing
- **Resource Utilization**: Makes better use of hardware capabilities
- **Non-local Resources**: Can leverage distributed computing resources
**Disadvantages:**
- Communication and synchronization complexity
- Algorithms must be designed for parallel execution
- Requires low coupling and high cohesion
- Needs skilled programmers for effective implementation
---
### Why Parallel Computing?
1. **Real-world Dynamics**: Many events happen concurrently in different places
2. **Large Datasets**: Extensive data requires parallel processing for management
3. **Efficiency**: Saves time, money, and ensures effective resource utilization
4. **Real-time Systems**: Impractical to implement using serial computing
**Applications:**
- Databases and data mining
- Real-time system simulation
- Science and engineering
- Advanced graphics, AR/VR
- AI and machine learning
---
## Concurrency in Operating Systems
### What is Concurrency?
**Concurrency** refers to the ability to execute multiple processes or threads simultaneously, improving resource utilization and system efficiency.
### Motivations for Concurrent Execution
1. **Physical Resource Sharing**: Limited hardware in multiuser environments
2. **Logical Resource Sharing**: Shared files and information
3. **Computation Speedup**: Parallel execution
4. **Modularity**: Separation of system functions into processes
---
### Process Types
#### Independent Processes
- State not shared with other processes
- Execution depends only on input state
- Results are deterministic (same input → same output)
- Termination doesn't affect other processes
#### Cooperating Processes
- State shared with other processes
- Results depend on execution sequence (non-deterministic)
- Results may vary for same input
- Termination may affect other processes
---
### Process Operations
#### Process Creation
- Parent processes can create child processes
- **Execution options:**
- Parent and child execute concurrently
- Parent waits until children terminate
- **Resource sharing:**
- Share all resources
- Children share subset of parent's resources
#### Process Termination
**Reasons for termination:**
- Child exceeded resource allocation
- Task no longer required
- Parent terminated (cascading termination)
---
### Principles of Concurrency
Both interleaved and overlapped processes present similar challenges:
**Critical factors affecting execution:**
- Activities of other processes
- OS interrupt handling
- OS scheduling policies
---
### Problems in Concurrency
| Problem | Description |
|---------|-------------|
| **Sharing Global Resources** | Coordinating read/write operations on shared variables |
| **Optimal Resource Allocation** | Difficult for OS to manage optimally |
| **Programming Errors** | Hard to locate due to non-reproducible reports |
| **Channel Locking** | Inefficient when OS locks channels preventing other use |
---
### Advantages of Concurrency
* **Multiple Applications**: Run several applications simultaneously
* **Better Resource Utilization**: Unused resources available for other processes
* **Improved Response Time**: No need to wait for completion before next task
* **Better Performance**: Concurrent use of processor and I/O devices
### Drawbacks of Concurrency
* **Protection Required**: Applications must be protected from each other
* **Coordination Overhead**: Additional mechanisms needed
* **Performance Overhead**: OS complexity for switching among applications
* **Degraded Performance**: Too many concurrent applications can severely impact performance
---
### Issues of Concurrency
#### Non-atomic Operations
Operations that are interruptible can cause problems when multiple processes access them.
#### Race Conditions
Outcome depends on which process reaches a point first.
#### Blocking
- Processes wait for resources
- Can block for long periods (e.g., terminal input)
- Problematic for processes requiring periodic updates
#### Starvation
Process doesn't obtain service to progress.
#### Deadlock
Two or more processes are blocked, and neither can proceed.
## Differences between Concurrency and Parallelism
|Concurrency | Parallelism |
|------------|-------------|
|Concurrency is the task of running and managing the multiple computations at the same time. | While parallelism is the task ofrunning multiple computations simultaneously.|
|Concurrency is achieved through the interleaving operation of processes on the central processing unit(CPU) or in other words by the context switching. | While it is achieved by through multiple central processing units(CPUs).
|Concurrency can be done by using a single processing unit. | While this can't be done by using a single processing unit. it needs multiple processing units.
|Concurrency increases the amount of work finished at a time. | While it improves the throughput and computational speed of the system.
|Concurrency deals with a lot of things simultaneously. | While it does a lot of things simultaneously.
|Concurrency is the non-deterministic control flow approach. | While it is deterministic control flow approach.
---
**What is Synchronization?**
Synchronization is the process of coordinating the execution of multiple tasks to ensure that they work together correctly without interference. In simpler terms, it makes sure that when one part of a program is using certain resources, others cannot use them at the same time. This is important because it prevents issues like data corruption and ensures that your program runs smoothly.
**Why is Synchronization Important?**
* **Avoiding Conflicts**: When tasks are synchronized, they won’t interfere with each other. This helps avoid errors like two tasks trying to change the same piece of data at the same time.
* **Data Integrity**: Synchronization ensures that the information remains consistent. For example, if you are updating a bank account's balance, you want to make sure that no other task can change it until the update is complete.
* **Order of Execution**: Sometimes, certain tasks need to happen in a specific order. Synchronization helps manage the sequence in which tasks are executed to ensure the right order.
**How is Synchronization Achieved?**
There are several methods to achieve synchronization in programming, including:
* **Locks**: These prevent other tasks from accessing the same resource while one task is using it. Once the task is finished, it “unlocks” the resource for others to use.
* **Semaphores**: This is a type of signaling mechanism. A semaphore can allow a specific number of tasks to access a resource at the same time, which is useful for limiting the number of concurrent accesses.
* **Monitors**: Monitors are high-level constructs that control access to an object by allowing only one task to execute a block of code at a time.
---
## Multicore Processors
### What is a Multicore Processor?
A **multicore processor** is an integrated circuit with two or more processor cores attached for enhanced performance and reduced power consumption.
**Benefits:**
- More efficient simultaneous processing
- Parallel processing and multithreading
- Faster inter-core connection (cores in same socket)
- Better heat management
---
### How Multicore Processors Work
#### Evolution of Processor Performance
**1. Clock Speed**
- Accelerated from MHz to GHz
- **Limitation**: Power consumption and heat generation
- Approaching practical limits
**2. Hyper-threading**
- Single physical core functions as two logical cores
- Streamlines multiple simultaneous applications
- Limited real performance gains
**3. Multiple Cores**
- Modern processors: 12, 24, or more cores
- Combines fast clock speeds with multiple hyper-threaded cores
- Similar to multiprocessor motherboards
---
### Use Cases for Multicore Processors
#### 1. Virtualization
- Abstracts physical cores into virtual CPUs (vCPUs)
- Assigns vCPUs to virtual machines (VMs)
- Each VM runs its own OS and applications
#### 2. Databases
- Handles many simultaneous queries
- Requires high memory capacity (up to 1TB+)
- Distributes task threads across cores
#### 3. Analytics and HPC
- Machine learning and high-performance computing
- Breaks complex tasks into manageable pieces
- Distributes pieces to different processors
#### 4. Cloud Computing
- Supports extensive virtualization
- Scales VM instances on demand
- Handles highly transactional workloads
#### 5. Visualization
- Graphics rendering and data visualization
- Math and task-intensive operations
- Often uses GPUs with multiple GPU cores
---
### Homogeneous vs. Heterogeneous Multicore Processors
#### Homogeneous Processors
- **Examples**: Intel and AMD X86 processors
- All cores are identical
- General-purpose processing
#### Heterogeneous Processors
- Different cores for different purposes
- Found in embedded or ARM processors
- Mix microprocessor and microcontroller cores
**Goals of Heterogeneous Processors:**
| Goal | Description |
|------|-------------|
| **Optimized Performance** | Different cores for specific tasks (e.g., ARM Cortex-A + Cortex-M) |
| **Optimized Power** | Simpler cores reduce transistor count and power demands |
| **Optimized Security** | Job isolation provides better stability and security |
---
### Examples of Multicore Processors
**Intel 12th Generation:**
- **Core i9 12900**: 8 cores, 24 threads
- **Core i7 12700**: 8 cores, 20 threads
- **Core i5 12600K**: 6 cores, 16 threads
---
## 2. Operating Systems & Software
### What is an Operating System?
An **Operating System (OS)** is software that manages computer hardware and software resources. It acts as a bridge between users and the computer, ensuring smooth operation.
---
### Types of Operating Systems
#### 1. Multi-Programming Operating System
Multiple programs run in memory simultaneously. The CPU switches between programs for better resource utilization.

**Advantages:**
* Better CPU utilization (switches during I/O wait)
* Improved throughput (multiple concurrent jobs)
* Efficient resource use (CPU, memory, I/O shared effectively)
**Disadvantages:**
* Complex design (advanced memory management required)
* Security issues (more programs increase risk)
* High memory requirement
---
#### 2. Multi-tasking/Time-sharing Operating System
Each process runs in a round-robin manner with a fixed time slice (quantum). After the quantum ends, OS switches to the next task.

**Advantages:**
* Equal CPU access for each task
* Reduced software duplication
* Low CPU idle time
**Disadvantages:**
* Lower reliability (system failures affect all users)
* Security concerns (multiple users increase risks)
* Communication issues (data sharing conflicts)
---
#### 3. Multi-Processing Operating System
Uses more than one CPU for resource execution, improving system throughput.

**Advantages:**
* Faster processing (simultaneous CPU operation)
* High reliability (fault tolerance)
* Supports heavy computational tasks
**Disadvantages:**
* High cost (multiple processors needed)
* Complex design (requires advanced OS support)
* Inefficiency risk (poor task distribution)
---
#### 4. Distributed Operating System
Connects multiple independent computers through a shared network. Each system has its own CPU and memory but works as a single unit.

**Advantages:**
* Independent systems (one failure doesn't affect others)
* Easily scalable (add new systems easily)
* Lower processing delays
**Disadvantages:**
* Network dependency (main network failure stops communication)
* Lack of standardization
* High cost and complexity
**Key Issues:**
- Networking delays cause data inconsistency
- Distributed control functions (scheduling, resource allocation, deadlock detection)
- Security risks (messages travel over public networks)
---
#### 5. Network Operating System (NOS)
Runs on a server and manages data, users, security, applications, and network functions within a small private network.

**Note**: These are **tightly coupled systems** where components are highly interdependent.
**Advantages:**
* Centralized and stable servers
* Easy upgrades (new hardware/technologies)
* Remote access from different locations
**Disadvantages:**
* High server cost
* Server dependency
* Regular maintenance required
---
#### 6. Real-Time Operating System (RTOS)
Serves real-time systems with very small response times. Used where strict time requirements exist.
**Types:**
**Hard Real-Time OS:**
- Strict timing essential
- Any delay unacceptable
- **Examples**: Airbags, automatic parachutes, missile systems
- Avoids virtual memory for immediate response
**Soft Real-Time OS:**
- Timing important but minor delays acceptable
- Quick and predictable responses
- **Examples**: Multimedia, gaming, video streaming
---
#### 7. Mobile Operating Systems
Designed specifically for mobile devices (smartphones, tablets).
**Examples**: Android, iOS
**Functions:**
- Manage hardware and software resources
- Provide platform for applications
- Ensure seamless user experience
---
## 3. Networks & the Internet
### Network
In computing, a network refers to a digital telecommunications system that enables devices to exchange data using a shared medium (wired or wireless). The devices (also called nodes) include routers, switches, servers, desktops, laptops, smartphones, and more.
### Internet
The Internet is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices.
#### Local Area Network (LAN)
LAN is a group of network devices that allow communication between connected devices. The private ownership has control over the local area network rather than the public. LAN has a shorter propagation delay than MAN as well as WAN. It covers the smallest area such as College, School Hospital and so on.
**LAN is more useful in cases where:**
* All the devices are located nearby, for example in one room or at least they are in the same building.
* Real-time data transfer or file transfer and gaming require high bandwidth.
* The primary of network control and security are seen since LANs are easier to monitor and control.
* In some cases, the number of devices or users that need to be connected has to be limited and should not depend on other networks.
#### Wide Area Network (WAN)
WAN covers a larger area than LAN as well as MAN such as Country/Continent etc. WAN is expensive and should or might not be owned by one organization. PSTN or Satellite medium is used for wide area networks.
**WAN is more useful in cases where:**
* An equipment or office is located in more than one geographical area.
* It is necessary to link several LANs for the organization of your data storage or use of common applications.
* In multinational organizations, there is always need of communication between different regional offices in the business.
**Internet Protocol Suite**
The Internet protocol suite, commonly known as TCP/IP, is a framework for organizing the communication protocols used in the Internet and similar computer networks according to functional criteria. The foundational protocols in the suite are the Transmission Control Protocol (TCP), the User Datagram Protocol (UDP), and the Internet Protocol (IP).

**HyperText Transmisssion Protocol**
HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, where hypertext documents include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen in a web browser.
HTTP is a request–response protocol in the **client–server model**. A transaction starts with a client submitting a request to the server, the server attempts to satisfy the request and returns a response to the client that describes the disposition of the request and optionally contains a requested resource such as an HTML document or other content

**Transmission Control Protocol**
TCP is used when data must be error-free, complete, and in order. Examples: loading websites, downloading files, sending emails. TCP provides reliable, ordered, and error-checked delivery of a stream of octets (bytes) between applications running on hosts communicating via an IP network.
**User Datagram Protocol**
UDP is used when speed is more important than perfect accuracy. Examples: live streaming, online gaming.
**Internet Protocol**
The Internet Protocol (IP) is the network layer communications protocol in the Internet protocol suite for relaying datagrams across network boundaries. Its routing function enables internetworking, and essentially establishes the Internet.
IP has the task of delivering packets from the source host to the destination host solely based on the IP addresses in the packet headers. For this purpose, IP defines packet structures that encapsulate the data to be delivered. It also defines addressing methods that are used to label the datagram with source and destination information.
**IP fragmentation**
IP fragmentation is an Internet Protocol (IP) process that breaks packets into smaller pieces (fragments), so that the resulting pieces can pass through a link with a smaller maximum transmission unit (MTU) than the original packet size. The fragments are reassembled by the receiving host.

**What is DNS?**
The Domain Name System (DNS) is the phonebook of the Internet. Humans access information online through domain names, like nytimes.com or espn.com. Web browsers interact through Internet Protocol (IP) addresses. DNS translates domain names to IP addresses so browsers can load Internet resources.
Each device connected to the Internet has a unique IP address which other machines use to find the device. DNS servers eliminate the need for humans to memorize IP addresses such as 192.168.1.1 (in IPv4), or more complex newer alphanumeric IP addresses such as 2400:cb00:2048:1::c629:d7a2 (in IPv6).
**IP Addressing**
What is IP Addressing?
IP addressing refers to the system used to assign unique identifiers to devices on a network. Every device that connects to the internet or a local network requires an IP (Internet Protocol) address to communicate.
IP addresses are crucial because they help route data from one device to another, ensuring that packets of information reach the correct destination.
<!-- *[This section to be completed with: Networking basics: LAN/WAN, TCP/IP, HTTP, DNS, IP addressing, internet communication]* -->
---
## 4. Databases & Information Storage
#### What is a Database?
A database is an organized collection of structured data stored electronically in a computer system. It's managed by a Database Management System (DBMS), which provides an interface for users to interact with the data.
### Structure of a Database
```
Database
└── Tables (Relations)
└── Records (Rows/Tuples)
└── Fields (Columns/Attributes)
└── Data Values
```
**Tables (Relations)**
A table is a collection of related data organized in rows and columns.
**Records (Rows/Tuples)**
A record is a single entry in a table containing related information.
**Fields (Columns/Attributes)**
A field (or column) represents a specific attribute of the data.
**What is a Relational Database?**
A relational database organizes data into tables that can be related to each other through common fields (keys). Based on relational model by E.F. Codd (1970).
**Primary Key**
A primary key is a field (or combination of fields) that uniquely identifies each record in a table.
**Foreign Key**
A foreign key is a field that creates a relationship between two tables by referencing the primary key of another table.
#### Database Relationships
Types of Relationships:
1. **One-to-One (1:1)**
One record in Table A relates to one record in Table B
2. One-to-Many (1:M)
One record in Table A relates to many records in Table B
3. Many-to-Many (M:N)
Many records in Table A relate to many records in Table B
**NoSQL: Non-relational Databases**
NoSQL is a broad term that refers to databases that don’t follow the traditional relational model. It emerged in response to the new demands of large-scale web applications, big data, and dynamic data structures.
**Types of NoSQL Databases**
1. Document Stores
Store data in structures similar to JSON or BSON documents. Ideal for web or mobile apps where data is hierarchical and changes frequently.
Example: MongoDB is commonly used for blogs, CMS platforms, and product catalogs.

2. Key-Value Stores
Data is stored as key-value pairs. Their simplicity makes them extremely fast and highly scalable.
Example: Redis or DynamoDB are used for managing user sessions, caching, or shopping carts.

3. Columnar Databases
Store data by columns instead of rows, optimizing analytical queries and large-scale aggregation.
Example: Cassandra or HBase are common in log analysis, sensor data metrics, and recommendation engines.

4. Graph Databases
Specialized in representing complex relationships between entities. Commonly used in social networks, recommendation engines, or fraud detection.
Example: Neo4j allows modeling users, interactions, relationships, and preferences in social networks or e-commerce.
<!-- *[This section to be completed with: Structure of databases, tables, records, relational DB concepts and data retrieval]*
-->
---
## 5. Emerging Fields in Computer Science
**What is artificial intelligence?**
Artificial intelligence (AI) is the theory and development of computer systems capable of performing tasks that historically required human intelligence, such as recognizing speech, making decisions, and identifying patterns. AI is an umbrella term that encompasses a wide variety of technologies, including machine learning, deep learning, and natural language processing (NLP).
**Machine learning definition**
Machine learning is a subfield of artificial intelligence (AI) that uses algorithms trained on data sets to create self-learning models capable of predicting outcomes and classifying information without human intervention. Machine learning is used today for a wide range of commercial purposes, including suggesting products to consumers based on their past purchases, predicting stock market fluctuations, and translating text from one language to another.
**Cybersecurity**
Cybersecurity is the practice of protecting people, systems and data from cyberattacks by using various technologies, processes and policies.
**Cloud**
The "cloud" or more specifically, "cloud computing" refers to the process of accessing resources, software and databases over the internet and outside the confines of local hardware restrictions. This technology gives organizations flexibility when scaling their operations by offloading a portion, or majority, of their infrastructure management to third-party hosting providers.
The most common and widely adopted cloud computing services are:
1. Infrastructure as a service (IaaS) offers a hybrid approach, which allows organizations to manage some of their data and applications on-premises. At the same time, it relies on cloud providers to manage servers, hardware, networking, virtualization and storage needs.
2. Platform as a service (PaaS) gives organizations the ability to streamline their application development and delivery. It does so by providing a custom application framework that automatically manages operating systems, software updates, storage and supporting infrastructure in the cloud.
3. Software as a service (SaaS) provides cloud-based software hosted online and typically available on a subscription basis. Third-party providers manage all potential technical issues, such as data, middleware, servers and storage. This setup helps minimize IT resource expenditures and streamline maintenance and support functions.
**Internet of Things (IoT)**
The Internet of Things (IoT) refers to a network of physical devices, vehicles, appliances, and other physical objects that are embedded with sensors, software, and network connectivity, allowing them to collect and share data. IoT devices—also known as “smart objects”—can range from simple “smart home” devices like smart thermostats, to wearables like smartwatches and RFID-enabled clothing, to complex industrial machinery and transportation systems. Technologists are even envisioning entire “smart cities” predicated on IoT technologies.
**Computer ethics**
Computer ethics is the set of commonly agreed principles that govern the use of computers. Like ethics more generally, computer ethics is essentially a set of philosophical guidelines or moral standards that aim to influence behaviour and prevent harm.
**The Ten Commandments of Computer Ethics**
Another popular example of computer ethics in practice are the Ten Commandments of Computer Ethics, created in 1992 by the Computer Ethics Institute.
The commandments include:
**1. Thou shalt not use a computer to harm other people.
2. Thou shalt not interfere with other people’s computer work.
3. Thou shalt not snoop around in other people’s computer files.
4. Thou shalt not use a computer to steal.
5. Thou shalt not use a computer to bear false witness.
6. Thou shalt not copy or use proprietary software for which you have not paid (without permission).
7. Thou shalt not use other people’s computer resources without authorisation or proper compensation.
8. Thou shalt not appropriate other people’s intellectual output.
9. Thou shalt think about the social consequences of the program you are writing or the system you are designing.
10. Thou shalt always use a computer in ways that ensure consideration and respect for other humans.**
**BlockChain**
Blockchain is a shared, immutable digital ledger, enabling the recording of transactions and the tracking of assets within a business network and providing a single source of truth.
Blockchain operates as a decentralized distributed database, with data stored across multiple computers, making it resistant to tampering. Transactions are validated through a consensus mechanism, ensuring agreement across the network. In blockchain technology, each transaction is grouped into blocks, which are then linked together, forming a secure and transparent chain. This structure guarantees data integrity and provides a tamper-proof record, making blockchain ideal for applications like cryptocurrencies and supply chain management.
The key benefit of blockchain lies in its ability to provide security, transparency and trust without relying on traditional intermediaries, such as banks or other third parties. Its design reduces the risk of fraud and errors, making it especially valuable in industries where secure transactions are critical, including finance and healthcare. In addition, blockchain helps businesses improve efficiency and reduce costs by streamlining processes and enhancing accountability.
<!-- *[This section to be completed with: AI, Machine Learning, Cybersecurity, Cloud, IoT, Ethics in Computing]*
-->
<!-- ---
## Summary
This document covers fundamental concepts in computer science including:
- **Parallelism & Concurrency**: Different types of parallel processing, concurrent execution, and multicore processors
- **Operating Systems**: Various OS types and their characteristics, advantages, and disadvantages
- **Networks & Internet**: *[To be completed]*
- **Databases**: *[To be completed]*
- **Emerging Fields**: *[To be completed]*
--- -->
*Last updated: January 2026*