TEACHING OVERVIEW

TEACHING PHILOSOPHIES

As a teacher, I consistently clarify the interrelationships between practical problem solving and its theory and mathematical foundations. As a Computer Scientist, I have found that grasping the vital connections between math and CS has expanded my own comprehension of both fields. As a Biologist, these techniques have improved my intuition and have triggered insights about the underlying dynamics of living systems.

It is clear that examples are the key to learning. My students grasp a topic best when I use examples throughout the explanation; at each level, I immediately follow explication of a theory with an example of a direct application. I then provide markedly different examples at the end of the theoretical explanation and again trace the parallels.

Examples from unexpected places have proved particularly effective. For instance, in computer science I have used classic puzzles to spark interest and provide insights as the student works toward the solution. One class of these puzzles requires a balance scale to determine which object of a group is of a different weight than the rest, which I have used to draw parallels to search algorithms. At a more abstract level, I have applied physical puzzles that require the removal of rings or disentangling of knots to convey the principles of recursion. Most other areas in computer science have comparable parallels that elicit the "Aha!" effect.

My approach invites interaction from students while allowing them to experience theories from many perspectives. This multi-faceted teaching technique provides strong reinforcement, and engages the interest of the students, creating a rich atmosphere for learning.


TEACHING

Instructor of Digital Evolution and Biocomplexity, Spring 2005, Fall 2003
Computer Science and Engineering Michigan State University, East Lansing MI
Course Description: An introduction to evolution in simple systems of self-replicating computer programs, with a special emphasis on the two way flow of ideas between evolutionary biology and computer science.
Notes: This course is heavily based around my own research, and has been quite an interesting experience for me. I originally taught it in the Fall of 2003, but have re-created it into an undergraduate course for the Spring of 2005, where I am focusing on the aditional area of teaching students the practice of doing research.

Instructor of Translation of Programming Languages, Spring 2004, 2005, 2006
Computer Science and Engineering Michigan State University, East Lansing MI
Course Description: Theory and practice of programming language translation. Languages, grammars and parsing. Lexical, syntactic and semantic analysis. Compile-time error handling. Code optimization and code generation.
Notes: I have found that students have trouble getting the full picture of how to design a compiler when the project takes an entire semester to complete. I am rebuilding this course for Spring 2005 such that the students have a fully working, trivial compiler earlier on, and expand it with a new programming concept for each project.

Instructor of Design and Theory of Algorithms, Spring 2000, 2003, Fall 2002, 2005
Computer Science and Engineering Michigan State University, East Lansing MI
Course Description: Analysis of algorithms. Algorithm design techniques. Efficient algorithms for classical problems. Intractable b problems and techniques to handle them.
Notes: This was the first course where I took the role of primary instructor; I designed all of my own lectures, with effective results. In the official evaluation forms, my students graded me with a 3.83 out of a possible 4.0.

Instructor of Digital Evolution: Design and Theory, Spring 2002
Center for Biological Modeling
Mighigan State University, East Lansing MI
Course Description: This course covers topics on the use of digital organisms (self-replicating computer programs) to study evolutionary biology. An overview and historic perspecitve of such systems is given, with the course focusing on the Avida software. Topics include an introduction to Avida and its configuration, the workings of the virtual hardware and its associated assembly language, and the extension of the software in areas ranging from expanding the genomic language to adding new analysis methods.

Co-Instructor of Topics in Biological Modeling, Spring 2001
Center for Biological Modeling
Michigan State University, East Lansing MI
Course Description: a survey of mathematical and computational methods applied to biological systems, focusing on (1) modeling the structure, function and dynamics of biological macromolecules and (2) modeling the ecological processes and genetic mechanisms that cause evolutionary change.
My lectures centered around the second of these foci.