Introduction to Scientific Computation and Programming
1. WHAT IS COMPUTATION? Computation as Transformation. Computation as Reaction to Events. Algorithms. From Algorithms to Software. Exercises. 2. INVOKING A COMPUTATION. Expressions and Commands. Changing State: Assignment. A Variety of Notations. Parsing. Exercises. 3. SIMPLE TYPES: NUMBERS, TEXT, BOOLEANS. The Organization of Computer Memory. Text. Collections of Numbers and Plotting. Booleans: True or False. Logical Operators: Boolean Operators with Boolean Inputs. Example: Measuring Information in Bits. Exercises. 4. NUMBERS AND PRECISION. The Precision of Computer Arithmetic. Example: Global Positioning. Exercises. 5. COLLECTIONS AND INDEXING. Indexing. Matrices. Mixed Data Types. Exercises. 6. FILES AND SCRIPTS. Filenames. File Operators. Importing and Exporting Data. Scripts. Scripts as Computations. Exercises. Project: Time for a Cool Cup of Coffee. 7. FUNCTIONS. Computations without Effects. Creating Functions. Functions as Arguments and Values. Exercises. 8. CONDITIONALS. The if Statement. More Than Two Cases. Completeness and Exclusivity. Switch/Case. Advanced: Parallelization of Conditional Operators. Exercises. Project: The Morse Code. 9. LOOPS. For Loops. Accumulators. Nested Loops. Example: Optimal Matching with Nested Loops. Element-by-Element Operators. Outputs of Unknown Size. Loop Termination. Conditional Looping. Example: Measuring Information II. Dimensions and Arrays. Exercises. Project: Cellular Automata. Project: The Mandelbrot Set. 10. SCOPE. Environments and Scope. The Debugger. Shared Environments. Scoping of Functions. Pass by Reference. Exercises. 11. EVENTS. Activating Input Devices. Example: Recording the Times of Events. Example: Exploring the Mandelbrot Set. Inputs without Waiting. Warnings and Errors. Testing Functions. Optional and Default Arguments. Exercises. 12. ARRANGING DATA: SEARCHING AND DATABASES. Datasets. Selecting Subsets from Lists. Efficient Searching for Matches. Combining Lists: Union and Intersection. Tables. Simultaneous Collection and Access of Data. Databases. Exercises. Project: A Bridge Database. 13. TREES AND RECURSION. Simple Recursion. Multiway Recursion. Accumulators. Example: Optimal Matching (Recursive). Trees as Data Structures. Processing Trees. Example: Huffman Encoding of Information. Exercises. Project: Clustering of Data. 14. SOUNDS AND SIGNALS. Basics of Computer Sound. Perception and Generation of Sound. Synthesizing Complex Sounds. Transduction and Recording Sound. Aliasing and the Sampling Frequency. Exercises. Project: The Perception of Beats. Project: Speeding Up Sound. 15. IMAGES. Black-and-White Images. Color. Digital Sampling of Images. Sampling and Storing Images in Files. Manipulating and Synthesizing Images. Example: Mona Lisa's Missing Blue. Exercises. Project: Landsat Images and False-Color. 16. MATHEMATICAL RELATIONSHIPS WITH ONE UNKNOWN. Representing Mathematical Relationships. Zeroing in on Solutions. Derivatives. Going to the Extreme: Optimization. Fitting. Interpolation. Exercises. 17. MATHEMATICAL RELATIONSHIPS WITH TWO OR MORE UNKNOWNS. Visualizing Functions of Two Variables. Geometry of Functions: The Gradient. Optimization Using the Gradient. Finding Solutions. Solutions to Systems of Linear Equations. Best Solutions to Linear Systems. Solutions to Systems of Nonlinear Equations. Exercises. 18. FROM EQUALITY TO SIMILARITY: RANDOMNESS AND VARIATION. A Classification Problem. Describing Distributions. Processes and Distributions. Why the Gaussian is Important. Multiple Variables. Example: Handwritten Digit Recognition. Exercises. Project: Sums of Gaussians and Segmentation of Images. APPENDICES. Color Plates. ASCII Characters. Computations on Vectors and Matrices.