----------------
My Computing Background
----------------

[Jason's Home Page]

My Childhood

[Commodore 64]

Like most of my generation, my first computer was a Commodore 64. My family got one when I was twelve (1984). On it I learned to play games really well, but I also had many ideas for better games, so I decided to learn to write my own. By reading books and trying things, I taught myself to program in BASIC. I wrote several simple games in BASIC (car racing, snow skiing etc), but I wanted to write even better games, so I learned to program in 6502/6510 assembly language. This is probably where I first became interested in the hardware aspects of computers, especially their processors and graphics systems. I wrote several games in assembly language for the 64, including a never completed jet fighter game (not quite a flight simulator). I also wrote my first piece of non-game software, a stock market charting and analysis tool called The Chartist. Today The Chartist still lives (in a hugely improved form)!

[Amiga 500]

In 1987 our family upgraded to an Amiga 500. This further increased my interest in processors and graphics hardware. I learned 68000 assembly language and wrote a new version of The Chartist for the Amiga. This version produced the charts in windows on the screen rather than as printouts, and thus was not dissimilar to the current version. I also learned a lot about graphics hardware by writing games and other things on the Amiga. After a while I discovered the C language. I had just started to program in C when I completed high school and started attending Bond University. Soon after I started at Bond I upgraded to my first UNIX workstation.


Bond University

[Bond University]

During my computing science degree at Bond University I learned most of what I know about computers and programming. My interest and existing background knowledge meant that everything clicked just perfectly. I really enjoyed the whole course, especially the subjects on data structures, hardware, compilers, graphics, operating systems, operations research and AI. In fact I enjoyed the work so much that I packed more than a standard workload into each semester and completed the course a semester early.

By the end of the course my primary interests were still the same - processors and graphics - but I had also acquired an interest in data structures, operations research, operating systems, user interfaces, and AI. My final undergraduate semester project was a microarchitecture simulator with a nice graphical user interface, intended to be used to assist in the teaching of the concepts of computer architecture, microarchitecture, and microcode. Unfortunately, it was never used - the RISC revolution made microcode obsolete.

My interest in computer graphics led me to go a bit further with my presentations than most students. I prepared several spectacular 2D and semi-3D animated computer graphics presentations and displayed most of them on the huge projected screens of Bond's lecture theatres. Nothing shows up overhead projectors better than a computer graphics based presentation with spinning and exploding animated titles, projected onto a cinema sized screen, with backing music!

By the time I reached honors I wanted to take on a big project related to compilers and processors, so I chose to write a C++ compiler targeting the Motorola 68040 and MIPS R2000 processors as my honors project! This turned out to be much too big a project, and I ended up working like a slave to complete it in time (8 months). Even then it ended up only compiling a subset of the C++ language (a large subset though). Considering the amount of time I had to do it, my J++ compiler did an excellent job of instruction selection for the 68040. Its instruction selection was competitive with many commercial compilers.

I was selected as valedictorian, and I graduated from Bond with first class honors in May 1992, less than two and a half years after starting there.


Queensland University of Technology

[QUT]

Since August 1992 I've been doing a PhD at QUT. My primary interest is the area of code optimization, especially at the very global (interprocedural) level. I'm particularly interested in aggressively superscalar RISC processors and the optimizations needed to exploit them (such as global instruction scheduling, very global register allocation and instruction/data cache optimizations). My PhD thesis will be entitled "VGO: A Very Global Optimizer", and will probably be completed in 1999/2000. I could tell you more, but then I'd have to kill you :-)


Copyright © 1995 Jason Patterson. Last Updated: March 31, 1998.