Code Nation. Michael J. Halvorson
fostering fundamental research in computing, educating graduate students, and preparing programmers for useful work in science, business, and industry. Universities were encouraged to build their programs by drawing expertise from across the institution, including the departments of Mathematics, Library Science, Economics, Business, Physics, and Engineering. Not long after this invitation, the first American Computer Science degree program was founded at Purdue University in 1962. In the following years, computing courses and new computer science programs were founded in several colleges and universities across the U.S.
Characteristic of the founding years of computer science programs was the leadership of administrators such as Professor Perlis, Alan Alan Perlis of Carnegie Institute of Technology (later Carnegie Mellon University). Perlis managed his institute’s computing center, recruited faculty and graduate students, chaired the Department of Mathematics, and encouraged his colleagues to establish a new curriculum in computer science.31 We first encountered Dr. Perlis in our discussion of the 1968 NATO conference, where Perlis served as a conference organizer and panelist. He is remembered as a seminal figure in computing not only for his publications, but for his effective leadership and skill in negotiating across academic boundaries, a task that he approached with political savvy and a sense of humor. After about 5 years of preparatory work, Carnegie Tech formally established a Ph.D. program in computer science in 1965, and Perlis became its principal director.
Professional Professionalorganizations organizations were also useful in the founding of university computer science programs, and none more so than the ACM. In 1968, the Association for Computing Machinery (ACM) ACM Computing mythologiesbirth of computer science Computer science proposed a formal curriculum for computer science in a report that recommended an appropriate selection of thematic courses. The organization advertised their plan with a series of articles about major concepts and theoretical concepts in the new field.32 Over the next decade, the ACM and its standing committee, the Curriculum Committee on Computer Science, hosted conferences that helped smaller universities adapt the initial recommendations for their specific contexts. Although smaller schools might not have graduate students or large budgets, the interdisciplinary nature of computer science adapted well to the distributed curriculum of many liberal arts colleges, especially those with strengths in writing, mathematics, art, history, music, and philosophy. (Several of the PC industry’s early leaders studied computing in these small college contexts, such as Ted Nelson at Swarthmore College, Cynthia Solomon at Radcliffe College, and Jobs, Steve Steve Jobs and Norton, Peter Peter Norton at Reed College.)
During the 1960s and 1970s, the computer science curriculum accentuated mathematics, including courses in calculus, Boolean algebra, numerical analysis, and statistics. The courses that introduced Cprogramming language programming taught fundamental concepts in high-level languages like Formula translation (FORTRAN) FORTRAN, Algorithmic Language (ALGOL) ALGOL, Pascal Pascal, and C. In later courses, students received an introduction to data structures and algorithms. (COBOLCOBOL and BASIC were offered less often, and remained controversial because of their perceived lack of structure, an issue that will be explored in Chapter 5.) Assembly language Assembly language was often introduced as an aspect of computer architecture. In the years to come, computer science departments expanded their offerings to include courses in operating systems, artificial intelligence, automata, and theories of computation.33
Representative of the emerging computer science faculty is Edsger Dijkstra (1930–2002), a Dutch scientist who started his undergraduate career as a student of theoretical physics but switched fields and completed a doctorate in 1959 on assembly language programming strategies for an early Dutch computer.
Dijkstra Dijkstra, Edsger entered computer science during a time of rapid growth in computer architecture. Riding a surge of interest in computing in the Netherlands, Dijkstra worked as a programmer at the Mathematisch Centrum in Amsterdam from 1952 to 1962. In 1962, Dijkstra accepted an offer to become a professor of Mathematics at the Eindhoven University of Technology, where he developed theoretical concepts in computer science and supervised numerous graduate students. (Many of these students became leading figures in the field in the following years.) Soon Dijkstra weighed in on the looming “crisis” in software reliability Computing mythologiesbirth of computer science Computer science and complexity, and he attended the 1968 engineering conference in Garmisch. To address his concerns, Dijkstra introduced new engineering practices, Algorithmsdevised seminal devised seminal algorithms, and he emphasized the importance of applied mathematics in the new field—all contributions that influenced the subsequent development of computer science. He also advocated for structured programming concepts and famously attacked the BASIC BASIC programming language, publishing a negative article about the language’s lack of structure and the dangers of its “GOTO” keyword. (See Chapter 5.)
In 1984, Dijkstra transferred to the growing Computer Science department at the University of Texas at Austin, where he continued to direct research until his retirement in 1999. Through numerous graduate students and colleagues, Dijkstra guided seminal work in language research, compiler design, concurrent programming, modeling, and operating systems. Throughout his career, the Dutch scientist was a theoretical purist, believing that individual implementations of computing technology were less important than the formal abstract knowledge gained through research.34
Computer science emerged as a new discipline in the natural sciences, and it established a place in the university curriculum. However, few courses were introduced at the high school level, a problem we will return to later in this book. Still, between the early 1960s and the early 1980s, new computer science programs appeared in American colleges and universities at a rate of about 20% annually.35 At the height of the major’s popularity, more than 5% of all U.S. male college students would graduate with a degree in Computer Science or Information Science. Moreover, in 1984, approximately 37% of the U.S. Computer Science graduates were women, indicating widening opportunities in the field, strong demand, and the program’s early success in reaching at least some underrepresented groups.36 If the goal was bolstering the pool of potential software developers for industry, the project seemed like a success.
So how did the U.S. computer industry respond to the new field and its curriculum? Although many employers were positive, there also those who critiqued the way that academics continually gravitated to theoretical principles over practical applications. More a tendency than a hard and fast rule (and therefore fertile ground for myth-making), this inclination was most apparent in corporate contexts where large teams of IT programmers were assigned to build information processing systems. At the time, many working programmers still had no formal education Computing mythologiesbirth of computer science Computer science in computing. They learned on the job through Programming primers programming primers and other printed resources. As a result, these developers were learning to code in relatively narrow contexts.
In the 1960s and 1970s, the conflict between academic computer scientists and professional programmers became severe in some circles, driving a wedge between the two subcultures that remains discernable up to the present. As Nathan Ensmenger has commented, “Computer scientists expressed disdain for professional programmers, and professional programmers responded by accusing computer science of being overly abstract or irrelevant.”37
Partisans in the dispute found ways to deploy stereotypes to heighten the impact of their critiques. In 1968, Hal Sackman was a research associate working for IBM, studying the characteristics of programmers employed in the commercial computing industry. In a report published that year, Sackman wrote: “They [computer science professors] are too busy teaching simon-pure courses in their struggle for academic recognition to pay serious time and attention to the applied work necessary to educate programmers and systems analysts for the real world.”38 By simon-pure, Sackman implied that academics were engaged in teaching computing concepts with an abstract, theoretical propriety. Sackman believed this to be a pretentious commitment to principle that was essentially insincere and disconnected from everyday concerns.
Richard Hamming, a mathematician, information theorist, and Turing Award winner at Bell Labs, also criticized the academic training delivered in his era. In 1968, Hamming repeated a phrase