Below is a list of some early books on BASIC,
up through 1971 (which is the year I learned BASIC), ordered by year.
The links go to pages only on this site.
1967
References:
http://atariarchives.org/bcc1/index.php?showdetails=1 (4-12-05)
I am currently unable to find the title or a copy of the book on BASIC I owned in 1971. I believe it was for HP, and the cover had slightly muted red, white, and blue stripes, I think mostly vertical blue stripes, with a different pattern of red stripes at the top, and it was softcover. Among the more unusual topics it covered were the WAIT statement and character strings. The 1971 Sharpe & Jacob book sounds like the most likely candidate to me. If anybody can positively identify the described book, please let me know!
In 1971 electronic calculators existed only in the form of large desktop models with nixie tubes, and no class at school or anybody I knew had one, at least not until about 1972. For example, the first handheld calculator didn't come out until 1972. For complicated calculations we used either slide rules, math tables, or pencil and paper. The only machines capable of making exotic calculations were mainframe computers, and I did not have access to one.
In early 1971 a friend of mine in high school, David Shawn Smith, obtained access to a mainframe computer through some class at our high school, and he told me about this because he knew I was interested in math. I was quite envious of him since there were a number of math topics dealing with irrational numbers that could be easily investigated on a computer. I had no idea how to program a computer even if I had access to one, so I asked if he could program a simple calculation for me--pi to the pi power--and he followed through.
The significance of pi to the pi power was that it was an obvious combination of transcendental numbers I had never seen mentioned, much less seen its value, and I could not very accurately calculate it on a slide rule. I reasoned that if the famous equation e^(i*pi) = -1 was so interesting-- an equation that amazed my friends in high school when I first showed it to them-- similarly combining pi with itself might produce a startling result, possibly even a rational number.
Within a few days Shawn wrote and ran the program, and gave me the printout of the program and its output. The numerical result was nothing recognizable, certainly not an obvious rational number, but at least I finally had my curiosity satisfied, at least on one idea, at least with limited precision. I saved and cherished that listing, even if the number of decimals of output was limited. His program was written in BASIC, and to the best of my recollection the program and output were the following:
PROGRAM PTOP
REM PI TO PI
P = 3.14159
PRINT P^P
STOP
END
36.4622
It was a humble program, but the awesome potential of computer programming was beginning to dawn on me. It was clear that I couldn't keep pressuring Shawn to do my research for me, and that I was going to have to learn to write programs myself. That opportunity appeared in the form of a course offered at our high school in the summer of 1971, taught by one of our school's math teachers, Mr. Smith. I jumped at the opportunity.
The course turned out to be great. Right away I finally learned what Shawn's program statements meant: REM meant "remark," for example, and the PROGRAM, STOP, and END statements were required for every program. The course gave us a lot of freedom to write programs of our own choosing most of the time there, and soon adolescent male competition became a strong undercurrent, causing the students to work increasingly hard to write ever more impressive programs to show off to each other. As a result of this competition, I learned about polar coordinates for the first time, began to learn about Schrodinger's quantum mechanics equation in hopes of plotting it, and later I learned the basics of assembly language via the CARDIAC learning tool we were given for free in that class. In general, I was learning more and learning it more enthusiastically that summer than at any other point in my life. At the same time, my life was balanced with great friends, great trips to the beach, new snorkeling equipment, cool songs on the radio ("Nathan Jones," "Draggin' the Line," and "Albert Flasher" come to mind), and some heavy thoughts into the nature of computers and programs, and how those related to nature, simulations, games, and so on.
We were given cards for free in the class, provided we didn't use exorbitant amounts of them. We would typically place a small stack of cards on a corner of our desks and pull from the stack while marking the cards with pencil. In addition to the usual cards needed for a program, there was also a required "scratch" control card that must have cleared the computer memory between programs. I remember the abbreviation was SCR, and there must have been a special SCR box to mark on the side of the card for scratch cards, even though that command was not intrinsic to the BASIC language. I believe the cards contained such mnemonics on the side to save time when marking them. I joked that a nasty prank would be to secretly slip a scratch card into some other student's deck because such a card would cause an immediate abort and erasure of the program when the scratch card was read.
BASIC is possibly the only computer language I ever learned completely. At first, after I established a small base set of commands that I understood, I stuck with those commands for a long time, and was reluctant to learn any more commands, even though Mr. Smith would keep teaching us new ones. Use of GOTO statements, nowadays disparaged, was required in some parts of BASIC and was common practice back then. (I remember erroneously pronouncing GOTO as "go tow" at first.) Since I hadn't wanted to try FOR loops, I relied upon IF and GOTO and flags to create my own loops the hard way, so at times I got lost in my own program logic. After a while I began to realize that there was a good reason for the more complicated statements, whereupon I read nearly the entire book to learn every command possible.
Some of the last constructs I used were the GOSUB and the DEF FNA (define function A) statement, since for a long time I didn't see the need for those-- if necessary, those could be done just as easily with GOTO statements, it seemed. Probably our teacher or book should have made the utility of such statements clear instead of teaching constructs blindly and leaving us to discover their utility on our own. Other statements and functions for which I had little use for a long time were the CHR$ function, since such functions dealt with conversions between characters and numbers, and I wasn't working with character strings for the most part. Another function that seemed useless at the time was WAIT, which caused the program to wait for the specified number of milliseconds. It didn't make sense to me why anybody would want to slow their program down! The only use of it I could think of was to pull a prank on the computer operator by putting a long WAIT inside of an infinite loop, so that the operator would get frustrated and have to abort the program by hand. (The utility of that command became more apparent to me in later years when we began to program games like tic tac toe interactively, and also in the 1990s when I used something similar at work to allow hardware events to catch up with the faster software.)
Each day at the end of each class session Mr. Smith would gather all our programs on cards and he told us he personally drove them over to the off-campus computer facility. We never saw this facility, and I had no idea where it was or what it was like. I believe Mr. Smith mentioned he put his own control cards around our batch each time. The programs would usually come back the next day with the listing wrapped around the cards that produced it, held by a rubber band. We eagerly awaited our programs each day at the start of class, and it was very frustrating whenever there was an extra day of delay. Even more frustrating was when the computer operators somehow got our cards out of order, since obviously the programs wouldn't run then. Once or twice a number of us were upset because it looked as if the cards had been dropped, because the cards were almost randomly placed, as if they'd been shuffled. Sometimes the computer operator would write a note on our listings. Once, after they obviously had gotten my cards out of order, I got a note on the listing saying "We're having a h--- of a time running your program, but we'll keep trying." Apparently the operator thought the word "hell" was too inappropriate for high school students. In any case, I thought it was a foolish comment to make, since obviously the fault was theirs, and not the program's, since the program never caused any special problems before or after that incident.
Some of the students in that class were John Lamping (who went on to get a Ph.D. in Computer Science at Stanford, and to produce some notable software products), Tom Webster (who went on to M.I.T. and became an important government advisor), and Paul Atkiss (who went to San Diego State University and became a corporate finance expert).

Some of the memorable programs written in our class that summer were:

No doubt somebody wrote a Pascal's triangle program also--standard fare for high school programs and high school science projects. Same with the Fibonacci sequence. Interestingly, in 2003 I noticed one PC at my workplace lab had a screensaver of a rotating hypercube, and I remembered John's hypercube rotation program from 32 years earlier.
So intent were we on writing our programs during those class sessions that I came to resent any lectures at all. One day, for example, Mr. Smith thought it necessary to go through a lecture on an algorithm (the Euclidean algorithm?) for finding the greatest common divisor, and I was particularly bored and impatient the whole time, I kept losing track of what he was trying to do, and I was generally just anxious to get back to writing programs.
After the course was over, we were able to continue submitting our cards to the off-campus computer center, and around 1972 our school got a terminal connected to an off-campus mainframe via telephone line connection, which gave us interactive access to a computer for the first time, and this computer lab became a very popular hangout after school for students through at least 1973. Some of the students who spent many hours after school in that computer lab were John Brock, Mike Guerre, John Lamping, and Tom Webster.

All programs we wrote were still in BASIC. Some of the more impressive programs written by students after the summer school course ended were:







Most of my programs were more subtle experimentation with irrational numbers. John's tic tac toe program was very popular, and was written about in our high school newspaper. I remember the day that newspaper issue came out somebody was reading the article out loud about the new compter lab that mentioned John's tic tac toe program, ending with John's written quote "It can't lose," and one girl asked softly in obvious perplexity, "How can it not lose?" I was surprised she knew so little about the game, and how it always ended in a draw with perfect play, no matter who started, and no matter what the first move was.

Our programs on the school terminal could now be entered by hand, and saved on remote hard disk, for the first time, via password. The programs could be saved in computer readable form at our end only in punched paper tape form. In those days we often carried around rolled up paper tapes of programs, held together by a rubber band. The paper tape was about one inch wide, manila colored, and could be read by the on-campus terminal. To produce the tape meant only turning on the punch control. One student discovered that one control turned off the majority of the sound while the punching was being done, and that the punching apparatus produced an incredibly sick sound when the muting control was on. I still marvel and wonder at what could make a muted punching sound universally come across as sounding "sick," but it sure did.
The paper tape output led to early hacking successes when somebody discovered that the tape would render the difference between "O" and "0" (letter "o" and numeral zero) obvious. We had learned to use strings of o's and zeroes for passwords to our accounts because passwords in those days were visible as a user typed them, but o's and zeroes were visually indistinguishable, so allowed some degree of security. The computer terminal was so popular that there would always be students clustered around, looking over the shoulder of whomever was working on the terminal at the moment, all eagerly awaiting their turn, so privacy was almost nonexistent. Producing a listing of the student folders as seen on hard disk while the paper punch was turned on would render the passwords for the folders readable.
At times the telephone line would become disconnected, whereupon we would have to summon an instructor to call the computer facility and reconnect us. One night no instructors were available so we had to use our wits. We tried whistling into the modem to simulate a dial tone, which didn't quite work, then we found the number of the computer facility, but we were afraid the operators would think we were just some kids fooling around without supervision, so we chose the one of us with the deepest voice to ask to be connected again. That person was me.
Our programs gradually became increasingly large as the enabling technology developed, and some of us were using so many cards that we began to buy our own computer supplies instead of relying on the few free cards supplied by the school. At one point I had purchased an entire long box of HP BASIC programming cards, cards with light reddish print to be marked by pencil, and at one end of the box I kept cards for working programs wrapped in rubber bands. At high school graduation I gave away all my programs stored on tape to one of the lab habitués, I believe John Brock, and I wrote this fact as my senior bequest in the high school newspaper as a partial joke. I think I sold my box of programming cards.
Along with all the programming in BASIC, two other minor programming opportunities presented themselves in high school: FORTRAN, and a Monroe calculator. In fall 1972 one of the programming enthusiasts from our computer lab told me several of them were going to take a free course in FORTRAN, invited me along, and so I also took the course with them. And around 1972-1973 our school purchased a Monroe Compucorp 1656 Scientific Calculator, and John Lamping learned to program it via the manual. I believe he was the only person in school who learned how to program it. I started to learn, but for some reason I found the manual and instructions prohibitively complicated, and I lacked the patience to learn it. That a calculator could be programmed was novel to me, though. In a repeat of Shawn's pi program incident, I had to get John to program some infinite series that I wanted to sum, since I hadn't learned to program in that language, but I needed the results on calculator because it had better precision (10 digits) than mainframe computers running BASIC normally produced (about 6 digits). This calculator was kept in the physics lab by Mr. Falter the physics teacher. It had orange nixie tubes for the display, which predated LEDs (which in turn predated LCDs), and are now hard to find. John used it for investigating the limit of successive ratios of the number of simply connected polyominoes, among other things. John once programmed it to find the sum of what I later learned was called the harmonic series. It was obviously a fundamental infinite series and I was mystified why the summation had never been mentioned in any math books I read. Neither of us knew at the time that the series didn't converge. We often let the calculator run for days at a time, with its righthand digits flashing unreadably fast the whole time. It wasn't until several months later when Mr. Smith mentioned that series in a math class and how it never converged, that I was shocked and told him John's calculation had produced a limit of around 4-5. Then Mr. Smith showed me the proof of its divergence in a book, and I began to respect mathematical proofs a little bit more over empirical results.

Like one's first computer, or one's first lover, BASIC left a strong, favorable impression on me. It was the only computer language I learned completely, and whose book I had read completely. When I later learned FORTRAN and ALGOL I was frustrated that neither of those supposedly more powerful languages could zero out arrays with a single "MAT A = ZER" statement as I'd used in BASIC, or could print out arrays with a single "MAT PRINT A" statement as in BASIC. To add to my later impressions of rigid syntax and untouchable computers, all later computers I used in that era were mainframes hidden away in a school computer room that we rarely even saw, and that never allowed interactive sessions. The magical feeling from that era of enthusiasm, computer lab socializing, time sharing, original game programs, spare time for writing programs, intense learning, and productive competition was never to repeat itself in my lifetime.