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 Report

Transcript 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