Theodore Hwa's Home Page

Retractor 2.0 is now available! It is an application to explore Retrograde Analysis chess problems in your browser. It also contains a tutorial on Retrograde Analysis.

Mathematics

Some thoughts on monads.

SAGE is an open-source computer algebra system.

Explore 120+ polyhedra with full 3D manipulation, in your browser.

Draw limit sets of Kleinian groups generated by two elements of PSL(2,C) with parabolic commutator. This is an implementation of the algorithm described in the book Indra's Pearls by Mumford, Series, and Wright.

Explore the topograph of integral binary quadratic forms, as discussed in Chapter 1 of the "The Sensual Quadratic Form" by John H. Conway.

My favorite problem: Given integers i,j,n, with 0 < i <= j < n, show that the binomial coefficients C(n,i) and C(n,j) have a common factor > 1. Solution.

Finite group theory

ATLAS of finite group representations.

This page has various information on the (5,8,24) Steiner system, the Mathieu group M24, and related topics.

An implementation of Curtis' Miracle Octad Generator for the binary Golay code and the group M24.

I wrote a proof of the uniqueness of S(5,8,24) in an attempt to de-mystify the construction of the Miracle Octad Generator. It's still a bit mysterious, though, particularly Theorem 4.2 on the uniqueness of the hexacode. Comments and suggestions for improvement are welcome.

Elliptic curves and related topics

My thesis was in the area of elliptic curves.

John Cremona's tables for elliptic curve data, for conductor up to 500000. The full text of his book, Algorithms for Modular Elliptic Curves (2nd edition), now available online.

Tom Womack's tables (now maintained by John Cremona) on curves of minimal conductor having a given rank.

A wealth of data on modular forms is available at the L-functions and Modular Forms Database.

Other mathematical links

I gave a Kiddie Colloquium (a graduate student colloquium at Stanford) in 2001 entitled "Do we really need while loops?". Here is an example of a program which always terminates, but cannot be written "without while loops." (More precisely, it gives a recursive function which is not primitive recursive. Here "while loop" means any kind of loop in which the number of iterations is not determined in advance.)

Notes from a Kiddie Colloquium talk ("Why can't we integrate e^(x^2)?") that I gave on October 15, 1999 in DVI format. The topic, as suggested, is the basic theory of how to determine whether an elementary function has an elementary integral.

Inspired by a post on sci.math, I wrote this on planar rooted trees. Turns out to all be well-known ideas....

Dave Rusin's page on known mathematical material is a good place to look if you want to know whether the answer to some mathematics question is known. Another good source is MathWorld, particularly if you are looking for specific formulas or identities.

1.8378770664093... What number could this be? Using the Inverse Symbolic Calculator, you could find out that it is, to 13 decimal places, ln(2*pi). Isn't that cool?

Need to evaluate an indefinite integral? Check out the Integrator. Here's an interesting function to feed it: Sqrt[x + Sqrt[x]].

Here are past competition problems from the Putnam, USAMO, IMO, and other mathematics competitions.

Games

Strategy games of any type interest me.

Bridge

I play on Bridge Base Online under the ID thwa.

One of the bidding systems I used to play is a strong diamond system called Recursive Diamond.

Other Card Games
John McLeod maintains a page containing rules to many card games (including many lesser-known ones).
Chess

You can practice some chess endgames against perfect endgame tablebases. (If those aren't working, try here instead.)

Information on computer chess programming.

Chess in other countries: Xiangqi (Chinese Chess) or Shogi (Japanese Chess). In Shogi, captured pieces can reappear back on the board later in the game!

Here is the Chess Variants page. Lots of strange variations on chess for you to try.

I enjoy solving and composing chess problems. One of my favorite types of problems is retrograde analysis chess problems. As the name suggests, the object is to deduce things about the history of the game. Questions may be of the sort:

Retractor is a program that a friend and I wrote to help you explore Retrograde Analysis problems on your computer. It also contains a tutorial on Retrograde Analysis in the help file. A collection of good starter retrograde chess problems is found here.

Problem P0069 on this page is an SPG (Shortest Proof Game) problem that I composed. In an SPG, you must reach the diagrammed position in the shortest number of moves. The number is usually given.

Other games

The game of go combines very simple rules with very complex strategy. Combinatorial game theory can be used to solve late-stage Go endgames. Sometimes I like to think about different ways to make the rules of go precise. Ikeda gave detailed proposals for several rule sets, with many examples.

Arimaa is an excellent recently-invented board game that can be played with a standard chess set.

Information on Othello. I've written an Othello program which plays okay. For information on how to write such programs, see the computer chess programming link above; many of the basic techniques and algorithms apply to both games (and to many other games).

Information on Backgammon.

A Dots and Boxes game. Dots and Boxes has an extensive mathematical theory, largely derived from the theory of impartial combinatorial games, but there are exceptions.

The Computer Science department at the University of Alberta has a GAMES group. There is also a group at Stanford University studying general game playing methods.

Languages

Some blogs related to languages are Language Log and Language Hat.

The Ethnologue contains information on over 6900 languages.
I studied Spanish in high school and have learned some French on my own, mostly through reading mathematics papers written in it.

If you're a Trekkie and/or have lots of free time on your hands (neither of which applies to me), you could try learning the language Klingon.

Other stuff

Some lecture notes on the mathematics of the Rubik's Cube. It is now known that every Rubik's cube position can be solved within 20 moves (half-turn metric).

The Students for the Exploration and Development of Space has various nice astronomial links. The program Celestia allows you to explore many, many objects in the universe from just about any perspective (it's free and very well written!).

Information on eclipses.

Here is my Ultraedit wordfile for the interactive-fiction programming language TADS. An introduction to the programming language TADS is here.