CSC151 2007S, Class 54: Wrapup Admin: * Try to take care of yourselves this week! (But still show up for my class on Friday!) * As I reflect on my workload for the week, I note that it is unlikely that I will get you any sort of grades until Friday (or even then). Sorry. * I'll be distributing a permission form for us to use your work in various ways. Overview: * The subject matter of the course. * Course evaluation. ==Permission Forms== * Why? * What assignments? + Spirographs + Project ==The Subject Matter(s) of the Course== ===Programming in Scheme=== * It's a programming language that we can use to interface with a graphics environment to build really cool images and such. * Use define to name values * Lists are a core data structure, and we can build and use them with cons, car, cdr, null, etc. * Basic data types in Scheme: Symbols, strings, characters, numbers * Code reading: How to look at a Scheme program and figure out what it does. * Local definitions with let, let*, letrec, and named let * Define procedures using define and lambda * Conditionals and Booleans: and, or, cond, if * Anonymous procedures * Trivia: Scheme is a dialect of LISP * Annoying trivia: Doing lots of set-pixel! commands is annoyingly slow. * As are many other things * map * Files ===Programming and Program Design Concepts=== * Programs are built from a variety of data types * Make choices with conditionals * And use Booleans to represent the test * Named kernels let us protect stuff * Techniques for diagnosing errors * Files as linear sequences of values * Code is called code for a reason: Document * Randomness CAN BE your friend ===Ways of thinking about Images=== * Through GIMP tools * Through Turtles * Through weirdo things like image-compute-pixels! * Ways to store images * And to do so more efficiently ===Functional Programming=== * Anonymous procedures * Higher-order techniques like compose * map as a way to do something to every element in a collection ===Computer Science Concepts=== * Multiple ways to build collections of data, with different adv. and dis. * Eg. lists and vectors * We can repeat operations using RECURSION * "Structural" recursion: Over data strutures like lists and trees and files * Numeric recursion: Over numbers * Solve large problems by decomposing + Find small problems that contribute + Divide and conquer * Limit accessibilty to data * Searching * Binary search * Association lists * Sorting * There are usually lots of ways to solve the same problem * So we have techniques for comparing solutions * Particularly efficiency ===Beyond CS: General Concepts and Skills=== * General problem solving skills * Logic * Teamwork: Two heads are often better than one * Thinking on your feet * But it's okay to say "I'm not sure" * Care about each other * "There's more to life than CS" (or any academic subject) * Have fun!