On this page
At 4 a.m. on 1 May 1964, in the basement of College Hall at Dartmouth College in the US, mathematician John Kemeny and a student programmer typed RUN on neighbouring terminals and both got correct answers back, according to Dartmouth's own history of BASIC. That moment started two things at once: the BASIC programming language, and a time-sharing system that let many people use one computer together.
Who created the BASIC programming language?
BASIC (Beginner's All-purpose Symbolic Instruction Code) was designed by Dartmouth mathematics professors John G. Kemeny and Thomas E. Kurtz, working with a group of undergraduates (Dartmouth College).
Kemeny was born in Budapest in 1926, moved to the United States with his family in 1940, worked on the Manhattan Project at Los Alamos, and was Albert Einstein's mathematical assistant while a doctoral student at Princeton (MacTutor, University of St Andrews). He joined Dartmouth's mathematics department in 1953 and was the college's president from 1970 to 1981.
Kurtz was born in 1928 in Oak Park, Illinois, earned a mathematics PhD at Princeton in 1956, directed Dartmouth's Kiewit Computation Center from 1966 to 1975, and died on 12 November 2024 (Computer History Museum).
Students did much of the building. When Kemeny applied for a National Science Foundation grant in 1963, Dartmouth notes, he got the money despite the referees' "serious doubts" about his plan to do the work with undergraduates (Dartmouth College).
Why did Kemeny and Kurtz make BASIC for non-science students?
In the early 1960s, there were no simple programming languages for undergraduates who were not training to be specialists (Computer History Museum). Kemeny and Kurtz noted that only about 25% of Dartmouth students took science and technology courses, yet some mathematics was used in almost every field (Dartmouth BASIC, Wikipedia).
Kurtz put the goal plainly: "We needed a language that could be 'taught' to virtually all students (and faculty) without their having to take a course" (TIME).
In a 1968 paper in Science, the pair argued that computing should be "extended to nonscience students, many of whom will later be in decision-making roles in business, industry and government" (Kemeny and Kurtz, Science, as quoted by Annette Vee).
Two choices followed from that goal:
Plain English words and school-algebra formulas, so a beginner could learn a few commands and then write useful programs (IEEE Computer Society).
Open terminals: Kemeny wrote that any student could sit down and use the system, and no one would ask whether the work was research, homework or a game (TIME).
It worked. By autumn 1964, hundreds of students were using BASIC on 20 terminals around campus (Computer History Museum). By 1968, about 80% of students and 70% of faculty were making some use of the system (Dartmouth BASIC, Wikipedia).
What did a 1964 BASIC program look like?
The first version had a small set of statements, including LET, PRINT, READ, DATA, IF...THEN, FOR...NEXT, GOTO and END (Dartmouth BASIC, Wikipedia). Every line began with a number that set the order of the steps. Here is a short program in that style that averages three test marks:
10 READ A, B, C
20 LET M = (A + B + C) / 3
30 PRINT "AVERAGE", M
40 DATA 72, 85, 64
50 END
Read it the way a 1964 history student would have:
Line 10 takes three numbers from the DATA line and calls them A, B and C.
Line 20 adds them and divides by 3: 221 divided by 3 is about 73.67.
Line 30 prints the word AVERAGE and the answer.
Line 40 holds the numbers. Change them and run it again.
Line 50 tells the computer to stop.
In Python the same idea is marks = [72, 85, 64], then print("Average", sum(marks) / len(marks)). The grammar changed; the thinking (input, formula, output) did not.
What can you learn from Kemeny and Kurtz today?
Their bet was that you do not need to be a "science person" to think in clear steps. A five-day starter plan, in Python or any language your school teaches:
Day 1: write the average program above with your own marks.
Day 2: add a loop so it handles any number of marks.
Day 3: add an IF...THEN check that prints a message when the average crosses your target.
Day 4: use a loop to add 1 to 100, then check it against n(n+1)/2, which gives 5050.
Day 5: explain your program aloud to someone who does not code.
If a step such as a loop or a formula does not make sense yet, the Fermi Concept Library has a lesson for every concept in mathematics and computing, as well as physics, chemistry and biology.
Read next: how Bjarne Stroustrup created C++ by adding classes to C and how Alan Kay's Dynabook led to object-oriented programming. If your first programs click, try a 12-week plan to start competitive programming in school.



