Course Information

Course Description

Analysis and discussion of seminal works in computer science. Emphasis on works that changed the course of computing and continue to this day to provoke and stimulate. We will study foundational ideas that are at the core of personal computing, the Web, artificial intelligence, computer system design, computer networks, computer graphics, cryptography, and more.

Through immersion in original literature, we can more deeply comprehend the present state of computing, its origins, its underlying assumptions, and its major open questions. In connecting students with the ideas that shaped computer science, the course aims to instill lasting inspiration and a deep understanding of major trends in the field.

Handouts

Schedule

Day Topic Required Reading Supplementary Reading
March 28 Course introduction Edmund C. Berkeley, Giant Brains or Machines That Think (1949) [excerpts]
March 30 Toward digital computing Luigi F. Menabrea, Sketch of the Analytical Engine Invented by Charles Babbage, with notes by Ada Lovelace (1843)

Howard Aiken, Proposed Automatic Calculating Machine (1937)

John von Neumann, First Draft of a Report on the EDVAC (1945)
April 4 The dawn of artificial intelligence
John von Neumann, The General and Logical Theory of Automata (1948)

Alan M. Turing, Computing Machinery and Intelligence (1950)
Alan M. Turing, Intelligent Machinery (1948)

Claude E. Shannon, Computers and Automata (1953)

John R. Searle, Minds, Brains, and Programs (1980) [with commentary]
April 6 Abstract reasoning Claude E. Shannon, Programming a Computer for Playing Chess (1950) John McCarthy, Marvin Minsky, Nathaniel Rochester, Claude E. Shannon, A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence (1955)

Rodney A. Brooks, Intelligence Without Representation (1991)
April 11 Learning Arthur L. Samuel, Some Studies in Machine Learning Using the Game of Checkers (1959) David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams, Learning Representations by Back-Propagating Errors (1986)

Richard S. Sutton, Learning to Predict by the Methods of Temporal Differences (1988)
April 13 Computability and complexity
Alan M. Turing, On Computable Numbers, with an Application to the Entscheidungsproblem (1936)

Juris Hartmanis and Richard E. Stearns, On the computational complexity of algorithms (1965)
Kurt Goedel, Letter to John von Neumann (1956)

Michael O. Rabin and Dana Scott, Finite Automata and Their Decision Problems (1959)

Stephen A. Cook, The Complexity of Theorem Proving Procedures (1971)

Richard M. Karp, Reducibility Among Combinatorial Problems (1972)
April 18 Algorithms Jack Edmonds, Paths, trees, and flowers (1965) Michael O. Rabin, Probabilistic algorithms (1976)
April 20 Cryptography and security
(guest: Whitfield Diffie)
Whitfield Diffie and Martin E. Hellman, New Directions in Cryptography (1976) Ronald L. Rivest, Adi Shamir, and Leonard Adleman, A Method for Obtaining Digital Signatures and Public-Key Cryptosystems (1978)

Ken Thompson, Reflections on Trusting Trust (1984)

Ross Anderson, Why Cryptosystems Fail (1993)
April 25 Augmenting human intellect
Vannevar Bush, As We May Think (1945)

Douglas C. Engelbart et al., Presentation at the Fall Joint Computer Conference (December 9, 1968)
Theodor H. Nelson, A File Structure for the Complex, the Changing, and the Indeterminate (1965)

Douglas C. Engelbart and William K. English, A Research Center for Augmenting Human Intellect (1968)

Douglas C. Engelbart, Augmenting Human Intellect: A Conceptual Framework (1962)
April 27 Toward personal computing
J. C. R. Licklider, Man-Computer Symbiosis (1960)

John McCarthy, The Home Information Terminal (1970)

Alan C. Kay, A Personal Computer for Children of All Ages (1972)
John McCarthy, Memorandum to P. M. Morse Proposing Time Sharing (1959)

J. C. R. Licklider and Welden E. Clark, On-Line Man-Computer Communication (1962)

Alan C. Kay and Adele Goldberg, Personal Dynamic Media (1977)

Charles P. Thacker et al., Alto: A Personal Computer (1979)
May 2 System design
David Parnas, On the Criteria to be Used in Decomposing Systems into Modules (1972)

Jerome H. Saltzer, David P. Reed, and David D. Clark, End-to-End Arguments in System Design (1984)
Butler Lampson, Hints for Computer System Design (1983)
May 4 Operating systems
(guest: John Ousterhout)
Dennis M. Ritchie and Ken Thompson, The UNIX Time-Sharing System (1974) Edsger W. Dijkstra, The Structure of the "THE"-Multiprogramming System (1967)
May 9 Computer architecture
(guest: Subhasish Mitra)
Gene M. Amdahl, Gerrit A. Blaauw, and Frederick P. Brooks, Architecture of the IBM System/360 (1964)

Richard M. Russell, The CRAY-1 Computer System (1978)
Maurice V. Wilkes, Slave Memories and Dynamic Storage Allocation (1965)
May 11 Computer graphics
Ivan E. Sutherland, Sketchpad: A Man-Machine Graphical Communication System (1963) Ivan E. Sutherland, The Ultimate Display (1965)

Martin E. Newell and James F. Blinn, The Progression of Realism in Computer Generated Images (1977)
May 16 Computer-mediated communication
J. C. R. Licklider and Robert W. Taylor, The Computer as a Communication Device (1970)

Jim Hollan and Scott Stornetta, Beyond Being There (1992)
Douglas C. Engelbart, Intellectual Implications of Multi-Access Computer Networks (1970)
May 18 Information theory Claude E. Shannon, A Mathematical Theory of Communication, 1948
May 23 Computer networks
(guest: Nick McKeown)
David D. Clark, The Design Philosophy of the DARPA Internet Protocols (1988) Paul Baran, On Distributed Communications Networks (1964)

Vinton G. Cerf and Robert E. Kahn, A Protocol for Packet Network Intercommunication (1974)

Barry M. Leiner et al., A Brief History of the Internet (2009)
May 25 The World Wide Web
Tim Berners-Lee et al., World-Wide Web: The Information Universe (1992)

Sergey Brin and Lawrence Page, The Anatomy of a Large-Scale Hypertextual Web Search Engine (1998)
Tim Berners-Lee, Information Management: A Proposal (1989)

Lawrence Page, Sergey Brin, Rajeev Motwani, Terry Winograd, The PageRank Citation Ranking: Bringing Order to the Web (1998)
May 30 Memorial Day, no class
June 1 Final project presentations

Assignments

Before each class session, every student must individually submit a short critique on each of the required readings (see the handout for more information).

Critiques are due by 7:00am the day of the class. Use the online submission system to submit your critiques. Log in with your SUNet username and password. Submissions in plain text are strongly encouraged, though you may also attach a PDF if you really need to. Please avoid MS Word (.doc) files, we cannot guarantee to open them correctly.

The submission system automatically closes at 7:00am sharp and late submissions will not be accepted. Please be on time.

Similar Courses

There have been a number of similar courses in other departments, some of which provided inspiration and informed the syllabus: