The difference in a network between client programs and server programs. Could you distinguish which of several programs you might use frequently is an Internet client?
Explain URLs and what the parts mean (e.g. www.cc.gatech.edu/index.html). This is in the book.
Be able to explain (but not write) a simple program that opens a connection to a website and processes the HTML.
Understand the difference between turtle geometry and coordinate geometry. (Be able to describe the difference in viewpoint or the way in which a simple geometric shape is drawn using turtle commands versus the picture function drawLine.)
Working knowledge of all the basic movement commands: forward, backward, turn, turnLeft and turnRight. You should be able to program a turtle to draw a basic geometrical shape, and conversely be able to draw a shape that is drawn by a turtle program that you are given, including correctly showing the turtle's final orientation.
Knowledge of the penUp and penDown commands. You should be able to write a drawing program and draw the output of a drawing program that you are given that includes phases during which the turtle is drawing with the pen down and the pen up.
You should be able to create a world for turtles and create more than one turtle, correctly directing different turtles to draw a composite shape (e.g. one turtle draws a square to the left and another goes to the right.)
You should understand the meaning of additional turtle commands, such as getXPos, getYPos, setBodyColor, setShellColor, etc. and the world function getTurtleList. You won't have to be able to memorize them and use them in programs, but you should understand them well enough to answer questions about programs in which they appear.
Demonstrate understanding that most of the turtle functions are also available in JES as methods using dot notation (and that this also applies to non-turtle functions with which you are familiar, such as picture functions/methods.) E.g. you should be able to rewrite a turtle function that is given in function-call notation using the corresponding method calls and vice versa.
Show that you understand the effect of introducing randomization into turtle drawing (e.g. turning by about 90 degrees instead of exactly 90 degrees).
You should know the difference between a module like random and a class like String. The items that appear before the dot in dot notation can be modules or objects.
Explain the difference between classes and objects (individuals) and the difference between an object being an instance of a class versus one class being a subclass of another. Be able to give an examples of these concepts and the differences between them. (Hint: we used breeds of dogs and named pets as examples of subclasses and instances.)
Creating ("instantiating") an object using constructors. You don't need to know how to write constructors, although this was shown in class, but you do need to know how to use them.
Python syntax for classes and method definitions within classes. You should be able to fill in the blanks of a simple class definition and answer questions about one.
Understand the basic concept of recursive function calls and the need for base cases.
Given a simple recursive function definition (e.g. factorial) you should be able to trace the values, e.g. by saying what would be printed from embedded print statements.
Why are some programs faster than others? Be able to list several factors that affect speed and distinguish them from factors that are unlikely to affect speed.
You should be able to explain why different algorithms perform very differently and why the Traveling Salesperson problem is impossible to solve in practice. You won't need to reproduce any mathematics to justify your answer.
What is Moore's Law? Be able to apply it to situations.