Programming Paradigms via Mathematica: Table of Contents Chapter I. Introduction to Mathematica and to Programming 1. Arithmetic: Syntax, Data Types, Operators, and Expressions Data types, arithmetic types (integers, real numbers), boolean values, operators, operator precedence, and expressions 2. Course Goals and Themes Mathematica as an interpreted language, source code, tradeoffs, algorithms, dynamic programming, Newton's method, NSolve, FindRoot 3. Defining Variables and Functions Cell styles and groups; Set, SetDelayed, and Equal; formal and actual parameters; incrementing and decrementing variables Chapter II. List-Based Programming 4. Introduction to Lists and Using Programming Principles Bottom-up and top-down programming, simulating a student roster; Table, Range, Sum, Show, Union 5. Lists I: Definitions and Examples Four programming paradigms, examples of lists used in recursion and iteration; Length, Part, Position, Map, Reverse, Transpose 6. Lists II: Iterators and List Handlers Iterators; list-generating functions (List, Table, Range), list-extracting functions (Part, Take, Drop), ``Verb" vs.~``Adverb" Functions (Sum vs.~Apply) 7. Lists III: Repetition with Lists Repetition with feedback, repetition without feedback; Nest, Fold 8. Strings; Strings as Lists Data types, ASCII codes, special characters, string functions, strings as lists, converting numeric strings into numbers Chapter III. Structured Programming: Local, Global, and Anonymous Names 9. Modules Organization, side effects, constants vs.~variables, nesting, scope I 10. Anonymous Functions Anonymous functions, compilation II, comparison with ``inline" functions in C, using modules vs.~anonymous functions; Select, First, Last, Q functions Chapter IV. Pattern Matching in Symbolic Programming 11. Pattern Matching and Conditional Evaluation Pattern matching, multi-clause definition, conditional evaluation, examples in data type checking and step functions, structured patterns I 12. Structured Patterns Structured patterns II, patterns with conditions, multipart arguments and record, optional arguments 13. Reprise: Syntax and Data Types Reading code, operator associativity, machine- vs.~arbitrary-precision Chapter V. Conditional and Recursive Programming 14. Conditional Structures Controlling execution without patterns; If, Which, Switch 15. Review I 16. Recursion I: Passing the Buck Recursion, examples of recursion, nonexamples of recursion 17. Recursion II: Examples and Dynamic Programming Dynamic programming, tradeoffs of time vs.~space, examples Chapter VI. Iteration in Procedural Programming 18. Iterative Loops I: While Iterative loops, error handling, pitfalls, short-circuit evaluation; While 19. Iterative Loops II: Do, For Do, For; when to use which iterative structure, examples 20. Arrays and Matrices Arrays, sizes, initialization, modification Chapter VII. Technical Programming Concepts 21. Function Calls Call by value, by reference, tradeoffs of time vs.~space II; HoldAll, HoldFirst 22. Compilation Compilation III, actual storage data types; Compile, Timing 23. Contexts and Packages Scope II, default and special contexts, long forms of names 24. Object-Oriented Programming Basic ideas of OOP, public vs.~private, example of a grade manager 25. Files and Representations of Data Files, file commands, checking that file is appropriate Chapter VIII. Toward Other Languages 26. The C Language Data types, declarations, definitions, control structures, reading C Chapter IX. Special Topics 27. Fits and Graphics