Skip to content
Read
Menu Toggle
Chapter 0: Ancient Greek Math and the Foundations of Computer Science
Chapter 1: Hunting for Hidden Messages in Bacterial Genomes
Chapter 2: Forecasting a Presidential Election
Chapter 3: Discovering a Self-Replicating Automaton
Code
Menu Toggle
Chapter 0
Menu Toggle
Python Code Alongs
Go Code Alongs
Chapter 1
Menu Toggle
Python Code Alongs
Go Code Alongs
Chapter 2
Menu Toggle
Python Code Alongs
Go Code Alongs
Chapter 3
Menu Toggle
Python Code Alongs
Go Code Alongs
Practice
Menu Toggle
Chapter 0 Practice Exercises: Integer Fun and Unsolved Mathematical Questions
Chapter 1 Practice Exercises: Quantifying Microbial Diversity
Chapter 2 Practice Exercises: PRNGs and Monte Carlo Simulation
Chapter 3 Practice Exercises: The Gray-Scott Model and Turing Patterns
About
Search for:
Search
Search
Main Menu
Philomath Welcome Page
Programming for Lovers Transition
About
Contact
Search Results
Thank You!
Home
Chapter 0: Ancient Greek Math and the Foundations of Computational Thinking
Menu Toggle
Chapter 0 Core Text
Introduction: Two 2,300 Year Old Problems
Algorithms and Greatest Common Divisors
A Painless Intro to Pseudocode and Control Flow
Loops and the Trivial GCD Algorithm
Euclid’s Insight Leads to the World’s First Nontrivial Algorithm
Eratosthenes, Primes, and the World’s Second Nontrivial Algorithm
Chapter 0 Python Code Alongs
Installing Python and Writing Our First Program
Variables in Python
Functions in Python
Conditionals in Python
While Loops in Python
For Loops in Python
Implementing GCD Algorithms in Python
Arrays (Tuples and Lists) in Python
Prime Finding Algorithms in Python
Chapter 0 Go Code Alongs
Installing Go and Writing Our First Program
Types and Numeric Variables in Go
Functions in Go
Conditionals in Go
While Loops in Go
For Loops in Go
Implementing GCD Algorithms in Go
Arrays and Slices in Go
Prime Finding Algorithms in Go
Chapter 0 Java Code Alongs
Chapter 0 Practice Exercises: Integer Fun and Unsolved Mathematical Questions
Chapter 1: Hunting for Hidden Messages in Bacterial Genomes Using String Algorithms
Menu Toggle
Introduction: The Most Beautiful Experiment in Biology
Two Problems Related to Bacterial Replication
Hidden Messages in the Replication Origin
An Explosion of Hidden Messages
A Surprising Insight Leads Us to the Replication Origin
Some Hidden Messages are More Elusive than Others
Chapter 1 Python Code Alongs
An introduction to Strings in Python
Substrings and Sublists in Python
Dictionaries in Python
Finding Frequent Words in Python
Finding Clumps in Python
Building a Skew Array in Python
Chapter 1 Go Code Alongs
An Introduction to Strings in Go
Substrings and Subslices in Go
Maps in Go
Finding Frequent Words in Go
Finding Clumps in Go
Building a Skew Array in Go
Chapter 1 Java Code Alongs
Chapter 1 Practice Exercises: Quantifying Microbial Diversity
Chapter 2: Forecasting a Presidential Election with Monte Carlo Simulation
Menu Toggle
Introduction: Polls and the 2016 US Presidential Election
Computing the House Edge of Craps Using Monte Carlo Simulation
Pitfalls of (Pseudo)Random Number Generation
Rolling Dice and Completing our Craps Simulator
Simulating a Presidential Election
Chapter 2 Python Code Alongs
Generating “Random” Numbers and Rolling Dice in Python
Simulating Craps with Monte Carlo Simulation in Python
Parsing Election Polling Data from Files in Python
Simulating an Election from Polling Data in Python
Chapter 2 Go Code Alongs
Generating “Random” Numbers and Rolling Dice in Go
Simulating Craps with Monte Carlo Simulation in Go
Parsing Election Polling Data from Files in Go
Simulating an Election from Polling Data in Go
Chapter 2 Java Code Alongs
Epilogue: A Reflection on the Nature of Election Forecasting
Chapter 2 Practice Exercises: PRNGs and Monte Carlo Simulation
Chapter 3: Discovering a Self-Replicating Automaton with Top-Down Programming
Menu Toggle
Introduction: Self-Replicating Machines and the Fermi Paradox
The Game of Life
A Reintroduction to Top-Down Programming
Implementing the Game of Life with Top-Down Programming
Building a Self-Replicating Cellular Automaton
Chapter 3 Python Code Alongs
Introduction to Two-Dimensional Arrays in Python
An Introduction to Graphics in Python
Drawing a Game of Life Board in Python
Implementing the Game of Life in Python
An Infinitude of Cellular Automata, including the Self-Replicating Langton Loops in Python
Chapter 3 Go Code-Alongs
Introduction to Two-Dimensional Arrays in Go
An Introduction to Graphics in Go
Drawing a Game of Life Board in Go
Implementing the Game of Life in Go
An Infinitude of Cellular Automata, including the Self-Replicating Langton Loops in Go
Chapter 3 Java Code Alongs
Chapter 3 Practice Exercises: The Gray-Scott Model and Turing Patterns
Chapter 4: Building a Gravity Simulator with Object-Oriented Programming
Menu Toggle
Introduction: Empty Space and Unstable Suns
An Introduction to Object-Oriented Programming and Abstraction
Planning a Gravity Simulator Top-Down
A Primer on Newtonian Dynamics
Finishing Our Gravity Simulator and “Solving” the Three Body Problem
Chapter 4 Python Code Alongs
An Introduction to Classes in Python
Reading and Drawing a Universe in Python
Building a Gravity Simulator in Python
Chapter 5: Evolutionary Trees and More Object-Oriented Programming
Menu Toggle
A Tale of Two Doctors
Using Distance Matrices to Build Evolutionary Trees
Fitting a Tree to a Matrix
UPGMA: An Evolutionary Tree Heuristic
Implementing UPGMA with Object-Oriented Programming
Recursion Helps Us Finish UPGMA and Apply it to Real Data
Chapter 5 Python Code Alongs
Returning to Shapes: An Introduction to Methods and Deep Copy
Data for Trees in Python
Implementing UPGMA in Python
Chapter 4: Building a Gravity Simulator with Object-Oriented Programming
Scroll to Top
Join our community!
Join our course to receive email course announcements and information on how to earn a certificate.
Leave this field empty if you're human:
Join our community!
Join our course to receive email course announcements and information on how to earn a certificate.
Leave this field empty if you're human:
Chapter Contents
×