This page is tentative and subject to change
Abstraction
We haven't formally covered this concept in class but it's an important concept that we can discuss in hindsight. Abstraction is a "general purpose" means of capturing similarities while ignoring superfluous details. For example, a filtering algorithm can be designed and used to keep or discard data. When we consider the algorithm we can ignore the details of the data (whether it's temperature data, sound data, etc.). Procedures exemplify abstraction; they are designed to work in a general-purpose way with a wide variety of different inputs. The current version of Scratch is not very good at abstraction. It has no procedures. It also has no objects. If it did, one could create a template for a Sprite (say a Fish) and then create many "instances" of it (multiple fish that are similar in many respects but still have some individual data such as x and y position). The ability to think abstractly is a key "computational thinking" skill. Programming effectively with abstraction reduces duplication and leads to highly streamlined and powerful data structures and processes.
Algorithm: a finite, step by step procedure for accomplishing a task.
pre-conditions, post-conditions
loop invariant
running time (# steps to complete algorithm based on size of data (n))
Design Concepts
design as an exploratory and iterative process
procedural animation (using computation to make things move)
procedural modeling (using computation to build things, e.g. a 2D or 3D form)
RGB, n-bit color has n bits each for red, green, blue
pixel
descriptive terms such as balance, contrast, positive and negative space, detail, etc.
Programming Languages
compiled languages (e.g. Java) vs. scripting languages (e.g. HTML, CSS, Javascript)
advantages/disadvantages of compile/scripting languages
data structures
array: fixed size, can quickly access any element in one step (e.g. myData[500])
list: can grow and shrink dynamically (at runtime when the program is running);
can not access each element in one step (must start at beginning or end) although
Scratch and App Inventor make it seem like you can (e.g. ITEM 500 of MYLIST)
advantages/disadvantages of arrays/lists
function/procedure/method
function definition vs. function call
function definition has header with input parameter list and a body
function body may have one or more return statements
value of a function call is the value returned by the function (e.g. value of sum(2,3) is 5)
iteration
loop
nested loop
(Note: we did not touch much upon the "object oriented" nature of Java)
Web Programming
client side computing, server side computing
CSS (no need to know individual commands, just the purpose of Cascading Style Sheets)
HTML (know tags in basic.html handout)
Java applets (Java programs such as Processing programs capable of being displayed on the web)
Javascript (no need to know individual commands. know that it is a client-side
scripting language interpeted by a browser)
mashup: combination of two or more web services, e.g. a large data set fed to Google Maps
cloud computing