CS661 (Algorithms)

Page Contents:

  1. Introduction
  2. Self-Printing Programs
  3. Trav's Tic-Tac-Toe Trainer

1. Introduction

CS661 (Algorithms) was taught by Gabe Robins. It was fun. I especially enjoyed meta-programming (writing programs to write other programs). The projects below show some of my efforts in those areas.

2. Self-Printing Programs

The basic strategy I used is to encode the program into non-escaped characters, and then print out the assignment of that encoded string along with the instructions for decoding and printing the string. For the PERL, I encode in hex (easy decoding with the pack() subroutine), and for C, I encode by adding 5 to each character of the string.

Further Reading

For more info about self-reproducting programs, see Gary Thompson's Quine Page. And be sure to check out Hofstadter's Godel, Escher, Bach!

3. Trav's Tic-Tac-Toe Trainer

My big project for the class was Trav's Tic-Tac-To Trainer (TTT). It used traditional AI to train neural networks how to play Tic-Tac-Toe.