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 ("thesis-ware"; 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 anti-commuting variables (Lisp/Unix) |
|
| Compiler Design | |
| Implemented a compiler from an ML-like language (closures, tail recursion, type deduction and mark-and-sweep 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 multi-threading and virtual memory in a time-sharing 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 stack-based algorithms. Graph algorithms. | |
| Fundamentals of Computer Science | |
| General idea of computer architecture and assembly programming. Basic concepts of a high-level 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. |