Dave Cope's Homepage
   Main | Personal | Photo Gallery | Projects | Linux | Employment Info. | Links | Misc. | About e-mail  

Current Programming Projects

The Ita Computer System

The Ita computer system is a complete computer system (programming language, compiler, operating system, processor) that I designed and implemented.

Elements of Computing Systems (aka Nand-to-Tetris)

Elements of Computing Systems is a book and course/project series designed for university students. The book explains computer hardware and a complete software stack. The idea is to show students how to create a computer system starting at the gate level, and build all of the tools/compilers needed for a modern computer system. The projects for the course get you to create:

  • A computer processor (starting with only Nand gates)
  • An assembler
  • A virtual machine
  • A compiler for a high level language called Jack
  • An "operating system" (actually closer to a standard library)
  • An application (in my case I implemented a clone of pacman)

The course projects may be completed in any order (or even skipped) because simulators and tools are provided if you don't build upon your previous projects.

The projects are fairly primitive/simple. This choice was intentional so that students could complete the projects in a reasonable amount of time. As you can see from the screenshot of my game, the hardware only supports monochrome graphics.

A screenshot of Hacman

PS3/Cell SPU Rendering System

I am currently working on a software rasterizer that is capable of running on the SPU's of the Cell processor. My goal is to write a flexible rendering system that allows for programmable vertex and fragment shaders while still remaining high performance.

Rasterized image of the Stanford Bunny

Previous Programming Projects

Raytracing / Image Synthesis

Rendering of a mountain range Rendering of a porsche

C64 Programming

Rendering of a sphere

Quine Tutorial

A tutorial on how to create a self replicating program (called a Quine) in C. Of course, the ideas presented in the tutorial are equally applicable to other languages.

Spinning Quine

After creating a straight forward quine, I decided to create a more elaborate iterating quine.

This site was designed and coded by Dave Cope - © 1998-2003