Artificial Intelligence
Lisp
From the computer science department at UT Austin, we learned to
program in declarative and recursive forms using the LISP language.
Artificial Intelligence
As an undergraduate in the computer science
department at UT Austin, we used an excellent book that affected the way I
programmed. For example, the JavaScript program I wrote for finding the best
layout of panels within columns on this site uses the scored tree search
algorithm from this course.
Advanced Artificial Intelligence
This was a UT Austin computer
science course taught by Dr. Bruce Porter, a renowned AI researcher. The
course covered various topics in AI, such as knowledge representation,
reasoning, and expert systems. I received one of the few As awarded that
semester. The TA who graded my final project praised it as "the most amazing
they had seen."
Neural Networks
A UT Austin computer science course by Joydeep
Gosh. I learned about the theory and applications of various types of
neural networks and training methods. The instructor was impressed with my final project,
"Meta Design of Neural Networks". In this project, I
used a semantic net and an expert system to guide the initial configuration of a
network before training.
AI startup
I founded an AI startup that is creating software to assist in various kinds
of negotiations. It has turned out to be a long research project, having
been started in 2009. My startup is based on my academic work in AI.
Physics
APP Physics
This was an advanced placement high school physics course taught by
Mr. Sweeney. It covered the basics of classical physics in 3D with vector
calculations, then introduced the concepts of relativity and the problems
that led to quantum mechanics. There was a section where we learned about
Rutherford's experiments, and then went through a workbook and analyzed
photos of cloud chamber tracks to identify particles. This course was so
well done that I was able to pass out of the engineering
university physics requirements later on, which is why I mention it.
Engineering Physics
I took placement tests and earned an A
in place of taking the 8 hours of physics required of engineers at UT Austin.
Electromagnetics
In the semester-long course by Dr. Cardwell on
electromagnetics, we studied the integral and differential forms of each of
Maxwell's equations. We then proceeded to solve integral differential
problems in 3D vector space for seemingly every imaginable application.
Thermal Dynamics
In this course we started from the assumptions
underlying the ideal gas model, and then mathematically derived PV=nRT, and
much more of thermodynamics. It was a religious experience.
Materials Science
The course and the lab, we learned theory
and and applied it for crystals, metal alloys, and semiconductors.
Statics and Dynamic
Two semesters on analyzing force
distribution in static and dynamic structures, with amounted to repeatedly
solving 3D vector problems.
Spice Simulation
This could have been categorized as mathematics,
or perhaps computer science. This course took the Network Analysis course to
the next level. Step by step we learned how to write a simulator that solved
a complex time evolving network.
Differential Equations
We were fortunate enough to have a physics
minded differential equations teacher. For example, one our assignments was
to solve the Schrodinger equation for a particle in a box.
Electrical Engineering
Network Analysis
Kirchhoff laws, complex representation of capacitance and inductance, solving systems of complex numbers, Fourier Transforms.
Amplifier Design
Transfer functions of transistors, designing stable amplifiers with feedback.
Communications Theory
Shannon's Information
Theory, a great deal of mathematics for modulation, demodulation, the theory of codes,
sampling theory, and communication over noisy channels.
Control Theory
Designing stable control systems. Bode plots, Laplace Transforms.
Electromagnetics
Theory of electromagnetics.
Material Science
Metals, crystals, and semiconductors.
Computer Science
Languages
I studied Lisp, C++, Pascal, Fortran, and a couple of assembly languages in
courses. The topics included data structures, algorithms, syntax,
semantics, debugging, testing, and documentation. I've also read up on and
programmed in PLS, C, Python, Javascript, CSS, HTML, Prolog, SQL, Rust, and
Python, and some specialty languages for specific domains, such as
Verilog, System C, and Mathematica.
Computer Graphics
This course explored the principles and techniques of creating
and manipulating images on a computer. The topics included representation
models, rendering algorithms, geometric transformations,
and user interfaces. We each had to write
a computer graphics editor.
Artificial Intelligence
The courses in this area provided an
overview of the field of artificial intelligence and its applications. The
topics included search methods, knowledge representation,
planning, and expert systems. One of the class projects
was to write an expert system in MYCIN. I also developed a novel technique
for programming neural networks. Please see the Artificial Intelligence section for
more details.
Computer Architecture
The courses in this area examined the design and organization of computer
systems at different levels of abstraction. The topics included instruction
set architectures, assembly language programming, processor design,
pipelining, memory hierarchy. Please see the Computer Architecture section
for more details.
Computation Theory
Computation theory covered fundamental concepts
and limitations of computation. The topics included finite automata, regular
expressions, context-free grammars, push down automata, Turing machines,
decidability, undecidability, complexity classes, NP-completeness. The
course involved proving many theorems related to computation theory.
Compilers
I took up the Dragon book, and used lex and yacc for a
few projects. These involved parsing, semantic analysis and error handling ,
register allocation, code generation. I wrote a control language compiler
for a robots project in fab 14, co-wrote a toy language compiler for high
radix online arithmetic, and came up with the register assignment algorithm
for a compiler written by my colleague T.C. I created the assembler and
tools for my QST radio front end processor, so as to feed it tests.
Project Management
I studied project management out of necessity when working on processor
projects. This included techniques found in PMBOK (which came later and I
anxiously read it GANTT charts and the PERT method which I modified for
my situation.
Computer Architecture
Computation Theory
Theory of computing, from state machines and regular expressions, to Universal Turing machines and the halting problem.
Logic Design
Dr. Charles Roth's course on propositional logic, Boolean logic, simplifying logic, and state machines.
Computer Organization
Many different ways to organize and control computers.
Computer Architecture
Dr. Gonzales went through architectures starting from the PDP-11. RTL descriptions of processors, buses,
virtual memory in detail, and more.
High Speed Computer Arithmetic
The mathematics and practice for building high speed arithmetic operations.
Master's Thesis on Addition Circuits
Review of all adder configurations and their critical paths, and the first general solution to
carry skip adder optimization problem.
Mathematics
I have a strong background in mathematics and its applications. My
fascination with mathematics began as a child when I discovered modulo
patterns in numbers. By Junior High School I had developed my own
calculus. Teachers and professors have helped me formalize my foundation by
encouraging me to read math texts on my own, which I have done.
calculus, vector field calculus
differential equations
statistics
Core courses
from the math department at the University of Iowa.
Nonstandard Analysis
After Dr. Raul Curto reviewed my earlier work,
he explained that it was related to non-standard analysis, which had been
proven correct by Abraham Robinson in 1966. He recommended that I read
Keisler's book on infinitesimal calculus. (In course work we used standard
analysis with Cauchy sequences and limits.)
Peano Arithmetic
Dr. Curto also suggested that I study Peano
arithmetic and Peano derivatives, based on my interest in discrete forms. I
found these topics fascinating as they are related to approximations. Peano
arithmetic would reappear in the later Computation Theory course.
Linear Algebra
I studied Strang's book on linear algebra to
understand more of the theory behind vector and matrix equations. These are
used in both real and complex forms to solve various engineering problems in
courses such as Network Analysis and Statics.
Linear Programming
A friend who used Simplex Optimization for his
startup recommended that I study Hadley's book. I was also motivated by the
fact that knowing Simplex was listed as a prerequisite for the Neural
Networks course. This book inspired me to work on a related area of discrete
optimization. My master's thesis solved a discrete optimization problem
deterministically using a dynamic programming technique.
Abstract Algebra
I am interested in the construction of mathematics
from basic principles. I read material on set theory, and then picked up a
book on Abstract Algebra and studied it. Also the knowledge of Abstract Algebra
proved to be important in the communications theory course.
Communications Theory
I took a course in Communication Theory, where I learned Shannon's Information
Theory, a great deal of mathematics for modulation, demodulation, the theory of codes,
sampling theory, and communication over noisy channels. The professor mentioned that my final
had the only perfect score, although when I saw him he also said he had a couple more to
grade.
Logic
I took a course on logic design, which drilled into us the
principles of propositional logic and Boolean Algebra. I also took a course
in formal logic, but when half the class dropped it, I did too. There was no
point in taking a weed-out course in another department. I kept the book,
and although I have not derived formal logic from simple assumptions, I do
understand the terminology and the techniques used. We used a lot of formal
logic in Computation Theory.
Numerical Analysis
I've read a number of books on this subject. I have
a paper on my Research Gate of a numerical analysis technique I used for
determining error produced by floating-point algorithms.
Number Theory
Studying this subject was key to my numeric
algorithm work at AMD, and some of my hobby work such as the study
of integer factorization.
Computation Theory
I took a computation theory course where we
meticulously went through Lewis and Papadimitriou's first edition of
"Elements of Computation". We wrote many formal proofs on the capabilities
of various abstract machines for processing various languages. The course
was a profound experience, and I was one of the few to earn an A. I
continued to formalize all of my design work and formally prove its
functionality. (This might be why AMD never had a Pentium divide bug.) I am
working on a book that bridges the distance between computation theory and
real computer architecture.
Control Theory
I took a control theory course, which was all about
complex transfer functions. In addition to the text I tried to fill in some
of the theory by picking up both function and complex analysis, but did not
study them deeply. I also went through a book on metric spaces and
topology. I read the course book in the first week and asked the professor
if I could submit a program instead of doing the homework. He agreed.