# Glossary

Within these castle walls be forged Mavens of Computer Science ...
— Merlin, The Coder

## A

Abstract Data Type
or ADT, represents a model for a data structure; the model specifies behavior for the data type, supported operations, and how those operations are evaluated

Ahead of Time Compilation
or AOT, the process of compiling a programming language into executable machine code before any code can be run

Algorithm
a set of instructions to perform a computation; there are usually better and worse algorithms to solve the same problem, so when developing a computer program, choosing the optimal algorithm helps with program efficiency and security

API
or Application Programming Interface, connects computers or software to each other; a common example is logging in to a third-party site via Google

Array
a collection of items, more commonly referred to as elements, that can be identified and accessed by an index

ASCII
or American Standard Code for Information Interchange, these codes represent characters and text in computers and other electronic communication devices

Assertion
a feature in the Swift programming language that asserts that a certain condition to be true, meant to perform a sanity check where it is assumed that the Boolean statement will evaluate to true

## B

Back-End Development
or server-side development focuses on the parts of an app or website that the user does not directly see or interact with; this usually consists of maintaining and updating a server, an application, and database; see Front-End Development

Base
or Number Base is the number of unique digits, including zero, used to represent numbers in a positional number system

Bash
or Bourne-Again SHell, designed by Brian Fox for the GNU operating system, is the default shell for Linux and Mac operating systems

Binary System
a number system that uses two digits (0 and 1) to represent a number; this is the system that computers use to store data

Bit
or "binary digit," the most basic unit of information or data in computing

Boolean
a data type that stores binary variables (true or false; 1 or 0; on or off)

Boolean Algebra
the branch of algebra in which the values of the variables are true or false, usually represented as 0 or 1. It formalizes logical relations.

Boolean Function
a function that performs a logical operation on one or more binary inputs and produces one or more binary outputs

Bug
an error or flaw in a computer program

Bytecode
a set of instructions using numeric codes and constants; a sort of midpoint between human-readable source code and machine code

Bytecode Language
a language that involves using a compiler to translate source code into bytecode that can then be understood by using a Virtual Machine

## C

C
a low-level, general-purpose programming language, initially developed by Dennis Ritchie in 1972, many newer languages are based on C

Camel Case
a common naming convention in computer science in which words are not separated by white space or punctuation, but are indicated by a single uppercase letter (i.e., PayPal, CamelCase, someCompany), the set of words can begin with either upper or lowercase.

Command-line Interface
or CLI allows the user to type commands for the computer to execute; a common command-line interface is bash

Compiled Language
a language that uses a compiler to translate source code into native machine code

Conditional
or conditional statement is a line or lines of code that tell the program to execute actions based on whether a condition is met; common conditional statements include `if`, `else`, and `else if`

Console
is a physical terminal [1]

CPU
or Central Processing Unit is the "brain" of the computer, and executes instructions from computer programs, the operating system, and other computer parts

CSS
Cascading Style Sheets is a programming language that is commonly used with HTML and provides styling for a web page

## D

Deprecated
a piece of software or technology that is no longer recommended for use because it is obsolete or soon will be

Dictionary
an iterable data structure that stores information in key-value pairs. The keys and values can be any data type, but all keys must be the same data type, and all values must be the same data type. Keys are unique and can be used to identify the values.

Directory
a logical grouping of related files (and potentially other directories)

Double
a data type that represents a 64-bit floating point number, or decimal

DRY Principle
a principle of development (don't repeat yourself) that advises against repeating code, such as having three functions whose entire first half are composed of the same code

Dynamic Semantics
a way in which a programming language understands the syntax that involves operations, such as type checking being done at runtime as opposed to compile time

## E

emacs
a powerful text editor and environment available on various operating systems, including Linux, Windows, and macOS

End-User
a person who uses a product or software

Error Handling
the process of finding and fixing errors or bugs in code

## F

File
either a destination or source for a stream of data, most often persisted on a storage device

For-Loop
a type of logic flow statement that specifies iteration and allows code to be repeated; in Swift, also called a for-in loop

Float
a data type that represents 32-bit floating point numbers or decimals

Front-End Development
or client-side development, focuses on HTML, CSS, and Javascript to maintain, update, and improve the parts of a website that users directly see and interact with; see Back-End Development

Full-Stack Development
refers to both front-end development and back-end development

## G

Generics
a feature of static languages that involves using a generic type to allow reuse of code in methods and classes

Git
a popular distributed version control system used to track changes in files, usually used in software development teams, first developed by Linus Torvalds in 2005

Git Branch
in Git, allows coders to modify, fix, and add to a copy of the existing code base, independently, without interfering with other collaborators' code or work; this allows easier merging later on

Git Commit
in Git, allows you to combine multiple branches of work in a repository into one branch

Git Merge
in Git, allows you to combine independent work branches into one branch; sometimes results in merge conflicts that need to be resolved before the changes can be saved

Git Repository
or Git repo is the `.git/` folder in a project that tracks all the changes made to the project files

GitHub
a popular service used for source control and collaboration

GNU
aka "GNU is not Unix" or GNU Project is a Unix-like operating system, or collection of software programs, launched by Richard Stallman in the 1980s

GNU General Public License
or GNU GPL or GPL is a series of licenses that allow users to freely copy, modify, study, and share software, originally written by Richard Stallman

Graphical User Interface
or GUI, allows a user to execute commands by interacting with graphical items on the display using a mouse; examples are Microsoft Windows or Apple's MacOS

## H

is a number system that uses 16 digits to represent a number. The digits are 0-10 and then A-F, where A = 11, B = 12, … , F = 15.

HTML
HyperText Markup Language, is one of the essential building blocks for web pages. It defines the general structure of a web page, as well as its content. Every website on the Internet uses HTML in one form or another.

a word or image in an electronic document that, when clicked, navigates to another web page, another place on a page, or triggers an action. Short form of hypertext link.

## I

Interpreted Language
a programming language whose execution comes from a line-by-line translation by an interpreter, considered highly portable

Interpreter
a program meant for understanding its respective interpreted language and telling the native machine how to execute its source code line by line

## J

JavaScript
a high-level programming language that can be used to fetch data via an API, modify HTML and CSS, and is the core of modern web pages

Java
a high-level, statically typed, object-oriented programming language commonly used in Android development and backend operations

JSON
or Javascript Object Notation, is a text-based, language-independent, data-interchange format between a client and a server

Just In Time Compilation
or JIT, a method of compilation where bytecode is compiled into machine code during runtime just before it is needed

## K

Kernel
the core of any operating system. The kernel mediates between the hardware of the computer, and the processes or software that the computer runs. The kernel has a number of important functions, including process order and memory management. The operating system includes the kernel and other low-level applications that allow a computer to run.

## L

LaTeX
a markup language for typesetting and formatting documents, typically used in STEM and technical documentation and publications; LaTeX is a superset of TeX

LeetCode
a platform used to prepare for technical interviews in the software industry

Logic Gate
an idealized or physical device implementing a Boolean function, typically represented using graphical symbols

Linux
refers to the Linux kernel developed by Linux Torvalds in the 1990s; also the family of open-source operating systems developed around the Linux kernel; these operating systems run most major websites, Android; common Linux distributions include Debian and Ubuntu

## M

Markdown
a markup language used to add formatting to text documents, common use-cases include README files, and GitHub's version of Markdown

Markup Language
a programming language that uses syntax to annotate a document for formatting

Machine Code
also referred to as binary, machine code is a series of 1s and 0s (ones and zeros), called bits, that tell a machine how to operate; it is practically impossible to understand for humans

## N

Newsgroup
a discussion group around a certain topic, usually within the Usenet system

## O

Open-Source Software
software that is made available under a license so that end users can freely edit, modify, copy, sell, and share that software

Operating System
or OS is a critical program in any computer that allocates resources, such as memory, processing time, and storage; the OS communicates between the hardware and software of a computer.

## P

PHP
the most commonly used server-side language

Portability
a programming language's ability to be shipped to separate platforms and systems; an application that can work on only a limited number of systems is considered unportable, but one that can work on many platforms is considered highly portable

Positional Notation
a method of encoding numbers that uses the same symbol for different orders of magnitude depending on its position; the value of a position is dependent on the location within the number (ex: 123 = 1*102 + 2*101 + 3*100)

Precondition
effectively the same as an Assertion where the key difference is that a precondition carries on to a production build and indicates a necessary condition where if the Boolean expression evaluates to false, the rest of the process cannot reasonably continue

Process
a program that is being executed by the operating system

Prompt
a symbol that appears on a display indicating that the computer is ready to receive input

Python
a free, high-level, open-source programming language that can be used in both front-end and back-end development

## S

SaaS
or software as a service, is a cloud-based software licensing and delivery model where the user accesses the software via the Internet

Semantics
the logic a language implements to execute the syntax of a programming language

Shell
a user interface that provides access to an operating system's services

Source Code
the code that a human types using the programming language's respective syntax; this code is practically impossible for a machine to read

Static Semantics
a way in which a language understands syntax by performing operations such as type checking during compile time instead of at run-time

Stack Exchange
a network of question & answer (Q&A) platforms, including Stack Overflow

Stack Overflow
a Q&A platform for programmers of all levels; a part of Stack Exchange

String
a string of characters, a common data type in computer programming

Strongly
a language's typing policies that prevent erroneous use of variables, objects, or other programming constructs

Superset
in computer science, a programming language that contains all the features of a programming language, and extends or enhances it

Syntactic Sugar
syntax in a language that is not strictly required but, in some manner, generally through increased clarity or readability, makes the syntax easier to understand for humans

Syntax
the convention of a programming language, similar to the words someone says when speaking English

Swift
a general-purpose, open-source programming language developed by Apple, a replacement for C-based languages

## T

Terminal
a program that runs a shell and allows us to enter commands; a terminal is a command-line interface, but not all CLIs are terminals[2]

Terminal Emulator
a software application that mimics a computer terminal

TeX
a typesetting system and programming language, still commonly used to format STEM documentation and publications; related to (but not to be confused with) LaTeX

Truth Table
a means to specify the required output or outputs for the specified input or inputs, given certain Boolean algebraic expressions

Tuple
in mathematics, a finite ordered list of elements. In Python, a tuple is an immutable data structure that stores an ordered sequence of values.

Typescript
a superset of JavaScript that adds optional type safety using strongly typed polices and static semantics

Type Inference
a feature in which a programming language can assign a type to a variable according to how it is being used

Type Safety
preventing misuse of typed data by using types; a programming language that prevents erroneous use of typed data is considered type safe

Typing
a practice of assigning values of data into categories according to how it is being used; type examples include integer and floating point

## U

UI
or user interface, anything that an end-user uses to interact with or experience a company's or organization's digital services and products; UI is related to, but not to be confused with, UX.

Unix
a family of operating systems developed in the 1960s and 1970s at AT&T's Bell Labs; the basis for Linux and GNU operating systems

UX
or user experience, the experience an end-user has interacting with a company or organization, including its products and platform; UX is related to, but not to be confused with, UI.

## V

Version Control
or Version Control Systems (VCS) are software that manage, record, and track changes on a file or a set of files over time, allowing multiple stakeholders to collaborate on the same project at the same time, as efficiently as possible; a popular VCS is Git

Virtual Machine
a program similar to an interpreter meant for understanding and executing bytecode languages, the most famous example being Java's JVM

## W

While Loop
a logic flow statement that allows code to be repeated based on a Boolean statement

Weakly Typed
Typing policies within a programming language that emphasize flexibility within typing as opposed to type safety

## X

XML
or extensible markup langauge, a markup language similar to HTML and designed much like JSON to store and transport data. XML has been used for years to transfer data—seen in applications like SOAP APIs—and is capable of enforcing data structure standards and transmitting data.

## Y

YAML
a lightweight, human-readable data-representation language that is a superset of JSON. It is possible to parse JSON with a YAML parser.