This is the personal website of Dr. Kenneth Kuttler. You can download these books as a PDF, or read them online without downloading.
If you view the books online the website will keep track of where you were at in each respective book so you can come back and continue reading where you left off.
This is an introduction to complex numbers. It includes the mathematics and a little bit of history as well. It is intended for a general audience. The necessary background in a familiarity with ordinary real numbers (all positive and negative numbers and zero) and algebra.
Data Structures and Algorithms is about solving problems efficiently. A bad programmer solves their problems inefficiently and a really bad programmer doesn’t even know why their solution is inefficient. So, the question is, How do you rank an algorithm’s efficiency?
The simple answer to that question is the Big O Notation. How does that work? Let me explain!
In general, an automaton is a process for updating an array of cells where each cell is in one of a finite number of states and updating is according to a rule based on local neighborhoods and that rule is applied to every neighborhood. General introductions include [5-7]. The Game of Life is a 2-dimensional automaton that evolves from generation to generation using the following rule on each 3 by 3 neighborhood: if the center cell is dead (0) then it becomes alive at the next generation if exactly 3 of its eight neighbors are alive; if the center cell is alive (1), then it remains alive if 2 or 3 of its eight neighbors are alive. A Larger than Life (LtL) automaton has five parameters: r, a, b, c, d. The radius r defines the size of the neighborhoods which are 2r+1 by 2r+1. Let s denote the number of alive cells in an 2r+1 by 2r+1 neighborhood, including the center. Then a dead cell becomes alive when a ≤ s ≤ b and an alive cell remains alive if c ≤ s ≤ d. In this notation, the Game of Life is the LtL rule 1 3 3 3 4 automaton. Notice that LtL automata easily generalize to n-dimensional automata. In Section 2 we will consider the 1-dimensional case before turning to the more traditional 2-dimensional LtL automata.
In the 1990’s and later David Griffeath and Kellie Evans investigated many LtL automata. Indeed, it was the topic of Evan’s PhD thesis . We will mention the particular LtL automata from  in Section 3 but the interested reader can find a wealth of material on their web pages [9-10] and in their publications [11-15].
Two of the world’s leading experts reveal their codebreaking methods and stories. This book has over 100 examples of historical ciphers, the context around them, and how they were broken.
These days, in the covid world we live in we have multiple videoconferences every day, with colleagues, family, friends… The average number of people attending has grown, and when I was in a call some time ago, I wondered, what would be the “optimal” way of splitting the videconference application window among the people in the call? What would be the definition of “optimal”? And, in how many ways could the space be split?, as sometimes you might prefer, for instance, one where space is shared equally or one where the current speaker has predominance.
This intrigued me, and I started some research to try to find answers to these questions. I started with the assumption that the videoconference application owns a window on the screen, which is a rectangle (we will call it the bounding rectangle), and we want to divide it in N different rectangles, being N the number of people in the call. We can define different criteria for optimizing like, say, dividing equally the window area among the callers. However, for that we need to define mathematically the dividing rectangles, and here is where the first difficulty arises, as the mathematical description changes depending on how you split the window. For instance, two of the ways of dividing the bounding rectangle (let’s call that “rectangulation”) for N=3 are as displayed:
The dining philosophers problem is invented by E. W. Dijkstra. Imagine that five philosophers who spend their lives just thinking and easting. In the middle of the dining room is a circular table with five chairs. The table has a big plate of spaghetti. However, there are only five chopsticks available, as shown in the following figure. Each philosopher thinks. When he gets hungry, he sits down and picks up the two chopsticks that are closest to him. If a philosopher can pick up both chopsticks, he eats for a while. After a philosopher finishes eating, he puts down the chopsticks and starts to think…
People sometimes ask me for robotics resources. There aren’t many high quality internet-first lists available on this topic, so I made one I can link to. I’ll continually update this list so feel free to give suggestions if things are missing or you have better links.
Open Music Theory is an open-source, interactive, online “text”book for college-level music theory courses. OMT was built on resources authored by Kris Shaffer, Bryn Hughes, and Brian Moseley. It is edited by Kris Shaffer and Robin Wharton, and is published by Hybrid Pedagogy Publishing.
Below is a loosely-categorized collection of links to CS textbooks in a variety of areas that are freely available online, usually because they are one of the following:
An open textbook (such as PLAI, SF, or the HoTT book)
An older book that is out of print, for which the copyright has returned to the original author(s) (such as TTFP)
An author’s own preprint or draft of a textbook. This includes cases where the author has made special arrangements with a publisher to host an electronic copy of a published text on their homepage while it remains in print.
Most of these I’ve only used for brief personal reference, and have not read in depth. The exceptions, those books I’ve spent considerable time with and highly recommend, are marked with asterisks.
I also include below a list of papers I consider good stand-alone introductions to certain topics, and a list of links to thorough special topics courses.