VARIOUS PROGRAMMING PROJECTS:
This summarizes my larger programming projects done in the course of research, teaching and coursework while in graduate school, or connected with my Symbolic Computation research.
Symbolic Computation  
Implemented share packaged for two new black box recognition algorithms
for the GAP symbolic computation system ("thesisware"; GAP/Unix,Win32)
Implemented a package for computation in finite permutation groups (a "Rubik's cube solver") (Lisp/Unix) Implemented a package for computation with polynomials in commuting and anticommuting variables (Lisp/Unix) 

Compiler Design  
Implemented a compiler from an MLlike language (closures, tail recursion, type deduction and markandsweep GC, no patterns) into PowerPC assembly (Java/Unix,PowerPC)  
Courseware for undergrad C++ courses  
Implemented a graphics/console library for student projects, on top of Win32 API, (for course projects such as clones of classic arcade games: Arkanoid, Tetris, Alien Invaders etc.) (Visual C++, Cygwin32/Windows 9x, NT)  
Operating Systems,
Distributed OS 

Implemented multithreading and virtual memory in a timesharing operating
system (C++/Unix)
Implemented a master/slaves task server for remote execution of tasks using RPC (C++,rpcgen/Linux) 

Comp. Architecture  
Implemented a simulation of the MIPS R4400 processor, register transfer level (C++/Unix) 
TEACHING:
Algorithms and Data Structures I  
Structures, classes, and templates (C++). Abstraction and encapsulation. Dynamic arrays, stacks, queues, linked lists. Simple sorting and searching. Recursion and recursive algorithms. Elements of OO design. Final project for the class was to program a classic arcade game clone, such as Arkanoid, Tetris, Alien Invaders, etc.  
Algorithms and Data Structures II  
Linked lists, trees, heaps, priority queues, and hashing. Sorting and searching: quicksort, heapsort, binary search trees etc. Design issues: picking the right data structure and implementation, memory management, generic programming with templates (C++, STL). Recursion versus explicit stackbased algorithms. Graph algorithms.  
Fundamentals of Computer Science  
General idea of computer architecture and assembly programming. Basic concepts of a highlevel language such as data types, variables, expressions, statements, procedures, functions etc. Basic operations with strings and arrays, input/output etc. Ideas of structured programming.  
Calculus, Precalculus, Linear Algebra with Analytic Geometry  
Standard freshman and sophomore courses. 
RELEVANT COURSES:
Mathematics  
Commutative Algebra, Representation Theory, Lie Groups and Lie Algebras, Probability, Statistics, Real and Complex Analysis, Differential Geometry, Topology  
Computer Science  
Compiler Design, Operating Systems, Parallel Algorithms, Principles of Programming Languages, Distributed OS, Architecture, Object Oriented Design. 