Serious Programming - small courses
- Date:
Aug 17, 2025
- Author:
Mark Galassi <mark@galassi.org>
- Author:
Leina Gries <leinagries@gmail.com>
- Author:
Sophia Mulholland <smulholland505@gmail.com>
- Author:
Almond Heil <almondheil@gmail.com>
Contents:
- 1. Motivation and plan
- 2. Starting out - data files and first plots
- 2.1. Motivation, prerequisites, plan
- 2.2. Very first data plots with gnuplot
- 2.3. Plotting functions with gnuplot
- 2.4. Reading and writing files, in brief
- 2.5. Generating our own data to plot
- 2.6. The broad landscape of plotting software
- 2.7. Data formats
- 2.8. Simple surface plots
- 2.9. Topics we have covered
- 3. Intermediate plotting
- 4. A tour of functions
- 5. Advanced plotting
- 6. Fitting functions to data
- 7. Case studies in data
- 8. Special numbers: \(\pi\)
- 9. A workshop on programming by yourself (!)
- 10. Random number basics
- 11. Randomness and Disorder
- 11.1. Experiment: burn a match
- 11.2. Experiment: ink in water
- 11.3. Discussion on “ink in water” experiment
- 11.4. Flipping a single coin
- 11.5. Review: random numbers in Pythyon
- 11.6. Experiment: flipping a single virtual coin
- 11.7. Flipping multiple coins
- 11.8. Experiment: flipping virtual coins
- 11.9. Experiment: back to physical coins - disorder
- 11.10. The drunk fencer
- 11.11. The drunkard’s walk
- 11.12. Matplotlib animation of a random walk
- 11.13. Making a movie from walk frames
- 11.14. Discussion
- 11.15. Further reading and videos
- 12. Random Processes
- 13. Power laws, Zipf, Benford, …
- 14. Pushing toward calculus
- 14.1. Motivation and plan
- 14.2. Prerequisites
- 14.3. Limits, the infinitely big, and the infinitesimally small
- 14.4. Continuous functions
- 14.5. Convergence and divergence
- 14.6. Weird mixes
- 14.7. Limits of some functions
- 14.8. The limit of a series
- 14.9. The most important application: derivatives
- 14.10. Visualizing derivatives with an animation
- 15. Numerical integration
- 16. Differential Equations
- 16.1. Motivation, Prerequisites, Plan
- 16.2. Derivatives
- 16.3. Definitions
- 16.4. An Example
- 16.5. Population Growth
- 16.6. Euler’s Method
- 16.7. Compiling and running C programs
- 16.8. A program to use Euler’s method
- 16.9. Second Order Differential equations
- 16.10. Falling Body
- 16.11. The harmonic oscillator
- 17. Ecology
- 18. Biology – phylogeny
- 18.1. Motivation, prerequisites, plan
- 18.2. Start with a video and then make a simple table
- 18.3. Terminology
- 18.4. First steps with biopython
- 18.5. Downloading the datasets
- 18.6. Preparing a tree by hand
- 18.7. Inferring a tree
- 18.8. Other sequence analysis resources
- 18.9. Linguistics datasets
- 18.10. Evolution of programming languages
- 19. Recursion
- 20. Programming topics: sorting
- 21. Birthday paradox
- 22. Optimal Stopping
- 23. Graphical user interfaces
- 24. Drawing on a canvas
- 25. The Traveling Salesman
- 26. Basic agent-based modeling
- 27. Emergent behavior
- 28. Web scraping
- 29. Getting to philosophy
- 30. Music basics
- 30.1. Motivation, prerequisites, plan
- 30.2. What is sound?
- 30.3. How is sound generated?
- 30.4. Measuring and recording
- 30.5. What is music
- 30.6. Understanding what we plot in an amplitude plot
- 30.7. How does the GNU/Linux microphone work?
- 30.8. Generating your own musical tone
- 30.9. File formats
- 30.10. Converting our ascii music
.dat
files to other formats - 30.11. Effects filters
- 31. Collecting mp3s
- 32. Computer art
- 33. Image filtering
- 33.1. Motivation, prerequisites, plan
- 33.2. Manipulating images with command line programs
- 33.3. How computers store images, disk and memory
- 33.4. First example: blurring and other effects with PIL
- 33.5. The cycle of training and running an AI system
- 33.6. Miscellaneous examples in various areas
- 33.7. Learning OpenCV
- 33.8. Using tensorflow with ImageAI to find objects
- 33.9. Using tensorflow from their own tutorials
- 34. Cryptography
- 35. Other languages - Go
- 36. Appendix: An itinerary for guest lectures
- 37. Appendix: How to build the book
- 38. Appendix: How to add a chapter
- 38.1. Anatomy of the chapter
- 38.2. The chapter: Title
- 38.3. The chapter: frontmatter
- 38.4. The chapter: The problem
- 38.5. The chapter: Plots
- 38.6. The chapter: The quadratic formula
- 38.7. The chapter: Numerical approximation
- 38.8. The chapter: Applications
- 38.9. Exercises for the chapter
- 38.10. Further study
- 39. Appendix: Project proposals
- 40. Appendix: Proposed chapters
- 41. Copying and legal matters
Indices and tables
Glossary
Bibliography
J Backus. Musical note to frequency conversion chart. http://www.audiology.org/sites/default/files/ChasinConversionChart.pdf, 1977. Accessed: 2016-05-06.
Alistair Bird. Apiological: mathematical speculations about bees (part 3: travelling salesman). http://aperiodical.com/2015/03/apiological-part-3/, 2015. Accessed: 2015-03-19.
Mark Galassi. Serious Programming Teacher's Manual. web, 2015.
Christopher M Graney. Doubting, testing, and confirming galileo: a translation of giovanni battista riccioli's experiments regarding the motion of a falling body, as reported in his 1651 almagestum novum. arXiv preprint arXiv:1204.3267, 2012.
Steven Pinker. The better angels of our nature: Why violence has declined. Penguin, 2011.
Carmen M Reinhart and Kenneth S Rogoff. Growth in a time of debt (digest summary). American Economic Review, 100(2):573–578, 2010.
Caiping Zhang, Jiuchun Jiang, Linjing Zhang, Sijia Liu, Leyi Wang, and Poh Chiang Loh. A generalized soc-ocv model for lithium-ion batteries and the soc estimation for lnmco battery. Energies, 9(11):900, 2016.
Copyright (C) 2017-2022 Mark Galassi, Leina Gries, Sophia
Mulholland, Almond Heil.
This work is licensed under the Creative Commons
Attribution-ShareAlike 4.0 International License. To view a copy
of this license, visit
http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.