The Professor And Pat:
Computer Technology eBooks
For The Absolute Beginner
by Ted Kosan

Do you have a deep desire to know how computers work at their lowest levels?

Do you want to learn computer programming from the ground up?

Would you like to be able to manually install Linux and understand how it works?

Are you a programmer who has a young friend who would like to learn about these subjects?

The Professor And Pat series consists of free computer technology ebooks for the absolute beginner which teach technical subjects by telling a story. Read how Pat learns about the Von Neumann architecture, machine language, and assembly language from Pat's friend the professor and use the same programming tools that Pat uses to develop your own programs.

Foundation ( this book must be read first ):

Computer Systems: Gateways To Cyberspace

Programming Newbie Series (New MathRider-based version):

6502 Emulator, Binary, And Hexadecimal

6502 Machine Language

6502 Assembly language

6502 Programming

6502 Intermediate Programming


Programming Newbie Series (Older version):

6502 Emulator, Binary, And Hexadecimal

6502 Machine Language

6502 Assembly Language

6502 Programming

6502 Intermediate Programming

6502 Input Output Programming

MathRider: A Free Super Scientific Calculator/Mathematics Computing Environment

MathRider website

Linux Newbie Series:

Installing Gentoo Linux

Installing XWindows And A Window Manager

Internet Technology Fundamentals

World Wide Web Technology Fundamentals

Support And Feedback:

professor & pat google group

For Educators:

Why I wrote the books

A University course that uses the books

Links: - A computer algebra system for the 21st century. - Microcontrollers that run the software that is used in the programming series. - Open source project which contains the software tools that are used in the programming series. - A game development company that is developing a game/simulation which uses the concepts and tools that are taught in the programming series. - A popular 6502 microprocessor resource site. - A portal devoted to robotics.

Excerpts from the books:


“I got it!” cried Pat. “Those memory locations are similar to house addresses! All of the houses on the street on that hill have their own address, and the houses on my street are the same way. Did the inventors of the computer give each memory location its own address?"


After this explanation, Pat's eyes lit up and one could almost see wheels and gears turning behind them. “That's amazing!” cried Pat “I never would have guessed that a computer works like this!” After thinking a while longer, though, Pat asked “But if a memory location can only hold a number between 0 and 255, how can it possibly be capable of representing all of the millions of ideas that a human can have?”


“No way!” said Pat with determination. “I'm never going to give up learning about computers! Ever since I started learning about computers, it feels like I've entered a whole new world which is full of wonder and unexpected possibilities. I haven't told you this before, but sometimes I get little pangs of fear about losing the knowledge of computers I have gained, like I learned it all in a dream and when I wake up, the knowledge will be gone. I wouldn't trade my knowledge of computers for anything in the world...


"A beginning programmer is definitely able to start writing programs quicker in a high-level language than they could with assembly language and I ( along with many others ) thought that quicker in this case meant better.

Over time, however, I noticed that most of these students were not able to program very well. I eventually figured out that the main reason that most of them could not program very well was that they did not understand how a computer actually worked because much of this understanding is at the assembly language level.


Even though most programmers do not program in assembly language, somehow, having a solid understanding of how a computer works at its lowest levels, and having had the experience of manually encoding algorithms into assembly language, wires a programmer's brain in a way that enables them to be much better high-level language programmers than they otherwise would be.


I love assembly language, but even I prefer to program in a high-level language whenever possible. The reason I am teaching assembly language to you as your first computer language is because I want to give you the foundation you will need to become an excellent high-level language programmer.”


Diagrams and listings from the books: