LMB's Homepage

[ en pt-br ]   Home  *  Blog  *  FAQ  *  About

Undergrad Class Assignments

These are some class assignments I did when I was an undergraduate Computer Science student. If nobody find them useful, they’ll at least help me to remember some of the assignments I enjoyed most.

Some of the stuff here (specially the older ones) are in Portuguese.

All the software available here is licensed under the Cursing License (which I haven’t written yet — but I will write it someday).

LMB Edit

A little text editor, written in Pascal, sometime around the year 02000. There are two versions of it:

  • The first one is simpler and pretty stable. [ZIP (27kB) with the sources and an executable (DOS)]
  • The second one has syntax highlight (shows keywords in a different color), but also has a bug which causes crashes from time to time. [ZIP (32kB) with the sources and an executable (DOS)]

LMB Raízes

A program to create family trees, written in Pascal in, I think, 02000. For the record, “raízes” means “roots” in Portuguese. [ZIP (13kB) with the source code]

Support for Generic Programming in Languages

A short introduction to generic programming and how it is supported by different programming languages. Written in 02001 or 02002, when I felt particularly attracted by “creative” applications of C++ templates. [PDF (224kB) in Portuguese]

A Formal Definition of the LM Programming Language

LM is a functional programming language. LM is not ML. LM means “Leandro Motta”, after its creator. Or “Lingua Morta” (Portuguese for “dead language”), since all its reserved words come from Latin. [PDF (136kB) in Portuguese]

LMBov-Ray: The Blindness of Vision Raytracer

A reasonably simple raytracer, created in an Advanced Computer Graphics course, in 02002. Written in C++. [tar.gz (18kB) with the sources]

The images below were created with LMBov-Ray. To create much better images, use POV-Ray.

LMBov-Ray: Spheres, shadow and translucency

LMBov-Ray: Spheres, shadow and translucency

LMBov-Ray: Constructive Solid Geometry (CSG)

LMBov-Ray: Constructive Solid Geometry (CSG)

LMBelleArts

A non-photorealistic renderer (NPR) written in C++ in 02002. Renders 3D models (in the OBJ format) in a way that they vaguely remember a pencil drawing. [tar.gz (874kB) with the source code and some 3D objects]

To make it clearer, here is an example. To the left, there is a 3D model as it would be normally rendered (Gouroud Shading), and to the right, its NPR version by LMBelleArts:

Skull, in Gouroud Shading and non-photorealistic renderings

Skull (Gouroud e LMBelleArts)

Liked it? See some more examples.

Geri

An implementation of the Catmull–Clark algorithm for subdivision surfaces. Created in a course on Special Topics on Computer Graphics, in 02003. [tar.gz (17kB) with the sources]

In another thousand words:

Example of subdivision surface

A 3D model with low polygon count (left) has its faces successively subdivided, producing a smoother model (right).

By the way, this technique was used to create Geri, the title character on Pixar’s short movie Geri’s Game.

Auto Solo Solver: A Program Without a Polite Acronym

An automatic solver for the peg solitaire game. Does a simple depth-first search, plain and simple brute force. Created for the Artificial Intelligence course, in 02003. [tar.bz2 (5,5kB) with the sources]


Leave a Reply