Highschool and Student Projects
These are computer projects I did while or was in high school and while I was a student. And what I learned from them.
In the early eighties home computers started to become widely available. These were 8-bit machines with up to 64 KBytes (that’s kilo as in 1024 bytes!), which usually shipped with some interpreted form of the BASIC programming language. I started learning the dialect of the Amstrad CPC home computer (distributed by the now defunct Schneider AG). This a collection of some of my projects from back then and what I have learned.
- My first computer game called “Kamikaze”
- To be honest, as a game it was really boring. You flew a plane over a landscape and had to evade other approaching planes who were trying to collide with you. You could choose the difficulty between easy (you had nothing to do) and hard (it was impossible to get away). If you set it in the middle, you would actually enjoy playing the game for a while (maybe 30 seconds or so) before you got bored. The thing that really sets it apart for me was that it was my first computing project that I had started and finished successfully. For a twelve-year old who never had any computer science class at high-school, who had never read a book about programming and whose only access to a computer was through exhibits at a shopping mall I don’t think it was a complete dud.
- An address/contacts database program
- My application equivalent of the above game. Basically, I used to write an address database whenever I wanted to learn about a new machine since it would teach me about data structures and I/O. I didn’t have much practical use for it since as a geek I didn’t have much of a social circle, anyway.
- A FORTRAN compiler (unfinished)
- Back then this project was way over my head. FORTRAN 77 looked like a simplified BASIC to me (without annoying control structures and extra functionality like graphics), so I initially thought it was an achievable project. What finally stopped me was my inability to program algebraic expressions (e.g.,
(63.4*a+((76**x-4*y)+sqrt(c**2*a+b/y)))). It would still be many years before I learned how to do it. In BASIC without memory management and recursion it would still have been unpleasantly hard.
- A Forth interpreter
- An easier target, for sure. Since Forth uses RPN (Reversed Polish Notation), I managed to avoid the issues of algebraic expressions. The project was completed successfully, but in practice it was slow and inefficient. Maybe I would have had a chance to market it, but as a kid who hacks away at his private home computer, I thoroughly lacked all skills to do that properly. If there is one lesson I would give myself if I could travel back in time, it would be the realization that pure skill without context is worthless and that I should invest my time rather in marketing what I had done instead of doing more projects just for myself.
- A printer driver in Z80 assembler code
- This was a cool thing I did for my father. It worked great. It basically printed the screen contents on an old matrix printer with a colored ribbon. Plus, I learned some Z80 assembler code on the way.
- A graphical adventure game “Lord of the coins”
- If there is one thing I am proud of during my high school times, this is it. A great game, multiple windows, self-made graphics, a working parser and a couple of puzzles. The only problem was that once it was done, I didn’t know what to do with it. It would have been really gorgeous had I tried to market it properly. At the very least I could have made a few bucks by selling it to a home-computer journal which used to be popular those days.
At the end of my high-school days I got a 80386 PC – which used to be a top-notch machine back then. I programmed it in Turbo Pascal and used it successfully for a project in the Jugend forscht science contest in 1992. The title of the project was “Unser Sonnensystem — Eine Simulation von Planetenbewegung und Raumfahrt”.
- Solar system planets and moon simulation
- I recently found most of the old codes and documentation and published it on github.com. The part without graphics output can be compiled using Free Pascal, the part which requires graphics output can be run on a DOS emulator with Turbo Pascal on it, e.g. DOSBox.
- Chief editor of “SG Witten” annual report
- Season 1993/1994. This is not a programming project, but rather my first experience in the publishing world. I did it all on a computer, so I list it here. This project has taught me about working with others from a variety of backgrounds and also really practical lessons about deadlines and also marketing. In the end, I made a small profit out of selling the report — which, of course, I have donated to the club.