The primary software that runs applications and manages all the hardware, memory and other software on a computer.
A set of computer instructions that tells the computer how to work.
Most commonly used on a desktop or laptop computer and can perform many tasks without an internet connection.
An operating system used on mobile devices, such as a mobile phone or tablet.
Used on specialized computers that take in requests and send back a response (mail server, web server, etc).
Will only perform one type of task and are used in machines such as an ATM or a GPS system.
An operating system that is permanently etched into a hardware device such as a keyboard or a video card.
Operating systems that are most commonly used to run multiple operating systems on a computer system at the same time.
An operating system such as Windows, Mac OS, Android or iOS.
Software that only works on one platform, such as only on Android phones, or only on Mac computers.
Software that works on multiple platforms.
Used to log in to a computer, comprised of a username, password, personalized settings and set permissions.
Has full access and full control to manage other users, set permissions and change computer settings and programs.
Authorization given to user accounts that grants them certain privileges and enables them to access specific folders and files.
The main, controlling account responsible for providing security updates, antivirus software and setting permissions for anyone on the same network.
An agreed upon set of rules and permissions.
Specifying access rights and permissions for each user.
Proving the identity of the user.
An open-source and community-developed operating system.
An operating system that uses a graphical user interface designed by Apple Inc. for use on desktops and laptops.
An operating system that uses a graphical user interface designed by Microsoft for use on desktops and laptops.
A method of organizing files and retrieving them from storage.
Software that manages data and files along with the ability to create, modify, and move these files.
A type of interface that uses interactive graphical elements such as windows, buttons, and icons.
Updates that address and fix security vulnerabilities within a program or product.
A type of computer program that can spread by modifying other computer programs and inserting its own code (rules).
A copy or snapshot of the state of your computer.
Backs up everything on your computer.
Backs up only what has changed since the last backup.
Used to navigate the world wide web and view HTML files.
A collection of data and files used to increase the speed of the browser.
Program code, usually written in JavaScript, that is executed on the client's browser.
An intermediary between the user and the Internet that takes requests from the user and returns a response.
Confirms the identity and authenticity of a website.
Processes commands to a computer program in the form of lines of text.
The suffix at the end of a filename that indicates what the type of file.
The electronic part of a computer that executes the instructions that are passed to it by the operating system. It’s also called a CPU, or central processing unit.
Legally binding guidelines for use and distribution of software.
Software that is available for anyone to access and modify.
Software that is owned by an individual or company.
Refers to the design of the essential parts of an application and how they are connected to each other.
Software installation that is performed on your local computer.
Software installation that is performed on a local area network (LAN).
Software that is installed, hosted and accessed entirely from a remote server or location.
A law that grants the creator of an original work exclusive rights to its use, distribution, and sale
Objects in the public domain are not subject to copyright laws, and thus may be freely used by the general public.
A set of rules or procedures for transmitting data between electronic devices. In order for computers to exchange information, there must be an agreement as to how the information will be structured and how each side will send and receive it.
A group of two or more computer systems linked together.
The amount of data (in bits) that can be sent in a fixed amount of time.
The capacity of data transfer in a system. Measured by bitrate.
The latency of a system is the time it takes for a bit to travel from sender to receiver. Fiber optic cables have low latency.
A new 128 bit version of the Internet Protocol.
The protocol that defines the payout of an an Internet address.
Used to translate domain names into IP addresses.
The process of sending data between two computers on the internet. The data is sent through routers that determine the route.
When multiple paths exist between two points. This improves reliability and makes the internet fault tolerable. Makes the routing system scalable.
Packets are the units of data that are sent over the network.
a set of data that describes and gives information about other data.
Standardizes the layout of all packets. All packets must have a destination IP address, a from IP address, and the actual data being sent. Defines the layout of a SINGLE packet.
Allows for sending MULTIPLE packets between two computers. TCP checks that all packets arrived and can be put back in the proper order. The metadata must include a destination IP address, a from IP address, the message size and the packet order number.
Protocol that standardizes the language for talking to web servers to send and receive web resources. Defines how computers send and receive hypertext information. (HTTPS: The “S” denotes a secure connection using HTTP.)
Stands for Uniform Resource Locator. You are locating a resource that exists somewhere on the internet.
Defines how numbers are represented, which digits are used, and what each position (place) in a number means.
A number system that only uses two symbols: typically "0" and "1".
A number system that uses 16 symbols: 0-9 and A-F
A basic unit of information in computing and digital communications.
`lowerCamelCase` is a naming convention where the first letter is lower case, and each subsequent start of a word is upper case.
A command is an instruction you can give to Karel.
Documentation for all Karel Commands and Syntax
A method is a way to teach the computer a new command
Defining a method means to teach the computer a new command and explain what it should do when receiving that command.
Calling a method actually gives the command, so the computer will run the code for that method.
Indentation is the visual structure of how your code is laid out. It uses tabs to organize code into a hierarchy.
The part of the method that contains the commands
Breaking down (decomposing) your code is splitting it up into several smaller, simpler methods
Programs that “Read like a story” have good decomposition and make the code easy to follow.
Top down design is a method for breaking a problem down into smaller parts.
The way your code is written is the style. It covers the aspects of the code that goes beyond whether or not it just works.
A message in your code that explains what is going on.
Assumptions we make about what must be true before a method is called.
What should be true after a method is called
SuperKarel is like Karel but already knows how to turnRight() and turnAround()
A control structure lets us change the flow of the code.
A for loop lets us repeat code a **fixed number of times**.
An if statement lets you ask a question to the program and only run code if the answer is true.
Control structure that lets us run either one section of code or another depending on a test.
A problem when using a while loop where you forget one action at the beginning or the end.
An edge case is a problem in your code that only occurs in extreme situations.
The run method is where a Java program begins.
Traditionally the very first program you write when learning a programming language, a program that prints "Hello world" to the user.
Java method that lets us print out a line of output to the user
Java method that lets us print output to the user, without ending the line printed.
The `"` character
A symbol or container that holds a value.
`int` is a Java type that represents an integer (a whole number)
String is a Java type that represents a string of characters (text)
`char` is a Java type that represents a single character (a single letter)
`boolean` is a Java type that can either be true or false
`double` is a Java type that represents a real number with decimal values
Declaring a variable is defining it for the first time.
Initializing a variable is giving it an initial value, or a starting value.
Assigning to a variable is updating the variable's value
The type of a variable defines what kinds of values the variable can hold
Java method that lets us read in a line of input from the user as a String
Java method that lets us read in an integer input from the user
Java method that lets us read in a decimal value input from the user
Java method that lets us read in a true or false value input from the user
A class within java.util. It contains code specifically designed to help with user input.
Understanding how data is stored and manipulated in programs.
Data provided by the user to a program via input commands.
The modulus operator (written as % in most programming languages) divides two numbers and returns the remainder.
When two integers are divided, the decimal values are truncated, or chopped off.
When a value higher than the maximum or lower than the minimum is used which can result in logic errors.
A combination of numbers, operators, and sometimes variables that computes a value.
The difference between the calculated approximation of a number and its exact mathematical value due to rounding.
Casting is turning something of one type into another type
When Java automatically casts the value correctly without the programmer needing to do so
The process of converting one data type into another.
Manually converting a larger data type to a smaller one using casting syntax.
Reducing the number of decimal places in a number, sometimes involving casting.
A statement that evaluates to true or false.
To flip a boolean value, or take the opposite of a boolean value. If you negate true, you get false. If you negate false, you get true.
Logical operator that ANDs two boolean values. Written as `&&`. `a && b` will be true if both `a` and `b` are true.
Logical operator that ORs two boolean values. Written as `||`. `a || b` will be true if `a` or `b` is true.
Logical operator that negates a single boolean value. Written as `!`. `!a` will be true if `a` is false, and false if `a` is true.
Used to make logical associations between boolean values.
When the result of a logical expression using && or || can be determined by evaluating only the first Boolean operand, the second is not evaluated.
To switch between two states, such as turning a light on and off
A Boolean expression that combines two or more conditions using logical operators
A logical operator that returns true if both conditions are true
A logical operator that returns true if at least one condition is true
A logical operator that negates a Boolean value, turning true into false and vice versa
A programming construct that executes code based on whether a condition is true or false
A variable used to count the number of times an action has been performed.
Otherwise known as Don’t Repeat Yourself, this principle is designed to help eliminate repeated code and reduce the complexity of a solution
Variables used to control the execution of the loop, typically defining the start, end, and step of the loop
A loop that has no way of stopping, and will keep looping forever.
The process of placing if statements within if statements.
The process of checking if two strings are equal using `.equals()` or `.equalsIgnoreCase()`
An object is a single instance of a Java class. An object has both state and behavior.
Primitive types are the basic, simple data types that are inherent to Java (int, double, char, and boolean)
Concatenation is another word for combining. Concatenating Strings is when we add Strings together.
A method used in Java to compare the contents of two Strings for equality
A loop, most often set with `while(true)`, that has a `break` statement in the loop body.
A short cut when evaluating boolean expressions. If the result can be determined solely by the first part of a boolean expression, the second part is not evaluated, it is skipped.
Laws that define how we can negate an AND statement and how we can negate an OR statement
A constant that has the specific purpose of being the value that breaks out of a loop.
The `break;` statement breaks out of the current loop, without executing any more code in the loop.
A programming language that is very close to machine code and used for a specific type of processor.
A programming language is any set of rules that converts strings, or graphical program elements in the case of visual programming languages, to various kinds of machine code output.
A program that translates code from a high-level programming language to a lower-level language to create an executable program.
A program that directly executes the instructions in a high-level programming language without requiring them to have been compiled into machine language.
The lowest-level programming language, consisting of binary code that is directly executed by a computer's CPU.
A variable that receives a value passed into a method from outside the method.
The `return` statement exits a method and returns a value.
The value returned from a method.
A method's return type is the type of value returned from that method.
A method's signature is the name of the method and the parameter list.
A method's call site is the point in the code where the method is called.
A class is a template, or a blueprint, from which Java objects are created. All Java programs start with a class.
A substring is a smaller sequence of characters in a larger String.
Unable to change. Strings in Java are immutable, meaning you can't change it once you make it. If you take a substring of a String, or concatenate something to a String, the result is a *brand new* String, rather than a modification of the original.
Escape sequences are characters with special meanings.
A method called on the Class, rather than on a specific object of the Class.
A specific standard for commenting Java programs. Javadoc is a format to follow when commenting in order to clearly explain your code.
An exception is thrown by Java when a **runtime error** is encountered. The exception provides information about what kind of error occurred.
Documentation showing the syntax and examples for how to use the various features of Java.
An error in the actual Java code. The code will not **compile** into an executable program, because there are errors in the text of the code.
A tool that compiles your Java code, it takes the Java code you've written and turns it into an executable program.
An error that happens while the program is running. Even if the code is written with the proper syntax, there are things that can go wrong while the program is running.
a digital container that holds information or data on a computer
A string that specifies the location of a file or directory in a file system. There are two types of file paths in Java: absolute and relative.
Specifies the complete path from the root directory to the file or directory
Specifies the path relative to the current working directory
Programming model that focuses on **objects** and the data and actions associated with the objects.
The state of an object is all of the object's associated data. It is the *state* that the object is in.
The behavior of an object is what the object is able to do. It is the actions that can be performed by the object.
Instance is what you call a specific object constructed from a class. Instance and object generally refer to the same thing. An object is a specific instance of a class.
When someone else creates a Class (like `String`, or `Randomizer`), and you are using the functionality of that Class in your program, your program is a *client* of the class. You are using the class as a client.
A variable defined in a Class, for which each object of the class has its own copy.
A constructor is a special method of a Class that constructs a new object (a new instance) of the Class and sets the initial values for the instance variables.
toString is a special method you write in your class that returns a String representation of the object.
An instance method is a method that defines the behavior of an object. It defines an action that the object can perform.
Visibility (usually `public` or `private`) defines who has access to something (usually a variable or method). Public means code outside of the class can access, private means only code inside the class can access.
A variable or attribute of a class that is shared between **all** instance of a class. Each instance **does not** get their own copy.
Related classes are grouped together into packages.
The `this` keyword is a reference to the current object (the current instance).
Class hierarchy refers to the arrangement of classes and how they relate to each other.
When a subclass extends a superclass, the subclass inherits all of the static methods, static variables, and public instance methods of the superclass. This is called inheritance.
A class, usually at the top of a Class Hierarchy, that cannot be instantiated, because not all of its methods are defined.
A method, written in an Abstract Class, that is not defined. The word `abstract` must come right before the method's return type. It is up to the subclass to fill in the definition for the abstract method.
If a subclass defines a new method body for a method defined in the superclass, then the subclass has **overridden** the method of the superclass.
An interface provides a list of methods that *must* be defined if a class chooses to implement the interface.
The Comparable Interface is a standard interface in Java that mandates that all classes implementing the Comparable interface must define a method called `int compareTo(Object o)` that returns a positive int if the parameter `o` passed in is *less than* the current instance, returns 0 if it is equal, and a negative int if it is greater.
Polymorphism is the capability of a method to do different things depending on which object it is acting upon.
Also called late binding, this refers to Java choosing the proper method to call at run time, as opposed to at compile time.
If a class A extends the class B, then A is a subclass of B.
If a class A extends the class B, then B is the superclass of A.
The `super` keyword lets us reference the superclass when writing code inside of a subclass.
A variable that is restricted to use in a certain scope of a program
An instance method that allows the client to **get** the value of an instance variable on an object.
An instance method that allows the client to **set** the value of an instance variable on an object.
Classes can have multiple methods with the same name, as long as the parameters to those methods are different. Doing this is called "overloading" a method.
If two variables have the same name, and exist inside of the same scope, the variable with the *more specific* scope takes precedence. This is called shadowing. Local variables and parameters shadow the more general global variables (instance variables).
When an object is assigned to a variable, the variable doesn't hold all of the object's data, it only holds a *pointer* to the object's data. The variable holds a memory location (think of it as a pointer to that memory location), and the object data is stored at that memory location.
Before an object variable is initialized, it doesn't point to any memory. It holds a **null pointer**.
Association for Computing Machinery: organization for computing professionals to provide guidance related to ethics and responsibilities.
When all programs and code will work as intended.
Prejudice in favor of or against one thing, person, or group compared with another, usually in a way considered to be unfair.
These classes are part of the java.lang package and Object class and have a number of useful methods.
Constructs a new Integer object or a new Double Object that represents the specified int or double value
The minimum/maximum value represented by an int or Integer, which are -2147483648 and 2147483647
Returns the value of this Integer as an int and this Double as a double
Automatic conversion between primitive types and their corresponding object wrapper classes
Reverse of autoboxing; automatic conversion from the wrapper class to the primitive type
The Object class is the superclass of all other classes in Java.
a way to create complex objects by combining simpler objects together, representing a “has-a” relationship between objects
A particular way of organizing data in our programs.
A data structure that stores a **fixed** number of elements, all of the same type, one after another like a list.
The position of an element in an array. The first element is at index 0, the second element is at index 1, and so on.
Getting a value at a particular index in an array.
The number of elements an array can hold. You can get the length of an array `arr` by typing `arr.length`
A 2D Array is an array of arrays, used to represent tables, grids, and matrices.
The ordering of 2D arrays is row-major order, meaning the first index is the row, and the second index is the col. `arr[2][0]` would access the element on the third row and first column.
A for loop written, or “nested”, inside of another for loop. For example:
A for loop that is written differently so that it loops through each element in a data structure, as opposed to having a loop counter variable that goes from 0 to length-1.
A data structure that stores key -> value mappings.
A key is the value used to look something up in a HashMap
The value is the result you get when you look up a key in a HashMap. It is the value paired with a key.
Looping through all of the elements of an array
ArrayList is a Java class that is like an Array with extra powers. It can automatically resize and comes with other helpful methods.
A Java Interface that represents a general List. The interface provides a list of methods that classes should implement if they want to be used as a List.
A number system defines how we represent numbers. It defines which digits we can use, and what value each position (place value) in a number has.
The binary number system is the Base 2 Number System. It is a number system that only uses 2 digits (0 and 1).
The number base of a number system defines how many digits are in the number system, and the base of the exponent for each place value in a number.
The decimal number system is the Base 10 number system. It is a number system that only uses 10 digits (0 through 9).
The octal number system is the Base 8 number system. It is a number system that only uses 8 digits (0 through 7).
The hexadecimal number system is the Base 16 number system. It is a number system that only uses 16 digits (0 1 2 3 4 5 6 7 8 9 A B C D E F)
Bit means "binary digit". A bit is a single digit in a binary number. A bit can either be 0 or 1.
A byte is 8 bits.
A kilobyte (kB) is 2^10 bytes (1024 bytes) of binary data.
A megabyte (MB) is 2^20 bytes (1024 kB) of binary data.
A gigabyte (GB) is 2^30 bytes (1024 MB) of binary data.
Protocols for data sharing on the internet that define rules and conventions for communication between network devices.
The appropriate use of data based on circumstances
The integrity, confidentiality, and availability of data
A loop that is an alternate to a for or while loop that accesses each value in an array starting at the first value and proceeding in order.
Variable created in the enhanced for loop header that contains a copy of the array variable.
The process of traversing a 2D array by accessing all elements in a row before moving on to the next row.
The process of traversing a 2D array by accessing all values at the first column in every row, before moving to the next column
The art and science of concealing secret messages in such a way that no one apart from the intended recipient knows about the existence of the message. In digital information, Steganography is the practice of concealing a file, message, image, or video within another file, message, image, or video.
The RGB encoding scheme allows us to encode colors as numeric data. It defines the amount of Red, Green, and Blue light in a pixel. Each color channel can have a value between 0 and 255.
Procedures that allow us to control and define the behavior of an object.
A mutable list of object references. We can create ArrayLists by using the constructor new ArrayList<E>().
Images are made up of pixels, which are essentially a grid of values. Each value, or pixel, encodes the color at that position in the image.
The process of converting information or data into a specific format that can be understood or processed by a computer.
An algorithm is a set of steps or rules to follow to solve a particular problem.
Notation that describes how complex an algorithm is. A larger number inside of the Big-Oh notation means the algorithm takes longer to complete, a smaller number means the algorithm takes less time to complete.
Also called sequential search, a search algorithm that searches for a given value in a list of values. Linear search is less efficient than binary search.
To arrange a list of values in order from least to greatest (or greatest to least).
Sorting algorithm that takes an array of values and sorts it. The idea is to have a sorted part of the list and an unsorted part. On each iteration, selection sort finds the lowest value in the unsorted section of the list and adds it to the end of the sorted part.
Sorting algorithm that sorts an array of values. The idea behind insertion sort is to have a sorted part of the list and an unsorted part. On each iteration of the algorithm, we grab the next unsorted element and place it in its proper position in the sorted section.
At a high level, recursion is when a function (or method) calls itself.
A problem solving approach where you **divide** the problem into several smaller sub-problems of similar form, and keep doing so until the problems are trivially simple to solve (**conquer**)
A recursive sorting algorithm that sorts an array of values more efficiently than Selection Sort and Insertion Sort using a Divide and Conquer approach.
The base case is the simplest form of the recursive problem. The base case can be immediately solved without breaking the problem down any further.
The recursive case is the general form of the recursive problem. In this case the problem needs to be broken down by one step toward the base case, and the algorithm makes a recursive call to itself to solve this slightly smaller problem. This process repeats until the base case is reached.
Infinite recursion occurs when the base case can never be reached.
Search algorithm that only works on a sorted list. It discards half of the list on each iteration, getting to the solution much faster than Linear Search.
Step-by-step process that solves a problem.
The number of times a statement is executed by the program.
The amount of time a computer spends processing program instructions.
The ability to achieve an end goal with little to no waste.
A sorting algorithm that swaps the minimum value left in an array with the current array index.
A sorting algorithm that shifts the already sorted section of an array to place the current array value in the correct index.
An algorithm that searches data sets in a sequential order, checking each value from the 0th index to the end of the data set to see what index a specific element can be located at.
A search that starts at the middle of a sorted array or ArrayList and eliminates half of the array or ArrayList in each iteration until the desired value is found or all elements have been eliminated.
The amount of time taken by an algorithm to run, as a function of the length of the input.
A method that enables user to obtain information about an object’s instance and static variables.
A method that enables user to change the value of an object’s instance and static variables.
A keyword that indicates a reference object doesn’t point to any object data.
when programs are used and tested without the user necessarily understanding how each part of the program is working, but are able to understand what the final output or product will be.
A child class that inherits attributes and behaviors from a superclass (parent).
An object can take on different forms depending on its implementation. Java can call the correct method even when an object is disguised as a more generic reference type
An Integrated Development Environment (IDE) is a software application that provides tools for writing, running, and debugging code.
A GUI, or Graphical User Interface, allows users to interact with computers by using a mouse or touchpad to click on things like buttons, icons, and menus.
A text-based interface where users interact with the computer by typing commands and receive text-based responses.
The tool that allows users to access and interact with the command line. Different operating systems have their own built-in terminals (e.g., Terminal on macOS, Command Prompt on Windows, and Bash on Linux).
A CLI, or Command Line Interface, allows users to give instructions to the computer using text commands, such as "open a new file" or "run this program."
A temporary job or position with a company or organization that allows you to gain practical skills and knowledge in a particular field.
A document that lists your experiences, skills, and achievements.
A collection of your best work, such as projects, artwork, or writing samples.
The moral principle that governs a person's behavior.
The laws and regulations that govern the use of a resource or activity.