CS 185C: The History of Computing September 14 Class Meeting Department of Computer Science San Jose State University Fall 2011 Instructor: Ron Mak www.cs.sjsu.edu/~mak.
Download ReportTranscript CS 185C: The History of Computing September 14 Class Meeting Department of Computer Science San Jose State University Fall 2011 Instructor: Ron Mak www.cs.sjsu.edu/~mak.
CS 185C: The History of Computing
September 14 Class Meeting Department of Computer Science San Jose State University Fall 2011 Instructor: Ron Mak www.cs.sjsu.edu/~mak
Projects
Philip Gebhardt cryptography and the German Enigma machine Stefan Gloutnikov history of memory and storage systems Michael Haney Commodore 64 simulator SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 2
Projects
Youn Kim programming paradigms throughout history Yulian Kynchev functional programming languages Ryan Lichtig natural language processing (NLP) SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 3
Projects
Weili Liu evolution of social networks Patrick O’Connell simulation of PDP-1 Michael Riha history of compression algorithms SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 4
Projects
Steven Terpe non von Neumann machines Stephen Voglewede history of how computers have done science Last call for IEEE usernames!
SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 5
Donald Knuth
Monday, September 19 ENGR 189 auditorium, 6:00-7:00 PM The world’s most famous computer scientist Born 1938 in Milwaukee, WI Name is pronounced kuh-NOOTH Professor of The Art of Computer Programming, Emeritus, Stanford University, since 1993 First became Professor of Computer Science at Stanford University in 1968 SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 6
The Art of Computer Programming
Best known as the author of the classic work,
The Art of Computer Programming
(TAOCP) Volume 1:
Fundamental Algorithms
, 1968 2 nd edition 1973, 3 rd edition 1997 Volume 2:
Seminumerical Algorithms
, 1969 2 nd edition 1981, 3 rd edition 1997 Volume 3:
Sorting and Searching
, 1973 2 nd edition 1998 Volume 4A:
Combinatorial Algorithms, Part 1
, 2011 SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 7
Analysis of Algorithms
Knuth pioneered the analysis of algorithms Contributed to the development of rigorous analysis of the computational complexity of algorithms How to classify algorithms according to how difficult they are to compute, time and space requirements, etc.
Developed formal mathematical techniques for doing this type of analysis Also contributed to several other branches of theoretical computer science SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 8
Knuth-Morris-Pratt Algorithm
String searching algorithm searches a string
S
for occurrences of a word (substring)
W
.
Reduces the number of character-by-character comparisons by using information gained from previous mismatches.
S: 1 2 m: 01234567890123456789012
ABC ABCDAB ABCDABCDABDE
W:
ABC D ABD
i: 0123456 S: 1 2 m: 01234567890123456789012
ABC ABCDAB ABCDABCDABDE
W:
ABCDAB D
i: 0123456 S: W:
ABCDAB
1 2 m: 01234567890123456789012
ABC ABCDAB ABCDABCDABDE D
i: 0123456 S: 1 2 m: 01234567890123456789012
ABC ABCDAB ABCD ABCDABD E
W:
ABCDABD
i: 0123456 S: W:
AB
1 2 m: 01234567890123456789012
ABC ABCDAB ABCDABCDABDE C DABD
i: 0123456 SJSU Dept. of Computer Science Fall 2011: September 14 Builds a “partial match” table as it searches for matches to decide where to begin the next match.
CS 185C: This History of Computing © R. Mak 9
Concrete Mathematics
Co-authored by Knuth Based on a course taught at Stanford.
Mathematical preliminaries to TAOCP A blend of continuous and discrete mathematics A complement to abstract mathematics Written in a humorous style with “mathematical graffiti” in the margins.
Invented several notations, such as for the floor and ceiling functions.
SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 10
MIX
Algorithms in TAOCP are implemented in the MIX assembly language for a virtual machine.
Assembly language allows you to understand at a low level how an algorithm works.
Useful for analyzing performance Like the Java Virtual Machine, there are many software implementations of the MIX machine, including integrated development environments (IDE) SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 11
MIX IDE
SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 12
“Structured Programming with
go to
Statements” A very complete description of what “ structured programming ” is about.
Written by Knuth in 1974 Main themes A program needs to be rewritten several times before it can be considered a truly good program. Efficiency is important in some programming applications, and that the programmer needs the freedom to use
goto
’s to optimize critical portions of a program. Only 3% of a typical program needs to be optimized.
“Premature optimization is the root of all evil.” Structured programming could be made much more practical with the addition of a few language constructs. SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 13
“Structured Programming with
go to
Statements” There are times when the programmer should put
goto
statements into his code, rather than take them out. Use
goto
statements to: convert recursion to iteration implement coroutines eliminate Boolean variables by branching into common code Strategy: First, write the program in a structured manner to convince yourself that it is correct.
Then transform it into an efficient program, possibly by introducing some
goto
statements.
Finally, leave the original structured code behind as documentation, so that subsequent readers can understand how the transformation took place. SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 14
TeX and WEB
Created the TeX computer typesetting system and the MetaFont font definition language and rendering system Developed after he became dissatisfied with the quality of the typesetting of the second edition of Volume 2 of TAOCP.
Created the WEB programming system to promote “ literate programming ” Introduced in 1981 for TeX Programmed in Pascal Later CWEB for C programming Write programs in ordinary human language as a meta-language over the underlying computer language.
SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 15
TeX
Computer typesetting system designed and mostly programmed by Knuth Started in 1977, current version released 2008 Used to produce high quality, well-formatted books, especially books containing mathematical formulas The LaTeX document preparation system uses a high-level macro language to interface to TeX Widely used in academia SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 16
TeX
\magnification=\magstep1 \font\logo=manfnt % font used for the METAFONT logo \def\MF{{\logo META}\-{\logo FONT}} \hsize=4truein \raggedright \noindent{\bf Donald E. Knuth} (B.S. and M.S., Case Institute of Technology 1960; Ph.D., California Institute of Technology 1963) is Professor Emeritus of The Art of Computer Programming at Stanford University, where he supervised the Ph.D. dissertations of 28~students since becoming a professor in 1968. He is the author of numerous books, including three volumes (so far) of {\sl The Art of Computer Programming}, five volumes of {\sl Computers \& Typesetting}, and a non-technical book entitled {\sl 3:16\enspace Bible Texts Illuminated}.
His software systems \TeX\ and \MF\ are extensively used for book publishing throughout the world.
...
\nopagenumbers \bye
SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 17
LaTeX
\documentclass[12pt]{article} \usepackage{amsmath} \title{\LaTeX} \date{} \begin{document} \maketitle \LaTeX{} is a document preparation system for the \TeX{} typesetting program. It offers programmable desktop publishing features and extensive facilities for automating most aspects of typesetting and desktop publishing, including numbering and cross-referencing, tables and figures, page layout, bibliographies, and much more. \LaTeX{} was originally written in 1984 by Leslie Lamport and has become the dominant method for using \TeX; few people write in plain \TeX{} anymore. The current version is \LaTeXe. % The following shows a little of the typesetting power of LaTeX: \begin{align} E &= mc^2 \\ m &= \frac{m_0}{\sqrt{1-\frac{v^2}{c^2}}} \end{align} \end{document}
SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 18
LaTeX
SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 19
MetaFont
A programming language used to describe fonts, and the interpreter of the language Created by Knuth to work with his TeX typesetting system.
Glyph definitions use mathematical equations to define “ pen paths ” Parameters to each definition include aspect ratio, font slant, stroke width, serif size, etc.
Change a parameter value to alter the appearance of an entire font Uses cubic splines to describe curves SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 20
MetaFont
1 u#:=4/9pt#; 2 define_pixels(u); 3 beginchar(66,13u#,16u#,5u#);"Letter beta"; 4 x1=2u; x2=x3=3u; 5 bot y1=-5u; y2=8u; y3=14u; 6 x4=6.5u; top y4=h; 7 z5=(10u,12u); 8 z6=(7.5u,7.5u); z8=z6; 9 z7=(4u,7.5u); 10 z9=(11.5u,2u); 11 z0=(5u,u); 12 penpos1(2u,20); 13 penpos2(.5u,0); 14 penpos3(u,-45); 15 penpos4(.8u,-90); 16 penpos5(1.5u,-180); 17 penpos6(.4u,150); 18 penpos7(.4u,0); 19 penpos8(.4u,210); 20 penpos9(1.5u,-180); 21 penpos0(.3u,20); 22 pickup pencircle; 23 penstroke z1e..z2e..z3e..z4e..z5e..z6e..{up}z7e..z8e..z9e..{up}z0e; 24 labels(range 1 thru 9); 25 endchar; 26 end
SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 21
Religious Writings
Knuth is a Lutheran and has written Christian texts.
3:16 Bible Texts Illuminated
, 1991 Analysis of Chapter 3, verse 16 of each book of the Bible Each verse accompanied by calligraphic artwork
Things a Computer Scientist Rarely Talks About
, 2001 How does a computer scientist understand infinity? What can probability theory teach us about free will? Can mathematical notions be used to enhance one's personal understanding of the Bible? SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 22
Miscellaneous
Knuth is an accomplished musician.
Has a pipe organ in his home on the Stanford campus.
No longer does email.
“I have been a happy man ever since January 1, 1990, when I no longer had an email address.”
Also doesn’t carry a cell phone His first computer was the IBM 650.
Dedicates TAOCP volumes to that computer SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 23
Knuth and the IBM 650
Knuth at age 20 in 1958 at the console of the IBM 650 Case Institute of Technology SJSU Dept. of Computer Science Fall 2011: September 14 CS 185C: This History of Computing © R. Mak 24