CSC151 2007S, Class 55: Wrapup Admin: * I will distribute project grades and your estimated grades after class. * Friday's class is optional. * If you need the extra time to work on other classes, I'll certainly understand. * I will, however, provide refreshments as an incentive to attend. * Please let me know by the end of class on Friday whether or not you plan to take the final examiniation. * If you need help computing what grade you need on the final, please stop by and see me. * 9 a.m. on Wednesday * We'll spend a few minutes going over yesterday's extra activity. Overview: * The subject matter of the course. * Evaluation forms. * Final commentsa /The Subject MatterS of the Course/ //The Scheme Programming Language// * Defining functions * Key types and the procedures that manipulate those types integers, reals, vectors, lists, booleans, strings, ... * Let * Writing programs that run w/o DrScheme * 80% or so of everything in Scheme //Programming Techniques// * Recursion * Local helpers (kernels, lets, etc.) * Husk and Kernel * Techniques for debugging * Check your parens if you program in Scheme * Make it reindent and check the indentation if you program in Scheme * Think about types * Print print print * Test test test * Start with the base case and build up * Write a little at a time //Computer Science// * Recursion * Higher-order techniques * Key sorting algorithms (e.g. Quicksort) * Binary search, other sorting algorithms * You can express everyday problems as algorithmic problems, and write algorithmic solutions * There's more than one solution to a problem * Philosophical model of open source programming * Write preconditions and postconditions that carefully specify purpose * Why and how * It's important to deveop test suites * Three or so paradigms of computing: Object-oriented, functional, imperative * Divide and conquer * Different ways to represent data: Trees, Lists, Files, Vectors //Beyond Computer Science// * Working in teams * Computers are Sentient and Malicious * When things go wrong, it's not your fault * There's more than one solution to a problem * Sometimes the best way to get unstuck on a problem is to have someone else look at it too * The best way to learn is sometimes to ask questions * It's okay to say "I don't know" * You are more likely to learn if you do the assigned work * And the constructivist perspective does work * Have fun with what you do * Support your colleagues and realize that they are people * There's more to life than CS //Other// * Graphics manipulation, manual and programmatic, with GIMP * Using the incredibly intuitive Linux operating system * MathLAN has the best printers on campus * Don't say good morning to Sam, he'll just give you a snarky response * Emily whines when Sam missssspellls words * Patience is a virtue, particularly with sentient and malicious computers