Comprehensive Notes on Computing Concepts

Creative Development

Syntax Error

A syntax error is a mistake in typed code that violates the rules of the programming language. Code containing syntax errors will typically not run. This is analogous to grammatical errors in human languages, which prevent clear communication.

Logic Error

A logic error is a mistake in an algorithm or program that causes it to behave unexpectedly or return the incorrect value. Unlike syntax errors, logic errors do not prevent the code from running, but they lead to incorrect results. An example would be using the wrong formula in a calculation causing unexpected results.

Run-Time Error

A run-time error is a mistake in a program that happens only when the program is actually run. This might include attempting to access memory that doesn't exist or dividing by zero.

Overflow Error

An overflow error results when the number of bits used to represent a number is not enough, leading to the odometer "rolling over".

Data

Bit

A bit is a binary digit, either 0 or 1. It's the fundamental unit of information in computing.

Byte

A byte is a sequence of 8 bits. Bytes are commonly used to represent characters, numbers, and other data.

Roundoff Error

Roundoff error results when the number of bits is not enough to represent a number with full precision. Example, such as representing π\pi as 3.14 when it is a non-terminating decimal.

Analog Data

Analog data consists of values that change smoothly over time, rather than in discrete intervals. For example, the pitch and volume of a live concert are continuous and analog.

Lossless Compression

Lossless compression compresses data in a way that preserves all data and allows full recovery of the original. Examples include ZIP files and PNG images.

Lossy Compression

Lossy compression compresses data by discarding some data, making it impossible to recover the original perfectly. Examples include JPEG images and MP3 audio.

Metadata

Metadata is data about data, providing descriptive information about a file or a row in a database, such as the author, creation date, or file size.

Algorithms and Programming

Sequencing

Sequencing is the sequential execution of steps in an algorithm or code in a program, similar to steps in a recipe. Each step is performed in order.

Selection

Selection uses a Boolean condition to determine which of two paths are taken in an algorithm or program. This is commonly implemented using "if, else" statements.

Iteration

Iteration is the repetition of steps in an algorithm or program for a certain amount of times or until a certain condition is met. This is implemented using loops.

Linear Search

Linear search is an algorithm that iterates through each item in a list until it finds the target value. Its efficiency is O(n)O(n), where nn is the number of items in the list.

Binary Search

Binary search is an algorithm that searches a sorted list for a value by repeatedly splitting the list in half. Its efficiency is O(logn)O(log n), where nn is the number of items in the list.

Reasonable Time

Reasonable time refers to a run time for an algorithm that doesn't increase faster than a polynomial function of the input size such as 10n10n or n2n^2. Algorithms that run in polynomial time are generally considered efficient.

Unreasonable Time

Unreasonable time refers to a run time that increases superpolynomially, such as 2n2^n or n!n!. Algorithms with superpolynomial run times are generally considered inefficient.

Heuristic

A heuristic is a technique that helps an algorithm find a good solution in a hard problem. It's like always walking toward the north star when you are stuck in a forest to guide you in the right direction.

Undecidable

An undecidable problem is so logically difficult that we cannot ever create an algorithm that would be able to answer "yes" or "no" for all inputs, like the halting problem.

Library

A library is a collection of procedures that are useful in creating programs to complete certain tasks.

API

API stands for Application Programming Interface. It's a library of procedures and a description of how to call each procedure.

Modularity

Modularity is the separation of a program into independent modules that are each responsible for one aspect of the program's functionality. Improves maintainability and readability.

Traversal

Traversal is the iteration over the items in a list. A full traversal iterates over every item, while a partial traversal iterates over a subset of the items.

Computer Systems and Networks

Computing Device

A computing device is a physical device that can run a program, such as a computer, smart phone, or smart sensor.

Computer Network

A computer network is a group of interconnected computing devices capable of sending or receiving data.

Bandwidth

Bandwidth is the maximum amount of data that can be sent in a fixed period of time over a network connection, typically measured in bits per second.

Protocol

A protocol is an agreed upon set of rules that specify the behavior of a system.

Scalability

Scalability is the ability of a system to adjust in scale to meet new demands.

IP (Internet Protocol)

IP is the protocol that determines how to address nodes on the network (with IP addresses) and how to route data from one node to a destination node (using routers).

TCP (Transmission Control Protocol)

TCP is a data transport protocol that includes mechanisms for reliably transmitting packets to a destination.

UDP (User Datagram Protocol)

UDP is a lightweight data transport protocol with minimal error checking.

World Wide Web

The World Wide Web is a system of linked pages, media, and files, browsable over HTTP.

HTTP (Hypertext Transfer Protocol)

HTTP is the protocol that powers the Web, used to request webpages from servers and submit form data to servers.

Parallel Computing

Parallel computing is a computational model which splits a program into multiple tasks, some of which can be executed simultaneously.

Speedup

Speedup is the improvement in the amount of time a parallelized program takes to solve a problem, computed as the amount of time to complete the task sequentially divided by the amount of time to complete the task when run in parallel.

Distributed Computing

Distributed computing is a computational model which uses multiple devices to run different parts of a program.

Impact of Computing

Digital Divide

The digital divide is the idea that some communities or populations have less access to computing than others, typically due to limitations of Internet speed or computer hardware access.

Crowdsourcing

Crowdsourcing is a model in which many online users combine efforts to help fund projects, generate ideas, or create goods or services (like Wikipedia).

Citizen Science

Citizen science is crowdsourcing for science! It's the participation of volunteers from the public in a scientific research project (like collecting rain samples or counting butterflies).

Creative Commons

Creative Commons is an alternative to copyright that allows people to declare how they want their artistic creations to be shared, remixed, used in noncommercial contexts, and how the policy should propagate with remixed versions.

Open Access

Open access is a policy that allows people to have access to documents (like research papers) for reading or data (like government datasets) for analysis.

PII (Personally Identifiable Information)

PII is information about an individual that can be used to uniquely identify them (directly or indirectly).

Multifactor Authentication (MFA)

MFA is a method of user authentication which requires the user to present multiple pieces of evidence in multiple categories (such as knowledge and possession).

Encryption

Encryption is the process of scrambling data to prevent unauthorized access.

Symmetric Encryption

Symmetric encryption is a technique for encrypting data where the same key is used to both encrypt and decrypt data.

Public Key Encryption

Public key encryption is an asymmetric encryption technique that uses different keys for encrypting versus decrypting data.

Cookie

A cookie is a small amount of text that tracks information about a user visiting a website.

Virus

A virus is a type of computer malware that can make copies of itself.

Phishing

Phishing is an attack where a user is tricked into revealing private information, often via a deceptive email.

Rogue Access Point

A rogue access point is a wireless access point that provides an attacker with unauthorized access to the traffic going over the network.