CSC151.01 2006S, Class 56: Wrapup
Admin:
* Congrats to Jose and Alexi for the best solutions to problems 1 and 2, respectively.
* Good luck on your finals.
* Our final: 9 a.m. Tuesday.
* If you want to take the final at a different time, you need to get the form to me today!.
Overview:
* The subject matter of the course.
* Evaluation forms.
* Final comments.
/The Subject Matter of the Course/
//The Scheme Programming Language//
* Basics:
* Use define or let to name things
* Write functions using lambda
* Variable-arity functions use variant syntax
* Types (and procedures on those types)
* Numeric types (integers, reals, complex, ...)
* Symbols
* Strings
* Characters
* Lists
* Vectors
* Procedures
* Ports
* ...
* A host of procedures: (At least fifty, perhaps up to 100)
* Collections
* Vectors as mutable fixed size collections
* Lists are fixed content dynamic size collections
* Trees are just weird
* Recursion
* ...
* High-level idea:
* You can build most Boolean functions from and, or, and not.
//Functional Programming//
* Functions can be parameters to other functions
* Functions can return other functions
* Core higher-order functions:
* map
* left-section and right-section
* compose
* fold
* apply
* Anonymous functions
* Principle that functions should not mutate their parameters
//Computer Science//
* Binary search (is the coolest concept ever)
* A great idea of computer science
* Supports the more general idea of "divide and conquer"
* And other techniques for searching
* Algorithms in general
* Sorting algorithms
* Quicksort
* Merge Sort
* Selection Sort
* Insertion Sort
* Algorithm analysis (by running and counting steps)
* Unit testing for "verification"
* Job areas (agh! we don't talk about this at Grinnell)
* Find and fix bugs
* Objects and a bit of OOP
* A bit about what else people do in CS
* Work from the base case upwards as a problem solving technique
"Bottom-up programming"
//General Skills//
* Think on your feet.
* General problem solving - Turning a problem into an algorithm into code
* Solve statistical problems (and visualize them)
* Think about overarching concepts
* Dealing with mean facutly members who won't let any stupid subject drop
* Group work is important
* Moving from theory to practice
* Persistence and patient
* Interacting with other people
COMPUTERS ARE SENTIENT AND MALICIOUS