This is intended to give you a sense of what I think is important from the course so far, and what I will be thinking of when creating the exam. I hate disclaimers, but here are some anyway. This is not a contract. I may have inadvertently left something off this list that ends up in an exam question. I make no guarantees that the exam will be 100% limited to items listed below. Moreover, I will not be able to test all of this material given the time limitations of the exam. I will have to pick and choose some subset of it. You are permitted one 8.5 x 11 sheet of paper with notes (both sides) for use as a reference during the exam. Here are the specifics: Students should be able to... Demonstrate that they understand what an algorithm is. Demonstrate that they understand the distinction between compiling, running, and interpreting a program, and what happens in each case. Demonstrate that they understand how arithmetic is done in Python, including +,-,*,/,%. Demonstrate understanding of how arithmetic is done for both ints and floats. Ability to correctly round off numbers. Demonstrate ability to cast (convert) from one type to another, knowledge of what this means, and when it is necessary. Demonstrate that they can write Python code to appropriately take input from the user and do something with it. Demonstrate ability to write code to render graphics (shapes) based on user input and calculations. In other words, demonstrate the sorts of skills necessary to succeed on the cloud/sun/moon assignments. My goal is not to test detailed memorization of the graphics library, but rather the ability to use it to do interesting things. They should already know how to make a graphics window appear, but I will provide copies of the appropriate portions of the graphics.py documentation (currently linked on Moodle) that are relevant. Demonstrate understanding of how characters are ultimately represented, and show ability to use such knowledge for computational purposes (including ord and chr functions in Python). Demonstrate ability to process strings and substrings for producing desired results, including extracting portions of strings, changing case (upper/lower case), and manipulating to transform into different forms. Be able to open a file containing input information to a program and process it appropriately. Be able to generate random numbers in Python. Demonstrate understanding of the difference between pseudo-random and random numbers, and the role that a seed plays. Demonstrate ability to interpret and utilize conditional statements work ("if"). Demonstrate understanding of differences between =, ==. Can construct and/or interpret complex usages of "if", "elif", and "else". Demonstrate ability to interpret and utilize "for" loops. Be able to write a function to perform a specified task. Be able to correctly predict results from a program that utilizes functions, parameters, and local variables.