Software Design and Programming Basics
If/Else Statement
Statements in programming that check to see if a Boolean expression is true, and executes a "then" statement if so, otherwise executes an "else" statement if the condition is false. These are often called "two-way" conditional statements.
Boolean (boolean)
True or False. This data type is named after George Boole, a 19th century English mathematician, who helped develop and formalize Boolean Algebra as a new branch of mathematics.
Head
This is a typical object variable identifier names used to reference, or point to, the first object in a linked list. The number one rule for processing linked lists is, "Never let go of the head of the list!", otherwise all of the list is lost in memory. The number two rule when managing linked lists is, "Always connect before you disconnect!".
Syntax
The rules in a scripted language that control punctuation, spelling, and grammar, such as ending a statement with a semicolon, requiring matching braces or parentheses, and so on.
Call
_A statement that activates or executes a procedure, function, or method
Binary Operators
Arithmetic operators help you to perform basic mathematical operations. Arithmetic operators are examples of binary operators, meaning that they need two input elements to work. Notice that the + operator works for numerical addition AND string concatenation (combining two or more strings into one). This makes the + operator an overloaded operator, an operator that can perform more than one function.
Phishing
Attackers use fake emails or websites, appearing to come from a known and trustworthy source, in an attempt to gather personal or financial information from the recipients.
Conditional Processing
Conditional processing is the second type of control structure and it builds off of the sequential process. Sometimes you might want your program to do one thing OR another, based on some condition. Conditional processing lets you build this in to your program. We'll discuss the tools of conditional programming, including if statements, if/else statements, and switch case statements.
Graphs
Graphs are another special data structure, similar to trees, but this is one that we'll only cover at a high level, learning about the general theory, but not really getting into real code.
Imperative (Procedural) Programming
Imperative, or Procedural, programming is a paradigm in which a developer writes code that describes in exacting detail the steps that the computer must take to accomplish the goal. Most of the mainstream programming languages, such as C++, Java, and Python, support procedural programming.
Operator Precedence
Just like you learned in math, there is an order of operations in programming. Some operations are evaluated before others. In general, it is helpful to remember that the order of operations, PEMDAS, still applies, followed by relational and then logical operators. Assignments happen last. Use the table below to review the Java order of operations in more detail. The bolded operators are the only ones you need to know for the certification test.
Compile time errors
Lexical & Syntax
Void Method
Like a procedure. Performs a task without returning a final value or calculation
Linear Run Time (Linear Process)
Linear run-time is a level of algorithm complexity which requires the number of steps directly proportional to the size of the data structure in order to process, such as outputting all of the elements of an array, or performing a linear search on an array of values.
Linked Lists
Linked lists are also quite similar to arrays, but don't use contiguous memory (that is, it doesn't use memory that is side by side). The up side of this is that they are flexible, able to grow or shrink in size. The down side is that they are a bit more difficult to manage. We'll discuss how linked lists work and have a look at some pseudocode that would create a linked list.
FORTRAN
One of the original high level languages, short for Formula Translation, created by John Backus to make programming easier for math and science applications.
Recursive Case
One of two situations in a recursive method, the other being the base case, where another method call is made, moving closer and closer to the base case, which terminates the recursive process and unstacks all previously called methods, until a final value is achieved.
Reduced Instruction Set (RISC)
A micro-processor architecture that has few instructions. This was used by the MacIntosh family of chips, manufactured by Apple Computer.
Testing
Sample data is produced based on the analysis and design of the project, and then tests using the data are run against the code to ensure that the software performs as expected.
Host
A computer in which a virus or other malware resides
C
A general, all-purpose programming language developed by Dennis Ritchie in the late 60s and early 70s at the AT&T Bell Labs, which became one of the most widely used programming languages of all time.
Undirected Graph
A graph that contains edges between vertices with no specific direction associated with any edge.
Back Door
A means of access to a computer or program that bypasses normal security mechanisms.
Pop
A method used in stack processing where a copy of the top value is acquired, and then removed.
Binary Search Tree
A tree in which nodes are inserted systematically in natural order, with the final property of each left child being less than or equal to its parent, and each right child being greater than its parent.
Scareware
A type of malware designed to trick victims into purchasing and downloading useless and potentially dangerous software. By using legitimate-looking notifications showing a large number of viruses or infected files, users are scared into purchasing software to fix the problems.
Virus
A type of malware that propagates by inserting a copy of itself into another program. Almost all viruses are attached to an executable file, which means they will not be active or be able to spread until a user runs or opens the host file or program. Viruses spread when the software or document they are attached to is transferred from one computer to another.
Unary Operator
A type of operator that modifies one operand.
Array Index
A value that indicates the position in the array of a particular value. In many languages, the index of the first element of an array is zero. The index value for the last element of a zero-indexed array would be the length of the array, minus 1. For example, and array with 10 elements has the first element in position zero, and the last element in position 9.
Parameter
A variable located inside the parentheses of a method call or method header
Rootkit
A program (or set of programs) used to give unfettered administrative access to a machine. These programs attempt to hide the fact that a system's security has been compromised and usually provide a backdoor.
Functional Programming Language
A programming language paradigm that focuses on the function, often math based, where recursion is used for iteration processes. Languages of this type include LISP, Scheme, Haskell, and Scala.
Procedure
A programming module that performs a task of some sort, like outputting the contents of a data structure, or performing a sort on an array.
Break
A programming term that ends the process in a control structure, such as a loop or switch case statement.
Adware
Although not categorized as malicious, adware is an application that automatically displays or downloads advertisements to a computer. The ads generate income for the attacker, and usually come packaged with malware.
Top Level Domains
.com - commercial .org - mainly non-profit .net - smaller website systems .edu - primarily education institutions .gov - government agencies and entities .mil - US military use Various country domains, such as: .us for United States, .au for Australia, .ca for Canada, and .uk for the United Kingdom
Bomb
A virus carrying a built-in time delay so that the virus becomes active after a specific "incubation" time
Flowchart
A visual organizer system in programming that indicates the flow of a program, using process blocks, decision diamonds and arrows
Maintenance
After the software project is in service, periodic adjustments are made based on the observed performance of the software package over time, as well as in response to changing conditions.
Syntax Errors
An error associated with punctuation, indentation, or mismanagement of braces and parentheses in a computer program.
Design and implement procedures:
Be able to design and implement procedures to track trends, set time lines, and review and evaluate products using technology tools such as database managers, daily/monthly planners, and project management tools.
Collaborative software:
Be able to use collaborative software, such as Google Docs, etc.
Logical Operators
Binary operators that compare the results of two boolean expressions. The result is either true or false.
Relational Operators
Binary operators that compare two operands, resulting in a true or false value.
Trojans
Disguised as legitimate software, Trojans are a harmful piece of software that tricks users into loading and executing it on their systems. Unlike viruses and worms they do not reproduce by infecting files, nor do they self-replicate.
PROPER USE OF INTERNET RESOURCES
Ethics - Know about: Citing sources using accepted forms Acceptable vs unacceptable use of information Issues related to privacy, hacking, piracy, vandalism, virus proliferation, laws and regulations Copyright, intellectual property - Know about intellectual property rights and related issues (e.g., copyright laws, fair use, patents, trademarks) when using, manipulating and editing electronic data. Online Help - Know how to use online help resources and support documentation Technical Writing - Be able to produce tech writing products such as instruction guides and manuals Societal Impact of Technology - Know the importance of technology for careers, lifelong learning, daily living
Loops
Four standard parts of any loop: Start Check Action Step We'll cover three kinds of loops: for Loops while Loops do while Loops
Etiquette rules for polite communication:
Have knowledge of issues concerning proper etiquette when communicating using electronic tools, i.e, flaming, trolling, revenge action, etc.
Order of Magnitude
In the analysis process for algorithms, the order of magnitude of an algorithm is roughly the number of steps it takes in order for the algorithm to execute, most often expressed using the Big O notation system.
Java
Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented, and is designed to run on any platform through the use of the Java Virtual Machine (JVM)
Provide for diverse needs:
Know how to plan and design communication products that are accessible to learners with diverse needs and abilities
Database:
Know how to plan, create and edit database features (e.g., defining fields, entering data, creating horizontal and vertical layouts) to solve problems and communicate results.
Select products for electronic evaluation:
Know how to select representative products to be collected and stored in an electronic evaluation tool and how to evaluate products for relevance to the assignment or task.
Online communication:
Know how to share information through online communication.
Mac OS
Mac OS is a series of graphical user interface based operating systems developed by Apple Inc. for their Macintosh computer systems, the latest version of which is OS X 10.11, referred to as El Capitan. (https://en.wikipedia.org/wiki/Mac_OS#OS_X)
Methods and Parameters
Methods are the building blocks of a fully functioning program. These blocks of code allow us to encapsulate various processes so that they are reusable and can be used from anywhere in the program. We'll cover the types and parts of a method and delve into important concepts concerning parameters, the aspect of a method that defines the information the method receives and processes.
Network Topologies
Network topologies are different ways that you can arrange a network. Over the years, topologies have evolved to help networks become more robust. Here are several that you need to be familiar with.
Algorithm
Procedure or formula for solving a problem and finding an exact example, as opposed to a heuristic, which calculates an approximate, or educated guess.
Object-Oriented Programming
Object-Oriented Programming (OOP) is a programming language model using objects that contain data as the main focus, with actions and processes directly associated with the data.
Operators
Operators are the basic building blocks of programming statements. You'll use operators to do everything from assigning values, calculating math, creating strings, and more. We'll introduce you to the various kinds of operators and get in some practice with predicting the output of a programming statement that uses those operators.
O(1)
Regardless of the size of N, a process with a running time of O(1) takes 1 step to accomplish the task. This is like searching through a list of items and finding the target on the first try.
Relational Operators
Relational operators compare two values to each other. When using these operators, the result will either be true or false.
Spacing and Indentation
Some programming languages, like C++ and Java, do not require the use of format spacing and indentation when writing code, but some do, such as Python. However, consistent and effective format spacing and indenting allows other developers to better see and understand your code. Companies typically define standards that all developers should follow. This saves time and money during the implementation, testing and maintenance phases of the software project.
Polymorphism
This term literally means in Greek, "many forms", and is a key aspect of object-oriented programming, where methods can be redefined (overloaded or overridden) as needed and desired.
Actual Parameter
Value, expression or variable used as a parameter in a method call.
Passing by Value
When a parameter is passed by value, any changes made by the formal parameter do NOT affect the value of the actual parameter.
Windows OS
Windows 1.0 was released on November 20, 1985, as the first version of the Microsoft Windows line, the first of many since then, culminating with the current version, Windows 10.
Worm
Worms are similar to viruses in that they replicate functional copies of themselves, but are standalone software that do not require a host program to propagate. To spread, worms exploit a vulnerability on the target system or use social engineering to trick users into executing them.
XML Extensible Markup Language (XML)
XML is a markup language that defines a set of rules for encoding documents in a format which is both human-readable and machine-readable.
Queue
A FIFO (first in first out) data structure, similar to a stack, but where the first element added to the queue will be the first one to be removed, and where a new element is added to the back of the queue, much like a waiting line. The three main operations are also similar to a stack - push, pop, and peek - where push inserts to the back of the queue, and pop and peek work at the front of the queue.
Bug/Error
A bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected result. This can be a program situation that indicates a flaw in the source code, either syntax-based (punctuation or grammar), run-time (occurs during execution, such as file not found, or division by zero), or logic based where the program runs but does not produce the desired results.
Complete Tree
A complete tree (not to be confused with a full tree) is one in which there are no missing nodes when looking at each level of the tree. The lowest level of tree may not be completely full, but does not have any missing nodes. All other levels are full.
Switch Statements
A conditional control structure in programming that functions as a multi-step if else statement, where several cases are stated and examined during execution to seek a match, and then a command is executed when a match is found. (discrete data)
Virus definitions file
A data file used to update an antivirus program so it can recognize new viruses as they are discovered and documented
Graph
A data structure in programming (not to be confused with a geometry style graph of a line or a parabola) which consists of a set of vertices (nodes) and edges (connections)
Binary Tree
A data structure that consists of nodes, with one root node at the base of the tree, and two nodes (left child and right child) extending from the root, and from each child node
Non-Linear Data Structure
A data structure that does not occupy contiguous memory, such as a linked list, graph, or tree.
Integer Modulus
A division process that results in a whole number answer representing the remainder of the division process, discarding the actual answer. Indicated by the % sign.
Integer Division
A division process that results in a whole number answer, discarding or truncating any fractional remainder.
Function
A function in programming is most often a procedure or method that performs a calculation and returns a value of some sort.
Algorithm Analysis
A general process that determines the amount of resources (such as time and storage) necessary to execute any particular algorithm, most commonly using Big O notation, such as O(N) or O(N^2)
Malware
A general term for malicious software or code (called malcode) specifically designed to damage, disrupt, steal or inflict illegitimate action on data, hosts, or networks.
Leaf
A leaf is a node in a tree data structure that has no children, and is at the end of a branch in a tree.
Quadratic Run Time
A level of complexity of an algorithm that is characterized by a nested loop process, taking roughly N^2 steps to complete, so for an array size of 10 items, it would take roughly 100 steps to complete the process.
Array (1D)
A linear collection of data items in a program, all of the same type, such as an array of integers or an array of strings, stored in contiguous memory, and easily accessed using a process called indexing.
Linked List
A linear data structure, much like an array, that consists of nodes, where each node contains data as well as a link to the next node, but that does not use contiguous memory.
Linear Search
A loop based search process using an array of values that starts looking at the first of the list and continues towards the end of the list until the target is found, or until the end of the array is reached.
For Loop
A loop structure in various programming languages where the start, check, and step are designated in parentheses immediately after the for, such as for(int x ← 1; x < 10; x ← x + 1)
Constructor
A method in a class definition whose sole responsibility is to construct a new object. Classes can have many versions of constructors, a key feature of polymorphism called overloading.
Peek
A method used in stack processing where a copy of the top value of the stack is acquired, without removing that item.
Push
A method used in stack processing where a new value is inserted onto the top of the stack.
Firewall
A network security device (hardware, software, or both) that grants or rejects network access to traffic flows between an untrusted zone and a trusted zone based on a set of rules.
Full Tree Traversal
A non-executable, visual approach to help determine the pre-order, in-order, or post-order traversal of a tree, as in the diagram shown above.
Social Engineering
A non-technical method of intrusion that relies on human interaction and often involves tricking people into breaking normal security procedures.
Big O Notation
A notation system used to classify algorithms (see algorithm analysis). The primary notation levels are: O(1), O(log N), O(N), O(N log N), and O(N2)
While Loop
A pretest loop in programming that checks a boolean condition before performing the action of the loop, and continues iterating while the condition is true.
Method
A process in Java that can be either a procedure (void method) that performs an action , or a function (return method) that returns a calculated value.
Class Method
A process in a class definition that acts on the data that belongs to that class.
Loop
A process in programming that repeats a process a certain number of times.
O(N)
A process with this running time (often called "linear") will take roughly the same number of steps as there are items in the list, like outputting all of the values in a list, or searching through a list one item at a time and finally finding the target item in the final step, or discovering that the item is not there. It is most commonly characterized by the use of a loop that starts at the first item and goes one step at a time all the way to the last item in the list.
O(N2)
A process with this running time (often called "quadratic") is characterized by the use of two loops, one inside the other, often referred to as "nested loops". Three of the sorts you will study - Selection, Bubble, Insertion - have this basic structure and running time efficiency. This simply means that it will take roughly N times N steps to process a collection of N data items. For example, if the list contains 10 items, it will take approximately 100 steps to complete the process. This is generally considered a very inefficient process, and should not be used with significantly large values of N.
O(log N)
A process with this running time is very efficient because it uses a "divide and conquer" process, characterized by a division by 2 as an integral part of the code implementation. For example, for a data set of 128 items, the number of times required for a log N algorithm is 7 steps. The value 7 is the log, base 2, of 128, hence the term "O(log N)". The binary search process is the classic example of this, and is demonstrated in the Binary Search video, which searches for a word in a dictionary and finds it quite quickly using this process. This running time is less efficient than O(1), but much more efficient than O(N).
Linear Data Structure
A programming data structure that occupies contiguous memory, such as an array of values.
new
A reserved word in several languages that asks the compiler to instantiate a new object.
Stack
A stack is an abstract data type that serves as a collection of elements, with three principal operations: push, pop, and peek, as described above. A stack is often considered a LIFO array (Last In, First Out).
Conditional Statements
A statement in programming that makes a decision using if or if-else situations by evaluating a boolean condition.
Full Tree
A tree in which every level of the tree is completely full, with no missing nodes, not to be confused with a complete tree.
Maximum Heap Tree
A tree in which every parent is greater in value than both its children, which means that the root of the tree is the greatest value in the tree.
Minimum Heap Tree
A tree in which every parent is lesser in value than both its children, which means that the root of the tree is the least value in the tree.
Array length
A value that represents the number of elements contained in an array. Often there is a process associated with an array that provides this value, such as list.length, or len(list).
Class Variable
A variable that belongs to the class, and is not specific to any particular object, indicated by the word "static", of which only a single copy exists, regardless of how many instances of the class exist.
Access Modifier
Access modifiers (or access specifiers) are keywords in object-oriented languages that set the accessibility of classes, methods, and other members. The two most common are private and public, where private limits access only to members of the class, and public grants open access.
Constant Run Time
An algorithm is said to be constant time (also written as O(1) time) if process only involves one step, regardless of the size of the array, such as accessing any particular element in a static array.
Antivirus software
An application that is designed to check computers for viruses and remove them if found. They often also scan all incoming and outgoing data for suspicious code.
Two-Dimensional (2D) Array
An array of arrays, characterized by rows and columns, arranged in a grid format, but still stored in contiguous, or side-by-side memory, accessed using two index values.
Ragged Array
An array where the number of columns in each row may be different. For example, there could be two elements in the first row, three in the second, and five in the third.
Row Major
An array where the two index values for any element are the row first, then the column.
Lexical Error
An error in programming that is characterized by a misspelling of a word, capitalization errors, or reserved words listed out of order.
Logic Error
An error that causes the program to run incorrectly, but does not prevent the program from running.
Run-time Errors
An error that occurs during the execution of a program, such as missing files or faulty input.
Vertex
An object in a graph.
Arrays
Arrays are a really important data structure that you will use over and over again in programming. Arrays can be either 1-dimensional or multi-dimensional (arrays of arrays). We'll cover both of these, how to access the data, and how you would process arrays using loops. The memory used by an array is static, not able to change size once declared, but easy to access since it is in contiguous (side-by-side) memory.
Evaluate products:
Be able to evaluate projects for design, purpose, audience and content delivery using various criteria (e.g., technology specifications, established criteria, rubrics).
Integrating objects:
Be able to integrate one or more objects (e.g., tables, charts, graphs, graphics) into a product.
Publishing applications:
Be able to publish information in a variety of ways (e.g., printed copy, monitor displays, Internet documents, video).
Virtual environments:
Be able to use interactive virtual environments (e.g., virtual field trips, instructional simulations)
Productivity tools:
Be able to use productivity tools to create products (e.g., slide shows, posters, multimedia presentations, spreadsheets) for defined audiences.
Telecommunication software:
Be able to use telecommunications (e.g., Internet browsers, video conferencing, distance learning) for a variety of purposes.
Binary Trees
Binary trees will be an important data structure to know when we move on to looking at binary search trees and heaps. We'll look at how binary trees work, how to traverse (travel between the nodes of) binary trees, have a look at binary search trees, and look at special binary trees called heaps.
Composition
Composition is the process of combining simpler objects into more complex objects. For example, a Car class might include a BodyType object, an Engine object, and a TransmissionType object.
Bots
Derived from the word "robot", bots (also called zombies) automate tasks and provide information or services that would otherwise be conducted by a human being. Bots can include the ability to gather keystrokes passwords, or other information. Malicious bots are self-propagating and connect back to a command and control (C&C) server, creating a "botnet". Using a botnet, attackers can launch broad-based attacks remotely.
HARDWARE AND SOFTWARE ISSUES
Hardware and Software Use - Be able to use input, output, processing, primary and secondary storage, operating systems, software applications, networking components. Select and connect devices - Be able to properly select and connect any hardware device for the typical computer system, i.e. main system, monitor, keyboard, scanner, printer, camera, etc. These two standards almost go without saying. Clearly you as a teacher must be able to manage the hardware and software components of your lab and your teacher workstation, being able to install new devices as well as new software. Select, evaluate and acquire appropriate software - Make decisions (professional or personal) on software regarding quality, effectiveness, appropriateness, cost, proper and ethical acquisition.
Internet Protocols
Here's a quick recap of several of the protocols that we mentioned in the video. Protocols and Models that Help the Internet Work OSI - Open Systems Interconnection - 7-layer theoretical network model on which Internet is based (Physical, Data Link, Network, Transport, Session, Presentation, Application) TCP/IP - Transmission Control Protocol/Internet Protocol - 4-layer network model on which the Internet actually works - aligns with the OSI model RIP - Routing Information Protocol - Router software for connecting and managing LANs and WANs Protocols that Help us work on the Internet HTTP - Hyper Text Transfer Protocol - web page protocol SMTP - Email protocol - for sending and receiving emails POP - Email post office protocol - for storing emails FTP - File Transfer Protocol - uploading and downloading files
Descriptive Identifiers
Identifiers such as variable, method and class names should accurately describe the data or action. This will make your code easier for others to read and understand. It will also save time and money during the implementation, testing and maintenance phases of the software project.
Node
In a linked list, tree, or similar graph-based structure, a node is an object linked to other objects, representing some entity in that data structure.
Depth
In a tree data structure, the depth of the tree is most commonly expressed as the number of steps from the root of the tree to the farthest outlying node in the tree. Height is also used to mean the same thing.
Zombie
In computer science, a zombie is a computer connected to the Internet that has been compromised by a hacker, computer virus or trojan horse and can be used to perform malicious tasks of one sort or another under remote direction. Botnets of zombie computers are often used to spread >e-mail spam and launch denial-of-service attacks
Operating with integers vs. Operating with decimals:
In general, when you perform an operation when either operand is a floating point number (commonly known as a decimal value), then the result will be a floating point number, even if it is a decimal such as 30.0. Internally, a floating point value is stored to the maximum precision allowed by the particular data type. The only time precision or place value is an issue is when displaying the value. The certification test will most likely NOT ask you to answer any questions that relate to precision of floating point numbers. Examples 10.0/4 result: 2.5 10/4.0 result: 2.5 10.0/4.0 result: 2.5 When two integers are divided, the result is truncated to be an integer, where any fractional part (remainder) of an answer is discarded without rounding up or down. Ex: 10/4 result: 2
Logarithmic Run Time
Logarithmic run time is a level of complexity which requires the number of steps roughly equivalent to the log value (base 2) of the size of the data set. For example, for a set of 1000 values, the approximate log base 2 value of 1000 is 10, which means it would take at most 10 steps for an O(log N) algorithm to perform its task on 1000 items in a data structure. The most well-known O(log N) algorithm is the binary search (see the video on the dictionary search).
Logical Operators
Logical operators allow a program to make a decision based on multiple conditions. Each operand is considered a condition that can be evaluated to a true or false value.
Static Memory
Memory allocated to an array, which cannot grow or shrink once declared.
Contiguous Memory
Memory that is "side-by-side" in a computer, typical of an array structure.
Dynamic Memory
Memory that is NOT contiguous (side-by-side), is allocated, or removed, as needed, specifically during the implementation of a linked-list style data structure, which also includes binary trees and graphs.
Networking Systems and Devices
Network Systems Internet: The ultimate WAN, originally developed by the US Department of Defense to ensure robust and reliable communication in the event of nuclear war, eventually became public Ethernet: a high speed communication system for LANs and MANs - created in the 1980s and is the current technology used worldwide - uses Cat 5, Cat 5E, Cat 6, fiber optic cable, and wireless technology Network Devices Router: king of the WAN - connects LANs Switch: king of the LAN - connects nodes within a LAN (servers, computers, printers, etc) Hub: also creates a LAN, not as good as a switch, dilutes bandwidth
Recursion
Recursion in computer science is a method where the solution to a process involves that process calling another instance of itself, stacking up process calls over and over again, moving towards a base case, at which time the unstacking process happens and the entire recursive process is concluded.
Recursion
Recursion is another form of iteration, and happens when a process calls itself over and over, until it reaches a base case condition. This type of structure can be very useful in a number of situations, especially when a loop cannot do the job, or can only do it with great difficulty. Recursion can be a little difficult to understand at first, so give yourself plenty of time to think through and practice how it works.
Big O Table
Remember that Big O is a set of values that help us understand how many steps it will take a particular algorithm to process a certain number of pieces of data.
Pre Vs. Post Test
Remember that a pretest loop has the check at the beginning of a loop while a posttest loop puts the check at the end. Examples of pretest loops are the for and the while loops. The do while loop is an example of a posttest loop. It is possible for a pretest loop to never run BUT a posttest loop will always run at least once.
Spyware
Software that enables a user to obtain covert information about another's computer activities by secretly transmitting data from their hard drive.
Stacks and Queues
Stacks and Queues are both quite similar to arrays but have some special rules that apply to them. We'll cover the differences between these two structures and give you practice in using the methods that manage the data inside of these: push, pop, and peek.
Four Parts of a Loop
Start - every loop must start once. Check - the condition that is checked with each iteration, either before or after the action, to determine if the loop is to continue or stop. Action - the task that is repeated, which can be anything, even another loop. Step - a crucial part of the process, often controlled by a variable, either increasing or decreasing in value with each iteration of the loop, moving towards the condition which will become false and stop the looping process.
If Statement
Statements in programming that check to see if a Boolean expression is true, and executes a "then" statement if so, otherwise does nothing. These are often called "one-way" conditional statements.
Formal Parameter
Temporary local variable listed in a method header that receives a value from a method or procedure call, only in scope during the execution of the method. Once the method completes its task, the formal parameter ceases to exist.
Agile
The Agile model builds a system incrementally with repeated cycles of analysis, design, implementation and testing. The methodology emphasizes continuous delivery of working software that is coded, tested and fixed over short intervals that are typically one to three weeks in duration. The model is guided by a set of four simple principals outlined in the Agile Manifesto.
IP Addresses
The IPv4 Full Address Range work like this: 32 bits per address in 4 groups of 8; addressed using dotted decimal notation Each group of 8 has 256 possible values, 0 - 255 Total number of addresses is 232, or 2564 or 4,294,967,296 (over 4 billion) For example, the first and last IP addresses are: 0.0.0.0 - 255.255.255.255 Here are some other exemplar addresses: 0.0.0.0, 0.0.0.1, 0.0.0.2 ... 127.255.255.255, 128.0.0.0, 128.0.0.1, 128.0.0.2, ... 255.255.255.254 ... 255.255.255.255 Private IPv4 Address Ranges are: Class A: 10.0.0.0 -- 10.255.255.255 Class B: 172.16.0.0 -- 172.31.255.255 Class C: 192.168.0.0 - 192.168.255.255 Remember that IPv6 is the current protocol, created as the old IPv4 system began to run out of addresses, though IPv4 is still in use.
Incremental
The Incremental model defines the system software development process in small steps, completing all of the SSLC phases for each subset of the application, and then repeating the cycle for each portion until the project is complete. This is an improvement over the waterfall model because it provides more opportunity to make adjustments as needed with less cost involved in making changes along the way.
Case Studies
The Large Integer Case Study. This performs standard math calculations with very large numbers that exceed the storage and handling capabilities of standard numeric data types. The Marine Biology Case Study. This uses a fish pond as a setting for dealing with various fish objects with certain behaviors. The GridWorld Case Study. This scenario uses Actor objects within a Grid setting, using the OOP features of abstraction, inheritance, and polymorphism.
body
The body of the method is the section that contains the commands and instructions.
Executable Code
The code that is a result of the compile process translated from source code.
Header
The header of the method is where the return type, name, and parameter list of a method are declared.
Method Name
The method name follows the word void or the return type, and is used to identify the process being defined.
Parameter list
The parameter list follows the name of the method, and are the variables in parentheses that receive the information to be processed in the body of the method.
Parent Node
The parent node in tree structure is a node, including the root, which has one or more child nodes connected to it. Note: It is possible for a parent node to have only one child, either a left child, or a right child.
Iterative Processing
The process in programming that uses loop based or recursive based control structures to repeat certain processes. Iterative Processing is the last of three control structures we'll cover in the course. So far, we've looked at sequential processing and conditional branching. Iterative processing, the third control structure allows you to execute a block of code over and over, as many times as you need In iterative processing, program statements execute normally, until you reach a block of code that you would like to repeat over and over again. Using a loop control structure allows you to write code once and use it over and over, giving you different output. Loops contain a start, a check, an action, and a step. As long as the check is true, the action is repeated. Once the loop check evaluates to false, the looping action stops, and the program continues on to the next statement after the loop.
Parameter Passing
The process in the source code of a program whereby data is passed from one section of the program to another, using actual parameters in method calls that send information to formal parameters in method headers.
Construct
The process of instantiating (bringing into existence) an object based on a class definition.
Concatenation
The process of joining two strings of characters into a larger string of characters, an operation indicated by the plus (+) sign.
Binary Search
The process of searching through an ordered set of data using the "divide and conquer" technique, which guarantees a final result in O(log N) steps.
Post-Order Traversal
The process of systematically visiting every node in a tree once, starting at the root and proceeding left down the tree, accessing the first node encountered at its "right" side, proceeding likewise along the tree, accessing each node as encountered at its "right" side. The post-order traversal of the tree example shown above is: 1, 8, 4, 5, 6, 9, 2, 7, 3, 5.
Pre-Order Traversal
The process of systematically visiting every node in a tree once, starting with the root node, proceeding to the left along the tree and accessing the node when the "left" side of the node is encountered. The pre-order traversal of the tree example shown above is: 5, 9, 4, 1, 8, 6, 5, 3, 2 ,7.
Binary Tree Traversal
The process of systematically visiting every node in a tree once. The three most common traversals are: pre-order, in-order, and post-order.
Compiling
The process of transforming source code from a high-level programming language into object code, most typically machine language or bytecode in Java.
Return Type
The return type of the method indicates the type of result expected from the method. This method will return an integer value.
Root
The root node is the base level node in tree; the node that has no parent.
Children
The term used in trees to indicate a node that extends from another node, such as left child and right child in a binary tree.
Base Case
The terminating scenario or situation in recursive programming that does not use recursion to produce an answer.
Directed Graph
This is a graph where an edge has a direction associated with it, for example, a plane flight that takes off in one location and arrives in another. The return flight would be considered a separate edge.
Do While Loop
This is a post test loop in programming where the action of the loop precedes the "check if true" expression, which decides whether or not the loop should continue.
O(N log N)
This running time is a product of N and log N, which means that a process that is measured at this efficiency uses a combination of "divide and conquer" with N steps, resulting in the N times log N total steps. For a data set of 128 items, which we discussed above as having a log N of 7 steps, the product of 128 and 7 is 896 steps, which means that this process would take that many steps to complete. Compared to an O(N2) process using the same N value of 128 data items, requiring 128 times 128, more than 16,000 steps, 896 steps is very efficient in comparison. Two of the sorts you will study have this running time for the most part: merge sort and quick sort. This running time is less efficient than O(N), but much more efficient than O(N2).
Passing by Reference
When a parameter is passed by reference, the memory location of the object referenced by the actual parameter is passed to the formal parameter, so that any changes made to that object by the formal parameter immediately affect the actual parameter, since both formal and actual parameters are referencing, or "pointing to", the same object in memory.
String Concantenation
When used with strings and characters, the + operator doesn't try to add them like numbers; instead it concatenates them ("connects", or "joins" them into one string). Example: "Hello" + "World" becomes "HelloWorld" "Hello" + " " + "World" becomes "Hello World"
Compiler
A compiler is a computer program (or set of programs) that transforms source code written in a programming language (the source language) into another computer language (the target language, often having a binary form known as object code). The most common reason for converting a source code is to create an executable program.
Integer (int)
A negative or non-negative whole number.
Child Class
A class that inherits the characteristics of a parent class.
Code Block
A code block is a section of code in a computer program which is grouped together. Blocks consist of one or more declarations and statements
Assembler
A computer program which translates assembly language to an object file or machine language format
Object Oriented Design
A design methodology that uses interacting objects using the big ideas of Abstraction, Inheritance, and Polymorphism.
Top-Down Design
A top-down approach is the process of breaking down a project into smaller and smaller pieces until each piece performs one simple task. In a top-down approach, an overview of the project is formulated, and then broken down into more specific, lower-level tasks. It is synonymous with step-wise refinement, which is the incremental process of designing an application or procedure by looking at the requirements and devising an initial solution. Then the solution is inspected for patterns that can be abstracted and iterated until the solution meets the objectives of performance, clarity and quality.
Bytecode
A universally portable software file compiled from source code that is then translated into machine language by an interpreter. Java works this way, where a .java file is compiled into a .class file, which contains bytecode, and then is translated by whatever device executes that file, using the Java Virtual Machine (JVM) bytecode interpreter.
Functional Programming
Functional programming, as opposed to Imperative programming, is a pure functional approach to problem solving. Functional programming is a form of declarative programming. Languages that support this style of programming include Scheme, Haskell, LISP, Racket, and F#.
Sequential Processing
Sequential Processing is one of three kinds of control structures we'll cover in the course. A control structure is a block of programming that chooses which way to go, given certain parameters. Understanding different control structures, and the building blocks that make them, are essential parts of understanding computer science. After you're introduced to the concept of control structures, we'll also discuss the different types of errors you may encounter.
DOS (Disk Operating System)
DOS was the first widely-installed operating system for personal computers. It is an acronym for several computer operating systems that are operated by using the command line. MS-DOS dominated the IBM PC compatible market between 1981 and 1995 until Windows came along and emerged as the dominant OS.
Implementation (Coding)
During this stage, developers write and document the code to implement the project, based on the design.
Encapsulation
Encapsulation is one of the three central principles (along with Inheritance and Polymorphism) of Object Oriented Programming. Encapsulation incorporates related data items and processes into a class definition, including instance variables, constructors, accessor and modifier (mutator) methods.
"Has-a" Relationship
The concept of Encapsulation, in which one class is composed of multiple, simpler classes, can be described by a "has-a" relationship. For example, when a Car object includes Body and Engine objects, the Car "has-a" Body and the Car "has-an" Engine.
Instruction Set Architecture (ISA)
The part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O.
Floating-point number (float)
A real number that includes a fractional part, like 3.14, 4.0, or -0.5.
COBOL
An acronym for common business-oriented language, a compiled English-like computer programming language designed for business use
Python
From python.com: "Python is an interpreted, object-oriented, high-level programming language with dynamic semantics". Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than possible in languages such as C++ or Java.
Pre- and Post-Condition Comments
Preconditions and postconditions are special kinds of documentation written for a process. The precondition describes what must be true in order for the process to perform its task. For example, the precondition for a binary search algorithm requires an ascending ordered list as the input collection to be searched. The postcondition describes what will be true when the process is complete. For example, a binary search would return the position of the found value in the provided array, or a negative value of some kind if the target was not found.
BASIC (Beginner's All-purpose Symbolic Instruction Code)
A family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use
Unified Modeling Language (UML)
A general-purpose modeling language in the field of software engineering, used to visualize an Object Oriented Design system.
Low Level Language
A language easily understood and executed by a computer, like machine language, assembly, or bytecode
Machine Language
A low-level binary language, consisting of only 0s and 1s, easily understood and executed by the computer, most often the result of a translation process from a high level language using a compiler or interpreter.
Assembly Language
A low-level programming language (difficult for humans, easy for machines) that uses mnemonic opcodes, such as mov, sto, and load, to interact directly with a computer's CPU and registers, used by expert programmers to produce highly efficient and fast programs
Complex Instruction Set (CISC)
A micro-processor architecture wherein the machine instruction set is designated as complex. This style processor was primarily used by the Intel family of processors, including the Pentium family.
Backus Naur Notation
A notation technique for context-free grammars, often used to describe the syntax of languages used in computing, developed and first introduced by John Backus and Peter Naur as a formal notation to describe the syntax of a given language. It is sufficient to recognize examples of BNF, such as the one shown below.
Pascal
A procedural programming language devised and published by Niklaus Wirth in 1970, primarily intended to teach good structured programming habits.
Bottom-up Design
A design methodology that involves using existing programming libraries and APIs to design a system or application, saving time and effort by using predefined and tested modules to help implement the overall solution
Syntax Diagram
A diagram system, sometimes referred to as a railroad diagram, which is another way to represent a context-free grammar, developed as a graphic alternative to the Backus Naur form mentioned above.
Unit Testing
A program is made up of many parts, each of which performs a crucial task. Unit testing is the process of testing each individual process to ensure it is working in all possible conditions, so that when it is incorporated into the larger process, its function is flawless.
C++
A programming language also developed at AT&T Bell Labs in the late 70s by Bjarne Stroustrup, derived from C, with added object oriented features.
Programming Language
A programming language is a formal constructed language designed to communicate instructions to a computer.
Object Oriented Programming Language
A programming language paradigm that focuses on the data, where processes belong to the data and are encapsulated into objects based on class definitions using abstraction, inheritance, and polymorphism as key features of design.
Procedural Programming Language
A programming language paradigm that focuses on the procedure, which contains step by step instructions for the computer, primarily using loops for iteration. Languages that fit this category include Fortran, COBOL, Pascal, and C.
High Level Language
A programming language using words and commands easy for humans to understand and organize, but which must be translated into a low-level language like machine language or object code for the computer to understand and execute.
String (string)
A row of characters combined together to make a word, sentence, or other text based values, contained within a pair of double quotes, like "Rise to vote sir!", "$123.56", or "George Washington".
Character (char)
A single symbol, letter, digit, or whitespace contained within a pair of single quotes like 'A', 'b', '5', '#', or ' '.
Code
A term that refers to the source code, or set of instructions found in a computer program.
Abstraction/Information Hiding
Abstraction, or "Information Hiding," is a term associated with Encapsulation. Through the process of Abstraction, a programmer hides all but the relevant data about and interaction with an object, in order to reduce complexity and increase efficiency, especially when improvements or modifications need to be made from time to time.
Visual Basic
An event-driven programming language and integrated development environment (IDE) from Microsoft, first released in 1991, to be relatively easy to learn and used to create GUI based programs.
Pseudocode
An informal high-level description of the operating principle of a computer program or other algorithm. There are many examples of pseudocode similar to the one shown below. The important thing to remember is that pseudocode is non-executable, meant only as a way to easily and clearly express the purpose of a section of code.
Operating System
An operating system (OS) is software that manages computer hardware and software resources and provides common services for computer programs, like DOS, Windows, UNIX, Linux, and MAC OS.
Comments for Documentation
Comments are simple English sentences or phrases embedded into a program, but hidden from the compiler. For example, comments in the C and Java use // symbols for single line comments and /* and */ for multi-line comments. Comments also increase the readability of your code, especially for difficult or unintuitive sections of code.
Invalid Identifiers
Here are some examples of INVALID identifiers, with the reason each is invalid shown in parentheses: 1num (starts with a number) first name (contains a space) wage$per-Hour (contains invalid symbols) int (reserved word)
Case-Specific Identifiers
Identifiers such as variable, method and class names typically use specific upper and lower case letters to indicate the identifier type. This makes the code easier to read and understand. Identifiers that need more than one word to describe them typically use the CamelCase style, with an initial capital for each of the words. Examples include CollegeStudent for the name of a class that represents a college student and getName for a method that retrieves the name of that student. Case also typically indicates the identifier type. For example, since CollegeStudent mentioned above is a class, the first letter is capitalized. Since firstName and getFirstName are a variable and method name, respectively, the first letter of each identifier is lower-cased. A constant is a memory location that does not change value during the execution of a program, once the value has been assigned. Names of constants are typically spelled with all capital letters, for example, PI. If the identifier contains more than one word, they can be separated by an underscore, for example, OVERTIME_RATE.
Inheritance
Inheritance is one of the three pillars of OOP (Object Oriented Programming), along with Composition and Encapsulation. Inheritance allows classes to be defined based on previously defined and developed classes, receiving all of the characteristics of the parent class, and then expanding on those features.
Linux
Linux is a UNIX-like computer operating system assembled under the model of free and open-source software development and distribution. The defining component of Linux is the Linux kernel, an operating system kernel first released on 5 October 1991 by Linus Torvalds. Due to the fact that is open source software, many versions of Linux have evolved over the years, including Ubuntu, Gentoo, PacMan, and Red Hat. (https://en.wikipedia.org/wiki/Linux)
Robust
Robust means to be able to withstand or overcome adverse conditions. A program is considered to be robust if it responds gracefully (no crashes, logical next step and effective messaging), regardless of bad input, lost network connection or other unexpected event. Robust programs require more time in design and development, but will save time and money during the maintenance phase. Strategies for robust code development include unit testing, input protection, data validation and exception handling.
Spiral
The Spiral model is a risk-driven process model generator for software projects. Based on the unique risk patterns of a given project, the spiral model guides a team to adopt elements of one or more process models, such as incremental, waterfall, or evolutionary prototyping. Before any changes are made to the original plan, a risk assessment is performed, helping to decide the nature and degree of the recommended change.
Waterfall
The Waterfall model was commonly used for years in standard industry production. This model is sequential in nature, with progress flowing steadily down (like a waterfall) through the phases of idea, analysis, design, development and test. The disadvantage of this methodology is that it is rigid and does not easily allow for modifications.
"Is-a" Relationship
The concept of inheritance, in which one class is derived from another class, can be described as an "is-a" relationship. For example, when a Student class inherits from a Person class, the Student "is a" Person.
Class
The definition of an object, describing the type of data owned by the object, as well as methods that act on that data.
Software System Life Cycle (SSLC)
The five standard stages of development for a software development project include analysis, design, implementation (coding), testing and maintenance. These steps are not always performed only once, end-to-end, but are cyclical in nature, and the approach to executing the stages is referred to as the development methodology
Overloading Methods
The polymorphic feature of object-oriented programming where constructors and methods are named the same but operate on different input parameters in order to perform the same task.
Overriding Methods
The polymorphic feature of object-oriented programming where methods inherited from parent classes, such as the toString Java method from the Object class, are redefined and customized to better fit the purpose of the current class.
Valid Identifiers
The rules for creating valid identifiers are fairly common among all programming languages, and generally include the following guidelines: Must contain only alphanumeric characters (A...Z, a...z, 0...9 ), and/or the underscore character (_) Must begin with an alpha character (A...Z, a...z) or the underscore character. May not contain any symbols other than the underscore character. May not contain any spaces. May not be a reserved word from the programming language. Here are some examples of valid identifiers: name age num1 wagePerHour _DateOfBirth PI STARTING_DATE
Interpreting
The translation process in some programming languages which executes a program one line at a time, instead of compiling the entire program into one executable file.
Conventions
There are also conventions, or "agreements" about how to create identifiers, that are not crucial to the compiler, but are helpful to the humans reading the code. Some software development firms insist that certain conventions be followed so that software development and modification efforts are streamlined, saving time and money. For example, some identifiers, by convention, start with an upper case letter, such as class names in some object oriented languages. Another convention is for procedures, functions and methods to start with a lower case letter. For multiple word identifiers that cannot contain spaces by rule, a process called Camel Case is used, where the initial letter of each word is capitalized to help better see the multi-word identifier. Constants, by convention, are completely uppercased, and are easily recognized as such when someone is reading through the code. For multi-word constants, and underscore is used for separation instead of using Camel Case style. Finally, it is a good idea to create identifier names and phrases that are meaningful to their purpose, which serves as internal documentation within the code itself, helping the code reader to better understand the purpose of the code. For example, firstName is immediately recognizable as an identifier intended to contain someone's first name. Another good idea is to abbreviate, to a certain extent, identifiers which tend to get too long. This avoids the cumbersome task of having to type those long identifiers during coding. However, too much abbreviation, especially the use of one or two character identifiers, should be avoided for any identifiers with significant meaning, and restricted to variables used for utility purposes, such as loop control or array indexing.
Input Protection and Data Validation
These two ideas go hand in hand in the development of robust software. Protecting against bad data entering a software process includes some way of testing a piece of data to make sure it is in the proper form, such as making sure that someone's name is actually a string of characters, and not a numeric value, or that someone's age is indeed a valid number, and not a word or phrase.
Polymorphic Objects
This aspect of polymorphism refers to how a parent object can reference any of its child objects, or any descendant several levels of inheritance down the way.
Object
This is an instance of a Class created during program execution that encapsulates data and related actions or processes, often called methods.
Class
This is the definition of an Object, describing the type of data owned by the object, as well as methods that act on that data.
Analysis
This is the initial stage of the SSLC, where general questions are asked and answered about the needs and goals of the software project
Design
This is the next stage of the SSLC, where decisions from the analysis stage are taken to the drawing board and an appropriate design for the project is determined. This stage uses one or more approaches, e.g., top-down, bottom-up, or object oriented design.
Unix (trademarked as UNIX)
Unix is a family of multitasking, multiuser computer operating systems that derive from the original AT&T. Unix, developed in the 1970s at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others. (https://en.wikipedia.org/wiki/Unix)