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. |