Steve G. Romaniuk, PhD | Professional Portfolio, CV, Bio & More
It's time for change!
Early Computer Projects

Computer Projects image
Mid/Late Eighties

Virtualisation & Machine Learning

Virtualization



Motorola MC6502 Simulator

Around 1985 I started work on my first pure virtualization project: creating a simulator for the Motorola MC6502 8-bit microprocessor. In those days students still had to learn microprocessor programming either without any programmatic assistance in very large class sizes (Your microprocessor for which you wrote programs was a piece of paper and a pencil.), or for smaller class sizes, you had access to an actual microprocessor for which you wrote programs for test purposes. The later of course being a very expensive solution due to all the hardware and other required lab equipment. At the time, I had seen Rainer Werner Fassbinder's Welt am Draht movie, which was a precursor for the concept of virtualisation/simulation, and followed/copied by movies decades later like The 13th Floor.

To bring this project to fruition, I chose a 3rd generation language I was quite familiar with: Pascal. The target machine was a DEC Vax. After a few weeks of coding, the job was accomplished. The simulator allowed any user to write their assembly programs and have them evaluated directly in a virtual environment, which supported single step debugging (view contents of all registers or pre-assigned memory locations), and break points. Of course, since the code was written for a workhorse computer, many instances could be created simultaneously, allowing any number of students to work in parallel on their assignments. A while later, I ported the code onto an even more powerful computer system - an IBM 360/370 mainframe.



Machine Learning



SymMath - Symbolic Mathematical Problem Solver

After having taken an early introductory course in AI, I learned that in the States the AI community was entirely fixated on using Lisp for writing AI programs. Now, since I had worked years earlier on my first AI programs in Europe, I was largely familiar with the Prolog language. It turns out that in the '80s, the AI computing world was divided by these two programming language camps. The US clearly favored Lisp, whereas Europe & Japan favored Prolog. This of course, was not simply limited to actual coding, but the development of so called 5th Generation Computing machines: Lisp- vs. Prolog-machines.

I decided to write a program for a seriously complicated AI task: a symbolic, mathematical problem solver (SymMath). But, what programming language should I choose? I opted for the Prolog language. Why? Because, it provided me with a built-in backtracking mechanism and it's predicate logic-based knowledge base with the proper structures, to quickly get started with the project and not having to code these concepts from scratch. At this time, I was also working (for the money, unfortunately) on a project to write an OS for an upcoming Forth-chip made by Harris Corp. of Melbourne, Florida. I spent exactly 2 weeks with this nonsense and then decided not to pursue it any longer. If you don't know Forth, don't worry you didn't miss anything. The language is stack-based, yuk!!! Then, the idea to speed up processing with a dedicated Forth chip made very little sense to me, either. As usual, my intuition did not betray me. With the advent of RISC-based processing, a Forth-chip seemed like a poorly conceptualized and nonsensical path to follow - and the future would prove me right.

So, what could SymMath do? The program allowed you to solve mathematical problems ranging from calculus, matrix operations, polynomials, differentiation, and integration completely on a symbolic basis. For example, on your calculator you can add two numbers like 2+2 and the device will return 4 (hopefully). In symbolic math you can now do this: a+2b+3a and the program will return 4a+2b. Now, apply a little imagination and consider doing the same, but instead with a matrix where the individuals components can be polynomials, integrals, and so on. How about applying Gaussian elimination to such a matrix? No problem at all. As you can imagine, similar to when I used my first computer - Sharp Electronics's PC-1215 - to simplify my life in high-school, I again had a tool which could be applied to mathematical problem solving in my graduate course work. Needless to say, I completed my Master's in under a year and my Doctorate in less than 2 years all with a perfect GPA of 4.0/4.0.

SymMath was written entirely in Borland's TurboProlog interpreter/compiler configured for a standard PC at the time with ~650 KBytes of memory and running on MS-DOS.



Alga - Expert System for the classification of Algae

For a graduate course in expert systems the course work required writing an actual expert system. Now, I had very little interest in spending too much time on this project, since I was already working on far more worthy and far reaching projects. So I decided to team up with another student, who already had a Master's in marine biology and had covered the field of classifying algae that occurred of the West Coast of Florida. I convinced him that we use Prolog and not Lisp for this task, for the exact same reasons as for the SymMath project. After being initially hesitant - he had just learned in the classroom that Lisp was a far more superior programming language and should be the prime choice when working on AI projects like building expert systems - he accepted the choice. Apart from a small almost all-nighter (trying to find the proper switch command in Borland's documentation for creating a DOS-executable for a large memory model) the project completed in the shortest amount of time and delivered an acceptable grade. Both of us were very happy that we did not follow the expert advise and stuck with intuition, common sense and previous experiences.



Creole (French) to English translator

I had just completed my Doctorate and had some time to kill. The country was in a recession and the job market was practically dead - remember George Bush, Senior as president? I decided to experiment with founding my first company. Besides handling some odd jobs, one day I was approached by a member of the Haitian community in Florida. He wanted to know if I could write a simple program for translating Creole (French) into English for the PC (again MS-DOS). I did and went ahead to write a program using Borland's C++ compiler. The company experience was short-lived since I received two job offers: the one I accepted brought me to Singapore - but, that is another story.

The most important lesson I drew from these and earlier experiences, is to go my way and never fall into the populist trap of so called expert opinion. Of course, the experiences with Prolog and later Java made me choose these language when first building ctSearch and finally as a crowning achievement 124C41.

>
Contact Me

Feel Free To Drop Me A Line.


MobileTimesToday / Revelation Engine, New York, NY | San Jose, CA | Clearwater, FL

© , Steve G. Romaniuk, PhD