The exam will be in class, and you will have the full time to complete it. A well prepared student will have no problems being done in 120 minutes. It will be closed book, closed notes, closed laptops, closed cell phones, closed bricks, closed everything and no discussions allowed with class mates during the exam.
Here is a list of topics that you should be able to explain or use in a program. Understanding these topics well will help you do well on the exams.
This is a guide, not a guarantee. I intend for it to help you, but questions on the exam can come from any material we have studied in this class.
basic data (number, string, boolean) operations on each type all of the "big 6" topics 1) data storage to memory: variables, assignment 2) data retrieval: expressions, evaluation 3) decision making: conditional statements comparisons, boolean conditions if-then if-then-else if-then-elseif-elseif-else switch 4) repetition: loops definite loops (for) indefinite loops (while) break statement to end a loop return to end a loop (and end execution of a function) 5) procedure abstrations: writing functions functions are first class objects a function can be assigned to a variable calling functions understand how parameters are passed from the calling function to the called function understand how return values are sent back from the called function to the calling function 6) data abstraction: aggregation (arrays) creating arrays using arrays (indexing, using for loop to access all items) getting length of array objects what they are: sort of an abstraction of an entire program data and functions combined, wrapped up data field (variable in an object) method (function in an object) objects how we create one how to initialize one how to use one, how to access the data fields and call the methods return data as a group with an object (that has no methods) constructors: functions that "manufacture" and return new objects arrays of objects object that contains an array as a data field what you learned in your assignments: sorting (bubble sort) searching linear search through an array binary search (number guessing game) finding prime numbers (sieve of eratosthenes) scope: visibility of names local scope variables declared inside a function parameters inside a function global scope functions at the top level variables declared outside of all functions (we dont use these) object scope using "this" to access a data field from inside a method input mechanisms prompt statement getting text from input fields on the HTML page "parsing" text using string.split output mechanisms alert statement (useful when debugging) sending text back to fields on an HTML page canvas drawing converting text to numbers recursion... what is it, why we use it, what is the basic coding pattern for a recursive function simple example (factorial) simulated execution show memory map for local variables show how variable values are assigned and change show how memory maps are created for a function call show how parameters are passed when function is called show how return values are sent back to calling memory map good coding practices using named constants instead of explicit numbers in code named constant is a variable that is initialized and then not re-assigned, so its value does not change write a few lines of code, compile, and test dont write a large block of code and hope it all works grow a program a little piece at a time add capabilities one thing at a time input data validation comment the code at places that could be hard to understand dont use global variables (unless you are testing and are using them temporarily) write functions to prevent replicating blocks of code throughout your source code write functions to make code more compact and easier to read abstract away some details into the function body