Below are some challenging programming assignments I had completed before from start to finish on my own during my undergraduate education (Before 2003).  I can provide source code for all of them, upon request.  Although, as technology and languages change . . . I am sure they won't be necessary, anymore. =P

Ray Tracing (Digital Image Model Simulation)
The above image was created using a Ray-Tracing method, where a virtual model of the world is created - viewer, the display surface, and everything behind it . . . including lighting sources, objects, and their properties (Shadows, Specular/Diffuse/Ambient Lighting/Reflection Properties, Color, etc.). The way light rays hits the eyes is simulated almost exactly. This project was one of the more Math and Physics heavy programming assignments I've ever encountered, but also one of the most rewarding. Nowhere did we use a fancy API like OpenGL . . . just C++, where we wrote to a .PPM file, pixel by pixel. (See Larger Image) Please E-Mail me if you are interested in the .PPM file or otherwise.

Project/Team Coordinator (Semester Long Project)
Pre-Algebra Equation Game For 6th Graders At Walnut Creek Elementary
I took a course in Software Engineering, for which we were put in groups of five and had to undertake a real project for a real client. The project we ended up with was a Pre-Algebra Equation Tool for the Young Scientists Program at Walnut Creek Elementary School. We designed a fast-paced, fun game for these children to learn the various math concepts. I was in charge of maintaining a webpage for our group, assembling and writing various parts of documentation (Project Bid, Project Plan, Software Requirements Specification, Software Design Specification, Activity Reports, Client Meeting Reports, etc.), designing and coding problem generation algorithms in ActionScript, and much more. Our project was very successful, and this was a very rewarding experience, as well. The project and all documentation for this project is still viewable at the following URL: http://www.cs.utexas.edu/users/s2s/latest/prealgebra1.

AVL Trees (Continually Balanced Binary Search Trees)
I needed to make my own version of the abstract data type, AVL Trees, and it needed to be far more efficient than traditional versions that kept a height variable as a private member of a node in the tree.  We used two boolean values instead effectively increasing both time and space efficiency by a great deal.  Bookeeping of these boolean values to be efficient and trail the recursion of the trees as opposed to recursively setting them afterwards was quite a challenge.  We also learned many points of efficiency in all forms . . . code reuse, time, memory, etc.

Language Conversion
We designed a translator that would take a program written in Scheme (dialect of LISP) and output the same program in C++ and Pascal source code.  This was challenging because I had no prior knowledge of C++ at the time . . . this was done to show us that the only difference between languages in computer science was syntax, and one could learn a new one relatively easily.  It's the fundamental concepts that are more important.

C++ High Resolution Timer For Both Linux AND UNIX (Solaris)
I needed to have a way to measure time accurately, to the microsecond, in order to guage our efficiency of our algorithms.  It needed to be a timer that I could start and stop and reveal the time it took for an excerpt of code to execute.  Most of my class had done this wrong, and the T.A. posted my solution as the model solution for the course:  SnapShot of the Post.


Below is an example of an Arithmetic Logic Unit designed using the Bit Slice method for increased efficiency. I designed and created the below from scratch, a blank screen. I apologize for the low quality image, and I can send you the full circuit if you are interested or curious. I created this in the middle of Spring, 2002.


The below example of my work was my solution to the following question posed on an assignment in my Computer Organization and Programming (CS 310) Class, Early Spring 2001.  "Design and simulate a 2's complement 4-bit ripple carry adder.  The first operand is always positive, and the second operand can be positive or negative.  A signal X will denote whether the second operand is positive or negative.  If X = 0 ==> +ive; If X = 1 ==> -ive.  Use a 4008 Chip, XOR's, and any other gates of your choice.  Your circuit should check for an overflow."


*I used Circuit Maker 2000 to design, create, and run the digital simulations on the above two circuits.


The next example of my work involves the extensive use of recursion, graphics, and good program organization.  We were to recursively draw a number of designs (Sierpinski Triangles, Binary Trees at Different Angles, Snowflakes, etc.) with x number of recursions . . . in the end, to go the extra mile . . . I put them all together at different coordinates on the screen and created the below picture.  This was during my Foundations of Computer Science (CS 307) course (Early Fall '99) in the language, Scheme, a dialect of LISP.


I eventually made the decision to pursue a graduate education in business, and below is a sample of a letter of recommendation I received along with a writing sample for a submitted essay.

Previous Letter of Recommendation to Graduate School I Received: April, 2005

Writing Sample - Essay Detailing My Motivations to Attend Grad. School
.DOC Version, .PDF Version - (April, 2005)


If you have any questions or comments, I would love to hear from you. Likewise, if there are any errors with my page (spelling, grammar, dead links, etc.) . . . please send me an E-Mail by clicking here.


To return or visit a previous page, please click on the following link:  Lil' Viv.com, Professional Page


This page is updated often, so please come back. This page was last updated on December 25, 2005.


© Vivek K. G., 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006.

Assignment examples and material on here were originally created by Vivek G. with no external help, and they may not be used towards anything academically dishonest invlolving those taking the classes he has completed and posted past work from.  Academic dishonesty will be reported and pursued to the fullest extent possible.  Nothing on this page may be used for anything besides perusal and viewing of Vivek's qualifications without his written consent.