Abstract
Lacking a definition. A val, var, def, or type declaration in a class or trait can be left without a definition, making it abstract. If a class contains any members that are abstract, then it must be declared to be abstract. Abstract types, whether class or trait, can not be instantiated. Only subtypes that have defined all the abstract members can be instantiated.
Abstraction
The concept of writing code so that certain parts of what happens are not concrete until the usage point. Functionality can be abstracted by passing in functions. Types can be abstracted through subtyping or type parameters.
Actor
An actor is an object that receives messages and acts on them. It should be able to process those messages in a manner that is independent of what thread is doing the work.
Affine Transform
This is a term from graphics that is defined as any transformation of the space where parallel lines are preserved. The basic affine transforms are translation, rotation, scale, and shear. Any combination of these is also an affine transform.
Argument
A value that is passed into a function of method.
Array
A basic collection of values that is a sequence represented by a single block of memory. Arrays have efficient direct access, but do not easily grow or shrink.
Class
A construct that works as the blueprint for objects.
CPU
The term Central Processing Unit is used to describe the primary computing element in a computer. This is where most of the work for the programs you are writing takes place.
Concrete
This is a term used to describe a type in which all members are defined and that can be instantiated. Non-abstract classes are concrete.
Concurrent
Concurrent execution is when two parts of a program as executing in a manner that appears to be simultaneous to the user and where the programmer has limited control over what is happening at any given time. A concurrent program does not have to be parallel. Concurrent programs include those where two threads of control swap between one another, but are never active at the same time.
Conditional
An expression of the Boolean type that is used to determine if code is executed.
Embarrassingly Parallel
This is a term used to describe a problem that breaks into problems that are completely independent. Such problems can be easily parallelized because the different pieces don’t really have to communicate with one another.
A type which can only take on one value from a small set of options. These are implemented in Scala by making an object that extends the scala.Enumeration type.
Event Thread
This is a special thread created by a GUI to handle events, including the repainting of the screen.
Expression
A sequence of tokens that has a value and a type.
File
An independent grouping of information in the static storage of a computer.
Function
This is a concept from mathematics of something that maps from values in a certain domain to values in a certain range. In programming, functions can serve this same purpose, but they also more generally group statements together under a particular name to allow you to break code into pieces and give it meaningful names.
Grammar
A formal specification for a set of languages. Chomsky grammars are composed of sets of terminal and non-terminal tokens, a non-terminal start token, and a set of productions. There are other types of grammars, including L-systems, that follow slightly different rules.
GUI
Short for Graphical User Interface. This is an interface that includes graphical elements that the user interacts with using a pointing device possibly in addition to keyboard input.
Higher-Order Function
This is a term used to describe a function whose inputs or outputs include function types.
if
A simple conditional construct that picks between one of two options based on whether or not a Boolean expression is true. In Scala, the if is a valid expression, but can also be used as statements.
Instantiation
The act of creating an object that is an instance of a particular type.
Iteration
The act of running through steps or elements one at a time.
Linked List
A manner of storing data where the data items are in nodes and the nodes know about one another, but nothing knows where everything is. This form of storage makes random insertion and removal efficient, but requires walking the list for random access.
List
An abstract data type that stores items by a numeric index and allows random access, insertion, and removal.
Loop
A construct designed to execute code repeatedly.
Map
This is an abstract data type that associates values with unique keys. In an ideal implementation, it should be efficient to store or retrieve values based on their keys. The critical aspect of a Map is that keys can be whatever type you want to use and they do not have to be contiguous.
Multithreading
The act of having a program that allows more than one thread of control to be active at a time. This effectively allows multiple instructions to execute simultaneously. This is a form of shared-memory parallelism.
In the context of programming, this is when two or mote things are executing at the same time. This generally requires multiple computational elements such as cores, processors, or even full computers.
Parameter
This is a placeholder for a value that will be passed into a function.
Polymorphism
The ability of a piece of code to work with more than one type.
Priority Queue
An abstract data type where items can be added or removed. The order of removal depends both on a priority and the order of arrival such that higher-priority items always come off first and items that have been on the priority queue win ties in priority.
Profiling
The act of running a program to see how resources are used. Often this is done to see how many times different methods are called and what parts of the code the it spends the most time in.
Queue
An abstract data type where items can be added and removed. They are removed in the same order they are added. This is often called " first-in, first-out" or FIFO.
Recursion
When a function or method calls itself. In mathematical terms, this is when a function is defined in terms of itself.
Refactor
The act of changing code to improve some aspect of it, such as how it does something, without changing what it does.
Regular Expression
A formal specification for describing fairly simple sequences of characters. These are largely based on the regular grammars of the Chomsky hierarchy.
Search
The process of looking for a particular element or its position in a collection.
Sequence (Seq)
A type of collection characterized by items having a particular order and being referred to by an integer index.
Set
A collection of unique items. The ideal implementation of a Set allows for efficient checking to see if an element belongs to it, to add elements to it, or to remove elements from it.
Signature
The signature of a method/function includes the name along with the parameter types and the return type. From the signature you can see how a method/function should be called. The return type also lets you know what you can do with the result of the call.
Socket
A construct in computer software that is used to support communication between machines.
Sort
The act of putting the items in a sequence into the appropriate order according to some comparison function.
Stack
An abstract data type with the ability to add and remove items. It is characterized by the fact that items are removed in the inverse order in which they were added. This is often called "last-in, first-out" or LIFO.
Statement
A set of tokens that represents a complete command to a language. In Scala, any expression can be used as a statement.
A data source or sink that does not allow random access. The name should invoke the image of water flowing past. Once a certain time has passed, it can not be returned to.
Syntax Error
This is an error you are notified of during the compile stage which exists because you wrote code that violates the syntax of the language. These are typically the easiest errors to deal with because the compiler can give you an informative message with a line number. If you are working in an IDE, syntax errors will often be shown with a red underscore, much like spelling errors in a word processor.
Thread
A single unit of control in a program that shares memory with other threads.
Tree
A linked data structure that forms a hierarchy where nodes at higher levels know about a subset of the nodes in the level below them. Each node in a tree can only be reached from a single node in the level above it.
Token
The smallest element of a programming language that has meaning on its own and which changes meaning if altered or broken apart with whitespace.
Type
A construct that specifies a set of values and the operations that can be performed on them.
Variable
A construct that associates a name to a reference to a value.
XML
This is short for eXtensible Markup Language. XML is a standard, plain text format that can be used to represent various forms of data in a tree-like structure. It is called extensible because users are allowed to develop their own tags to represent data in the manner they want.