Software Flashcards
In this approach, a number’s sign is represented with a sign bit: setting that bit (often the most significant bit) to 0 for a positive number or positive zero, and setting it to 1 for a negative number or negative zero. The remaining bits in the number indicate the magnitude (or absolute value). For example, in an eight-bit byte, only seven bits represent the magnitude, which can can range from 0000000 (0) to 1111111 (127). Thus numbers ranging from −127 to +127 can be represented once the sign bit (the eighth bit) is added.
“Sign-magnitude” or “Sign and magnitude” representation
In computer architecture, ___ integers, memory addresses, or other data units are those that are ___ (8 octets) wide. Also, ___ CPU and ALU architectures are those that are based on registers, address buses, or data buses of that size. ___ microcomputers are computers in which ___ microprocessors are the norm. From the software perspective, ___ computing means the use of code with ____ virtual memory addresses.
64-bit
A computer program that transforms computer code written in one programming language (the source language) into another programming language (the target language).
A compiler
In computer science, a ___ is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. The implementation of ___ and processes differs between operating systems, but in most cases a ___ is a component of a process. Multiple ___ can exist within one process, executing concurrently and sharing resources such as memory, while different processes do not share these resources. In particular, the ___ of a process share its executable code and the values of its dynamically allocated variables and non-___-local global variables at any given time.
A thread of execution
A set of properties of database transactions intended to guarantee validity even in the event of errors, power failures, etc. In the context of databases, a sequence of database operations that satisfies these properties (and these can be perceived as a single logical operation on the data) is called a transaction. For example, a transfer of funds from one bank account to another, even involving multiple changes such as debiting one account and crediting another, is a single transaction.
ACID (Atomicity, Consistency, Isolation, Durability)
Is the act of compiling a higher-level programming language such as C or C++, or an intermediate representation such as Java bytecode or .NET Framework Common Intermediate Language (CIL) code, into a native (system-dependent) machine code so that the resulting binary file can execute natively.
___ produces machine optimized code, just like a standard native compiler. The difference is that ___ transforms the bytecode of an extant virtual machine (VM) into machine code.
Ahead-of-time compilation (AOT compilation)
OSI Host layer, 7th layer
High-level APIs, including resource sharing, remote file access.
Closest to the end user, which means both the OSI ___ layer and the user interact directly with the software ___.
This layer interacts with software ___ that implement a communicating component.
Application layer
___, is a character encoding standard for electronic communication. ___ codes represent text in computers, telecommunications equipment, and other devices. Most modern character-encoding schemes are based on ___, although they support many additional characters.
ASCII (/ˈæskiː/ ASS-kee), abbreviated from American Standard Code for Information Interchange
Any low-level programming language in which there is a very strong correspondence between the instructions in the language and the architecture’s machine code instructions. ___ language may also be called symbolic machine code.
___ code is converted into executable machine code by a utility program. The language usually has one statement per machine instruction (1:1), but comments and statements that are ___ directives, macros, and symbolic labels of program and memory locations are often also supported.
Each ___ language is specific to a particular computer architecture and sometimes to an operating system. However, some ___ languages do not provide specific syntax for operating system calls, and most ___ languages can be used universally with any operating system, as the language provides access to all the real capabilities of the processor, upon which all system call mechanisms ultimately rest. In contrast to ___ languages, most high-level programming languages are generally portable across multiple architectures but require interpreting or compiling, a much more complicated task.
Assembly language (or assembler language), often abbreviated asm
Transactions are often composed of multiple statements. This guarantees that each transaction is treated as a single “unit”, which either succeeds completely, or fails completely: if any of the statements constituting a transaction fails to complete, the entire transaction fails and the database is left unchanged. This system must guarantee ___ in each and every situation, including power failures, errors and crashes.
Atomicity (database systems)
___ is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity. It is a member of a family of notations invented by Paul Bachmann, Edmund Landau, and others, collectively called Bachmann-Landau notation or asymptotic notation.
In computer science, ___ is used to classify algorithms according to how their running time or space requirements grow as the input size grows.
___ characterizes functions according to their growth rates: different functions with the same growth rate may be represented using the same ___.
The letter ___ is used because the growth rate of a function is also referred to as the order of the function. A description of a function in terms of ___ usually only provides an upper bound on the growth rate of the function.
Big O notation
In mathematics and digital electronics, a ___ is a number expressed in the base-2 numeral system or ___ numeral system, which uses only two symbols: typically “0” (zero) and “1” (one).
The base-2 numeral system is a positional notation with a radix of 2. Each digit is referred to as a bit. Because of its straightforward implementation in digital electronic circuitry using logic gates, the ___ system is used by almost all modern computers and computer-based devices.
Binary number
In information security and programming, a ___, is an anomaly where a program, while writing data to a buffer, overruns the buffer’s boundary and overwrites adjacent memory locations.
Buffers are areas of memory set aside to hold data, often while moving it from one section of a program to another, or between programs. ___ can often be triggered by malformed inputs; if one assumes all inputs will be smaller than a certain size and the buffer is created to be that size, then an anomalous transaction that produces more data could cause it to write past the end of the buffer. If this overwrites adjacent data or executable code, this may result in erratic program behavior, including memory access errors, incorrect results, and crashes.
Buffer overflow, or buffer overrun
A unit of digital information that most commonly consists of eight bits, representing a binary number.
Historically, this was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable unit of memory in many computer architectures.
Byte or octet
A ___ is a small-sized datum derived from a block of digital data for the purpose of detecting errors that may have been introduced during its transmission or storage. It is usually applied to an installation file after it is received from the download server. By themselves, ___ are often used to verify data integrity but are not relied upon to verify data authenticity.
The actual procedure which yields the ___ from a data input is called a ___ function or ___ algorithm. Depending on its design goals, a good ___ algorithm will usually output a significantly different value, even for small changes made to the input. This is especially true of cryptographic hash functions, which may be used to detect many data corruption errors and verify overall data integrity; if the computed ___ for the current data input matches the stored value of a previously computed ___, there is a very high probability the data has not been accidentally altered or corrupted.
Checksum
A ___ on Unix operating systems is an operation that changes the apparent root directory for the current running process and its children. A program that is run in such a modified environment cannot name (and therefore normally cannot access) files outside the designated directory tree. The term ___ may refer to the ___ system call or the ___ wrapper program. The modified environment is called a ___ jail.
chroot
In cryptography, a ___ is an algorithm for performing encryption or decryption—a series of well-defined steps that can be followed as a procedure.
Cipher (or cypher), less common term is encipherment
An interface where the user types a ___ (which is expressed as a sequence of characters — typically a ___ name followed by some parameters) and presses the Return key to execute that ___.
Command line
___ focuses on classifying computational problems according to their inherent difficulty, and relating these classes to each other. A computational problem is a task solved by a computer. A computation problem is solvable by mechanical application of mathematical steps, such as an algorithm.
A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying their computational complexity, i.e., the amount of resources needed to solve them, such as time and storage. Other measures of complexity are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of ___ is to determine the practical limits on what computers can and cannot do. The P versus NP problem, one of the seven Millennium Prize Problems, is dedicated to the field of ___.
Computational complexity theory
This ensures that a transaction can only bring the database from one valid state to another, maintaining database invariants: any data written to the database must be valid according to all defined rules, including constraints, cascades, triggers, and any combination thereof. This prevents database corruption by an illegal transaction, but does not guarantee that a transaction is correct.
Consistency (database systems)
Is generally a terminal in the physical sense that is by some definition the primary terminal directly connected to a machine. This appears to the operating system as a (kernel-implemented) terminals. On some systems, such as Linux and FreeBSD, this appears as several terminals (ttys) (special key combinations switch between these terminals); just to confuse matters, the name given to each particular terminal can be “___”, “virtual ___”, “virtual terminal”, and other variations.
Console
In multitasking computer operating systems, a ___ is a computer program that runs as a background process, rather than being under the direct control of an interactive user. Traditionally, the process names of a ___ end with the letter d, for clarification that the process is in fact a ___, and for differentiation between a ___ and a normal computer program.
Daemon (/ˈdiːmən/ or /ˈdeɪmən/)
In computer science, a ___ is a region of a physical memory storage used to temporarily store data while it is being moved from one place to another. Typically, the data is stored in a ___ as it is retrieved from an input device (such as a microphone) or just before it is sent to an output device (such as speakers). However, a ___ may be used when moving data between processes within a computer.
Data buffer (or just buffer)
OSI Media layer, 2nd layer
Reliable transmission of ___ frames between two nodes connected by a physical layer
It defines the protocol to establish and terminate a connection between two physically connected devices.
It also defines the protocol for flow control between them.
Data link layer
A programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow
This style attempt to minimize or eliminate side effects by describing what the program must accomplish in terms of the problem domain
Declarative programming
In Unix-like operating systems, a ___ is an interface to a device driver that appears in a file system as if it were an ordinary file. There are also ___ in MS-DOS, OS/2, and Microsoft Windows. These ___ allow an application program to interact with a device by using its device driver via standard input/output system calls. Using standard system calls simplifies many programming tasks, and leads to consistent user-space I/O mechanisms regardless of device features and functions.
___ usually provide simple interfaces to standard devices (such as printers and serial ports), but can also be used to access specific unique resources on those devices, such as disk partitions. Additionally, ___ are useful for accessing system resources that have no connection with any actual device such as data sinks and random number generators.
There are two general kinds of ___ in Unix-like operating systems, known as character ___ and block ___. The difference between them lies in how much data is read and written by the operating system and hardware. These together can be called ___ in contrast to named pipes, which are not connected to a device but are not ordinary files either.
Device file or special file
With normal typing, suitability is determined by an object’s type. With this, an object’s suitability is determined by the presence of certain methods and properties, rather than the type of the object itself.
Duck typing (“If it walks like a duck and it quacks like a duck, then it must be a duck”—duck test)
This guarantees that once a transaction has been committed, it will remain committed even in the case of a system failure (e.g., power outage or crash). This usually means that completed transactions (or their effects) are recorded in non-volatile memory.
Durability (database systems)
In computing, a ___ is the part of an operating system that loads and links the shared libraries needed by an executable when it is executed (at “run time”), by copying the content of libraries from persistent storage to RAM, filling jump tables and relocating pointers. The specific operating system and executable format determine how the ___ functions and how it is implemented.
Linking is often referred to as a process that is performed when the executable is compiled, while a ___ is a special part of an operating system that loads external shared libraries into a running process and then binds those shared libraries dynamically to the running process.
Dynamic linker (dynamic linking or late linking)
The process of verifying the type safety of a program at runtime.
Dynamic type checking
In object-oriented programming (OOP), a ___ is an object for creating other objects - formally a ___ is a function or method that returns objects of a varying prototype or class from some method call, which is assumed to be “new”. More broadly, a subroutine that returns a “new” object may be referred to as a “___”, as in ___ method or ___ function. This is a basic concept in OOP, and forms the basis for a number of related software design patterns.
Factory
In computer science, a ___ is a routine that can be used to control the iteration behaviour of a loop. All ___ are also iterators. A ___ is very similar to a function that returns an array, in that a ___ has parameters, can be called, and generates a sequence of values. However, instead of building an array containing all the values and returning them all at once, a ___ yields the values one at a time, which requires less memory and allows the caller to get started processing the first few values immediately. In short, a ___ looks like a function but behaves like an iterator.
___ can be implemented in terms of more expressive control flow constructs, such as coroutines or first-class continuations. ___ are a special case of (and weaker than) coroutines, in that they always yield control back to the caller (when passing a value back), rather than specifying a coroutine to jump to.
Generator, also known as semicoroutines
Any function that can be used to map data of arbitrary size to fixed-size values. The values returned by a ___ function are called ___ values, ___ codes, digests, or simply ___. ___ are often used in combination with a ___ table, a common data structure used in computer software for rapid data lookup. ___ accelerate table or database lookup by detecting duplicated records in a large file. One such application is finding similar stretches in DNA sequences. They are also useful in cryptography. A cryptographic ___ allows one to easily verify whether some input data map onto a given ___ value, but if the input data is unknown it is deliberately difficult to reconstruct it (or any equivalent alternatives) by knowing the stored ___ value. This is used for assuring integrity of transmitted data, and is the building block for HMACs, which provide message authentication.
Hash function
In computing, a ___ is a data structure that implements an associative array abstract data type, a structure that can map keys to values. A ___ uses a hash function to compute an index, also called a hash code, into an array of buckets or slots, from which the desired value can be found.
Ideally, the hash function will assign each key to a unique bucket, but most ___ designs employ an imperfect hash function, which might cause hash collisions where the hash function generates the same index for more than one key. Such collisions are always accommodated in some way.
In a well-dimensioned ___, the average cost (number of instructions) for each lookup is independent of the number of elements stored in the table. Many ___ designs also allow arbitrary insertions and deletions of key-value pairs, at (amortized) constant average cost per operation.
Hash table (hash map)
In cryptography, an ___ is a specific type of message authentication code involving a cryptographic hash function and a secret cryptographic key. It may be used to simultaneously verify both the data integrity and the authentication of a message. Any cryptographic hash function, such as SHA-256 or SHA-3, may be used in the calculation of an ___; the resulting algorithm is termed ___-X, where X is the hash function used (e.g. ___-SHA256 or ___-SHA3). The cryptographic strength of the ___ depends upon the cryptographic strength of the underlying hash function, the size of its hash output, and the size and quality of the key.
___ uses two passes of hash computation. The secret key is first used to derive two keys - inner and outer. The first pass of the algorithm produces an internal hash derived from the message and the inner key. The second pass produces the final ___ code derived from the inner hash result and the outer key.
HMAC (sometimes expanded as either keyed-hash message authentication code or hash-based message authentication code)
Code execution paths in which most of the execution time is spent, and which are potentially executed very often.
The reason for avoiding (heap) allocations in these code paths is that allocations may trigger a garbage collection, which may cause sudden, extreme performance deteriorations. These should obviously be avoided in very commonly executed code paths.
Hot paths
Means the rate at which a process progressing is limited by the speed of the ___ subsystem. A task that processes data from disk, for example, counting the number of lines in a file is likely to be ___.
I/O Bound
A programming paradigm that uses statements that change a program’s state.
This programming focuses on describing how a program operates.
Imperative programming
In computer programming, an ___ occurs when an arithmetic operation attempts to create a numeric value that is outside of the range that can be represented with a given number of digits - either larger than the maximum or lower than the minimum representable value.
The most common result of an ___ is that the least significant representable digits of the result are stored; the result is said to wrap around the maximum (i.e. modulo a power of the radix, usually two in modern computers, but sometimes ten or another radix).
An ___ condition may give results leading to unintended behavior. In particular, if the possibility has not been anticipated, ___ can compromise a program’s reliability and security.
For some applications, such as timers and clocks, wrapping on ___ can be desirable. The C11 standard states that for unsigned integers modulo wrapping is the defined behavior and the term ___ never applies: “a computation involving unsigned operands can never ___.”
Integer overflow
In computer science, ___ refers specifically to the mechanisms an operating system provides to allow the processes to manage shared data. Typically, applications can use ___, categorized as clients and servers, where the client requests data and the server responds to client requests. Many applications are both clients and servers, as commonly seen in distributed computing. Methods for doing ___ are divided into categories which vary based on software requirements, such as performance and modularity requirements, and system circumstances, such as network bandwidth and latency. Common ___ methods are Files, Message queues and Sockets.
Inter-process communication or interprocess communication (IPC)
A Network layer protocol.
A principal communications protocol for relaying datagrams across network boundaries. Its routing function enables internetworking, and essentially establishes the Internet.
Has the task of delivering packets from the source host to the destination host solely based on the ___ addresses in the packet headers. For this purpose, it 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.
Internet Protocol (IP)
Transactions are often executed concurrently (e.g., reading and writing to multiple tables at the same time). This ensures that concurrent execution of transactions leaves the database in the same state that would have been obtained if the transactions were executed sequentially. This is the main goal of concurrency control; depending on the method used, the effects of an incomplete transaction might not even be visible to other transactions.
Isolation (database systems)
Is a way of executing computer code that involves compilation during execution of a program - at run time - rather than prior to execution. Most often, this consists of source code or more commonly bytecode translation to machine code, which is then executed directly.
A system implementing a ___ compiler typically continuously analyses the code being executed and identifies parts of the code where the speedup gained from compilation or recompilation would outweigh the overhead of compiling that code.
Just-in-time (JIT) compilation (also dynamic translation or run-time compilations)
A computer program that is the core of a computer’s operating system, with complete control over everything in the system. On most systems, it is one of the first programs loaded on start-up (after the bootloader). It handles the rest of start-up as well as input/output requests from software, translating them into data-processing instructions for the central processing unit. It handles memory and peripherals like keyboards, monitors, printers, and speakers.
The critical code of the ___ is usually loaded into a separate area of memory, which is protected from access by application programs or other, less critical parts of the operating system. The ___ performs its tasks, such as running processes, managing hardware devices such as the hard disk, and handling interrupts, in this protected ___ space.
Kernel
OSI model layer architecture
Layer 7: Application Layer Layer 6: Presentation Layer Layer 5: Session Layer Layer 4: Transport Layer Layer 3: Network Layer Layer 2: Data Link Layer Layer 1: Physical Layer
A computer utility program that takes one or more object files generated by a compiler and combines them into a single executable file, library file, or another ‘object’ file.
Linker or link editor
A tool that analyzes source code to flag programming errors, bugs, stylistic errors, and suspicious constructs. The term originates from a Unix utility that examined C language source code
Lint, or a linter
A compiler infrastructure project is a set of compiler and toolchain technologies, which can be used to develop a front end for any programming language and a back end for any instruction set architecture. ___ is designed around a language-independent intermediate representation that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes.
___ is written in C++ and is designed for compile-time, link-time, run-time, and “idle-time” optimization. Originally implemented for C and C++, the language-agnostic design of ___ has since spawned a wide variety of front ends: languages with compilers that use ___ include ActionScript, Ada, C#, Common Lisp, Crystal, CUDA, D, Delphi, Dylan, Fortran, Graphical G Programming Language, Halide, Haskell, Java bytecode, Julia, Kotlin, Lua, Objective-C, OpenGL Shading Language, Ruby, Rust, Scala, Swift, and Xojo.
LLVM (used to mean “Low Level Virtual Machine” but not anymore)
Occur when there is a design flaw in your program.
Logic errors
Means the rate at which a process progressing is limited by the amount ___ available and the speed of that ___ access. A task that processes/assigns large amounts of in memory data, for example multiplying large matrices, is likely to be ___.
Memory bound