A set of brief presentations of some of the women and men who made the history of computer science and software engineering.
- 1936: Alan Turing
- 1948: Claude Elwood Shannon
- 1950: Grace Murray Hopper
- 1960: John McCarthy
- 1966: Frances E. Allen
- 1967: Ole-Johan Dahl
- 1967: Kristen Nygaard
- 1969: Charles A. R. Hoare
- 1970: Edgar F. Codd
- 1972: Dave Parnas
- 1974: Manny Lehman
- 1975: Frederick Brooks
- 1986: Edward Yourdon
- 1987: Barbara Liskov
- 1994: Erich Gamma
- 1997: Grady Booch
- 2001: Butler Lampson
1. Yann-Gaël Guéhéneuc
This work is licensed under a Creative
Commons Attribution-NonCommercial-
ShareAlike 3.0 Unported License
Some
Well-known
Computer Scientists
yann-gael.gueheneuc@concordia.ca
Version 1.0.2
2019/02/20
3. 3/79
Why Is It Important? (1/2)
“Those who cannot remember the past are
condemned to repeat it”
—By George Santayana
in Life of Reason, Reason in
Common Sense, Scribner's,
1905, page 284
4. 4/79
Why Is It Important? (2/2)
Pythagoras’ theorem
Ohm’s law
…
You know the Nobel Prizes…
… do you know the Turing Awards?
5. 5/79
How to Choose? (1/2)
Hundreds of women and men made and are
making the history of computer science
– Difficult choice, impossible choice
– Inclusion criteria
• Historical importance
• Historical continuity
• Link to software engineering
– No exclusion criteria!
6. 6/79
How to Choose? (2/2)
Suggestions for other computer scientists to
appear here
– Please send an e-mail to Yann-Gaël Guéhéneuc
yann-gael.gueheneuc@concordia.ca
7. 7/79
Some Well-known Computer Scientists
1936 Alan Turing
1948 Claude Elwood Shannon
1950 Grace Murray Hopper
1960 John McCarthy
1966 Frances E. Allen
1967 Dahl et Nygaard
1969 Charles A. R. Hoare
1970 Edgar F. Codd
1972 Dave Parnas
1974 Manny Lehman
1975 Frederick Brooks
1986 Edward Yourdon
1987 Barbara Liskov
1994 Erich Gamma
1997 Grady Booch
2001 Butler Lampson
8. 8/79
Alan Turing
Alan Mathison Turing
– Born June 23rd, 1912, died June 7th, 1954
– Turing machines, undecidability, halting
problem, computability
The Turing Award is given in his honour
IEEE Milestone
…
– http://en.wikipedia.org/wiki/Alan_Turing
Alan Turing
*1912 †1954
9. 9/79
Alan Turing
1928
– Hilbert introduced the decision problem
1931
– Gödel give results on the limits of proofs and
computability
10. 10/79
Alan Turing
1936
– “On computable
numbers with an
application to the
entscheidungsproblem”
• Turing introduces a
concept of machines now
known as “Turing
machines”
• Turing proves with his
machines that the halting
problem is undecidable
11. 11/79
Alan Turing
Halting problem
– First problem proven undecidable
– Used to prove that other problems are
undecidable by reduction
12. 12/79
Alan Turing
Generalisation particular cases
– Correctness proofs are posibles but on
particular problems and not automatically in the
general case
Formal methods tests
– Prove the correctness of a particular algorithm
– Prove the presence of errors
13. 13/79
Alan Turing
19381945
– Work at Bletchley Park
• British Government Code and Cypher School
• Five major contributions
– Decode the Enigma code of the German army
– Decode the indicator procedure of the Enigma use by the
German navy
– Develop a statistical method to make the “Bombe”
more efficient
– Develop a procedure to decode the
Lorenz SZ 40/42 machines
– Develop a voice scrambler
15. 15/79
Alan Turing
Chapter 10 is all about
undecidability
– Proof by contradiction
– ChurchTuring thesis
– Consequences
• Algorithms
• Humans
16. 16/79
Claude Elwood Shannon
Claude Elwood Shannon
– Born April 30th, 1916, died
February 24th, 2001
– Father of the information theory
National Medal of Science in the USA in 1966
IEEE Medal of Honor in 1966
…
– en.wikipedia.org/wiki/Claude_Shannon
Claude Elwood Shannon
*1916 †12001
19. 19/79
Claude Elwood Shannon
1948
« The fundamental problem of communication is
that of reproducing at one point, either exactly or
approximately, a message selected at another
point. »
—Shannon, in A Mathematical
Theory of Communication, 1948
20. 20/79
Claude Elwood Shannon
1948
– Probabilistic theory quantifying the average
information content of a message
– Entropy
– Code theory
• Compression
• Detection and correction of errors
– All electronic “communication”!
– Cryptography
21. 21/79
Grace Murray Hopper
Grace Murray Hopper (rear admiral)
– Born the 9th of December, 1906, died the
1st of January, 1992
– Mother of the first compiler, of the term
“debugging”, of COBOL and of standards
Defense Distinguished Service Medal in the USA
in 1986
– Cf. http://en.wikipedia.org/wiki/Grace_Hopper
Grace Hopper
*1906 †1992
22. 22/79
Grace Murray Hopper
1944
– WWII is almost over
– Computers showed their usefulness
• Dehomag D11 (Germany/USA, 1930s):
handling of identify cards
• Zuse Z3 (Germany, 1941): flutter
(dynamic aeroelasticity of wings)
• Colossus Mark 1 (Grande Bretagne,
1943): decoding of messages
• Harvard Mark I (USA, 1944): production
of calculus tables for the Navy
23. 23/79
Grace Murray Hopper
Principle of the first
computers
– Electromechanical or
electromagnetic relays
– Two active relays make
a third relay active
• Relays “3” et “6” make
relay “9” active for a sum
1947
24. 24/79
Grace Murray Hopper
1950
– Computers become programmable with higher-
level languages than microcode or assembly
• UNIVAC I: census
• A-0 (Arithmetic Language version 0)
• Loader or linker more than a compiler
1954
– B-0 (Business Language version 0) also known
as FLOW-MATIC
25. 25/79
Grace Murray Hopper
1959
– Conference CODASYL (Conference on Data
Systems Languages)
– COBOL as successor of FLOW-MATIC
– Close to English
1970s
– Advocated standards tests for programming
languages, FORTRAN in particular
26. 26/79
John McCarthy
John McCarthy
– Born the 4th of September, 1927
– Died on the 24 October, 2011
– Father of artificial intelligence, LISP, contributor to time-
sharing computing, inventor of “SaaS”
ACM Turing Award in 1971
National Medal of Science in the USA in 1991
– Cf. http://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)
John McCarthy
*1927 †2011
27. 27/79
John McCarthy
Artificial intelligence, 1956
– Champion of logic programming
– Collaboration with Marvin Minsky
Inventor of LISP, 1960
– Recursive Functions of Symbolic
Expressions and Their Computation
by Machine, Part I, 1960
– Lambda calculus
– Garbage collection
28. 28/79
John McCarthy
Time-sharing systems
– Multiprogramming and multitasking
– Most important change of paradigm in computer
science in 1970
• Sharing of resources to avoid “waiting computation
time (cycles)”
– SaaS
• Software as a Service
• Architecture/engineering based on services
DEC PDP-1, c. 1960
29. 29/79
Frances E. Allen
Frances E. Allen
– Born on the 4th of August, 1932
– Pioneer of optimising compilation, code
optimisation, and parallelisation
AWC Augusta Ada Lovelace Award in 2002
ACM Turing Award in 2006
– Cf. http://en.wikipedia.org/wiki/Frances_E._Allen
Frances E. Allen
*1932
30. 30/79
Frances E. Allen
Before 1966
– Since the 1930s
• Programmable computers
– Since the 1950s
• First compilers by Grace Murray Hopper
• Programming languages
– FORTRAN: first complete compiler
– COBOL: first programming language compiled for different
computer architectures (UNIVAC II et RCA 501)
31. 31/79
Frances E. Allen
Before 1966
– In 1955
• Context-free grammar invented by Noam Chomsky
– In 1966
• LR Parsing invented by Donald Knuth
32. 32/79
Frances E. Allen
In 1966
– Program Optimization
• Use of graphs to describe programs and to allow their
optimisations
In 1970
– Control Flow Analysis et A Basis for Program
Optimization
• Intervals for control-flow analyses
In 1974
– Interprocedural data flow analysis
• Interprocedural analyses of whole programs
33. 33/79
Dahl–Nygaard
Ole-Johan Dahl
– Born 12 October 1931, †29 June 2002
– Co-inventor of the object-oriented paradigm
– ACM Turing Award in 2001
– IEEE J. von Neumann in 2002
– Cf. http://www.olejohandahl.info/
– Cf. http://en.wikipedia.org/wiki/Ole-Johan_Dahl
Ole-Johan Dahl
*1931 †2002
34. 34/79
Dahl–Nygaard
Kristen Nygaard
– Born 27 August 1926, †10 August 2002
– Co-inventor of the object-oriented paradigm
– ACM Turing Award in 2001
– IEEE J. von Neumann in 2002
– Cf. http://www.ifi.uio.no/in_memoriam_kristen/
– Cf. http://en.wikipedia.org/wiki/Kristen_Nygaard
Kristen Nygaard
*1926 †2002
39. 39/79
Charles A. R. Hoare
Sir Charles Antony Richard Hoare
– Born January 11th, 1934
– Inventor of QuickSort
– Inventor of the Hoare logic
–
– ACM Turing Award in 1980
– IEEE J. von Neumann in 2011
– Cf. http://en.wikipedia.org/wiki/C._A._R._Hoare
Sir Charles Antony Richard Hoare
*1934
40. 40/79
Charles A. R. Hoare
QuickSort
– Context
• 1960
– In Soviet Union, Hoare works at Moscow State University in
automatic translation
– He must sort words to be translated to map them with words
already translated
– QuickSort
• O(n log(n)) in average, O(n2) worst case
• Works well with a cache
41. 41/79
Charles A. R. Hoare
Hoare logic
– Context
• 1969
– Study program correctness
– Original idea sown by Robert Floyd in 1967
– Verification of the correctness of a program
• Hoare triplet: {P} C {Q}
• Pre-condition P, instruction C, post-condition Q
• Set of rules for imperative languages…
42. 42/79
Edgar F. Codd
Edgar Frank “Ted” Codd
– Born August 23rd, 1913,
died April 18th, 2003
– Father of relational algebra
ACM Turing Award in 1999
– http://en.wikipedia.org/wiki/Edgar_F._Codd
Edgar F. Codd
*1923 †12003
43. 43/79
Edgar F. Codd
1960s
– Databases become possible
• Direct-access storages
– No standard data models or query models
– Two dominant models
• CODASYL, network model
– “Manual” traversal
• IBM/IMS, hierarchical model
– Relations 1:n only
(Microsoft Windows Registry)
44. 44/79
Edgar F. Codd
1970
– “A Relational Model of Data for Large Shared
Data Banks”
• Limits of the CODASYL approach
• Introduction of the concept of tables
• Introduction of the concept of relation (keys)
– IBM Future Systems includes SEQUEL in 1975
– Relational Software Inc. release Oracle in 1979
(SEQUEL becomes SQL at the end of the ’70s)
Lawrence Joseph "Larry" Ellison
*1944
45. 45/79
Edgar F. Codd
Today
– SQL is a standard
• ANSI since 1986
• ISO since 1987
– Implemented by almost all existing databases
– Interoperability
• Careful with proprietary extensions
• Careful with ambiguities
47. 47/79
Edgar F. Codd
NoSQL
– http://nosql-database.org/
– http://www.10gen.com/nosql
48. 48/79
Dave Parnas
Dave Parnas
– Born February 10th, 1941
– Father of the criteria to divide a program into
modules in a modular design
IEEE Computer Society 60th Anniversary Award
in 2007
– Cf. http://en.wikipedia.org/wiki/David_Parnas
Dave Parnas
*1941
49. 49/79
Dave Parnas
Modular design
– Context
• 1972
– Procedural and object
programming languages
– Flow diagrams
– Decomposition of
programs in modules,
classes…
50. 50/79
Dave Parnas
– Criteria
• “[I]t is almost always incorrect to begin the
decomposition of a system into modules on the basis
of a flowchart. We propose instead that one begins
with a list of difficult design decisions or design
decisions which are likely to change. Each module
is then designed to hide such a decision from the
others”
• Information hiding = Encapsulation
51. 51/79
Dave Parnas
– Rewriting of the criteria in terms of
• Cohesion
• Coupling
• Concepts “invented” by Larry Constantine in 1968
and published in 1972 in W. Stevens, G. Myers, L.
Constantine, "Structured Design", IBM Systems
Journal, 13 (2), 115-139, 1974.
• A module must have a strong cohesion and be
weakly coupled to other modules
52. 52/79
Manny Lehman
Meir M. “Manny” Lehman
– Died December 29th, 2010
– Father of the laws of software evolution
Stevens Award in 2003
– Cf. http://www.doc.ic.ac.uk/news/archive/story/
manny-lehman
– Cf. http://www.ieeeghn.org/wiki/index.php/Oral-
History:Meir_Lehman
Manny Lehman
*1925 †2010
53. 53/79
Manny Lehman
Laws of software evolution
– Context
• 1974
– IBM OS/360 et OS/370
• Types of programs
– S: can be formally specified
– P: follow an iterative development process
– E: are embedded in our environment
54. 54/79
Manny Lehman
– Eight laws
1. Continuing change: E-type systems must be continually
adapted or they become progressively less satisfactory
2. Increasing complexity: As an E-type system evolves its
complexity increases unless work is done to maintain or
reduce it
3. Self regulation: E-type system evolution process is self
regulating with distribution of product and process measures
close to normal
4. Conservation of organisational stability: The average
effective global activity rate in an evolving E-type system is
invariant over product lifetime
55. 55/79
Manny Lehman
– Eight laws
5. Conservation of familiarity: As an E-type system evolves all
associated with it must maintain mastery of its content and
behaviour to achieve satisfactory evolution. The average
incremental growth remains invariant as the system evolves
6. Continuing growth: The functional content of E-type systems
must be continually increased to maintain user satisfaction
over their lifetime
7. Declining quality: The quality of E-type systems will appear
to be declining unless they are rigorously maintained and
adapted to operational environment changes
8. Feedback system: E-type evolution processes constitute
multi-level, multi-loop, multi-agent feedback systems and must
be treated as such to achieve significant improvement over
any reasonable base
56. 56/79
Frederick Brooks
Frederick Brooks
– Born April 19th, 1931
– Father of Brooks’ Law
– IEEE J. von Neumann Medal in 1993
– ACM Turing Award in 1999
– Cf. http://en.wikipedia.org/wiki/Fred_Brooks
Frederick Brooks
*1931
57. 57/79
Frederick Brooks
Principle of Brooks’ Law
– Context
• 1956–1964
– Manager of the IBM OS/360 development project
– Delays in the delivery
– Book
• The Mythical Man-Month: Essays on Software
Engineering
– Principle
• Adding manpower to a late software project
makes it later
58. 58/79
Frederick Brooks
– Rationale
• It takes some time for the people added to a
project to become productive. Brooks calls this the
"ramp up" time. New workers must first become
educated about the work that has preceded them;
also integrate with a team composed of multiple
engineers who must educate the new worker in their
area of expertise in the code base, day by day
• Communication overheads increase as the
number of people increases. The number of
different communication channels increases along
with the square of the number of people
59. 59/79
Frederick Brooks
– Comments, solutions
• Brooks' Law applies to projects that are already late
• The quantity, quality and role of the people added to
the project also must be taken into consideration
• Good management and development practices also
help to minimize the impact of Brooks' Law
• Rather than depending on heroes to carry the day
with extraordinary efforts, Wiegers argues that a team
of ordinarily-skilled individuals can repeatedly deliver
timely results in the right work environment
60. 60/79
Frederick Brooks
– Critics
“How to quadruple your productivity with an army of
student interns”
• Tolerate a little crowding
• Locate next to a deep pool of hackers
• Know who the best people are and only hire them
• Pay well
• Divide tasks to be as loosely-coupled as possible
• Design your intern projects in advance
61. 61/79
Edward Yourdon
Edward Yourdon
– Born April 20th, 1944
– “Inventor” of seven types of cohesion
– Cf. http://en.wikipedia.org/wiki/Edward_Yourdon
Edward Yourdon
*1944
62. 62/79
Edward Yourdon
Modular design
– Context
• 1972
– Procedural and object
programming languages
– Flow diagrams
– Decomposition of
programs in modules,
classes…
• 1987
– Object-oriented
programming is
increasingly popular
63. 63/79
Edward Yourdon
– Cohesion criteria
1. Accidental: the weakest cohesion in which their is
no links between methods or their link is based on a
useless criteria
– Utility classes
2. Logic: when methods are linked logically by one or
more common criteria
– All classes pertaining to I/O, to user interactions...
3. Temporal: when methods must be called within a
common time-frame
– A method and the method called in on of its catch
statement, and so on
64. 64/79
Edward Yourdon
– Cohesion criteria
4. Procedural: when methods must be called in a
specific order
– One method that check user rights and one method that
opens a file subsequently
5. Communicational: when methods process the
dame set of data
– All classes pertaining to dates...
65. 65/79
Edward Yourdon
– Cohesion criteria
6. Sequential: when methods that process the same
set of data must be called in a specific order
– A parser: inputs to one class are the outputs of another
7. Functional: highest level of cohesion, when a class
or module is dedicated to a unique task
– Classes that contribute in implementing some
requirements
66. 66/79
Barbara Liskov
Barbara Liskov
– Born November 7th, 1939
– Mother of the Liskov’s substitution principle
– IEEE J. von Neumann Medal in 2004
– ACM Turing Award in 2008
– Cf. http://en.wikipedia.org/wiki/
Liskov_substitution_principle
Barbara Liskov
*1939
67. 67/79
Barbara Liskov
Liskov’s substitution principle
– Context
• 1987
– Object-oriented programming is increasingly popular
– Principle
• Let q(x) be a property provable about objects x
of type T. Then q(y) should be true for objects y
of type S where S is a subtype of T
68. 68/79
Barbara Liskov
– Principle
• Behavioural sub-typing is different and stronger than
the concept of sub-typing in type theory
• In type theory
– Contravariance of parameters: a parameter of type T can
accept object of type S, where S is a sub-type of T
– Covariance of return type: the return type can be “enlarged”
from T to S
• In addition
– Pre-conditions cannot be stronger in a sub-type
– Post-conditions cannot be weaker in a sub-type
– The sub-type S must preserve the invariants of type T
69. 69/79
Barbara Liskov
– Implementation in Java
• Java < 1.5
– Redefinition
/* Mother class */ public T foo(String a, String b) {...}
/* Daughter class */ public T foo(String a, String b) {...}
– Overriding
/* Mother class */ public T foo(String a, String b) {...}
/* Daughter class */ public T foo(String a, Integer c) {...}
• Java > 1.5
– Redefinition
/* Mother class */ public T foo(String a, String b) {...}
/* Daughter class */ public S foo(String a, String b) {...}
70. 70/79
Erich Gamma
Erich Gamma
– Born in 1961
– Father of the software design patterns
Dahl-Nygaard Prizes in 2006
– Cf. http://en.wikipedia.org/wiki/Erich_Gamma
– Cf. http://c2.com/cgi/wiki?ErichGamma
Erich Gamma
*1961
71. 71/79
Erich Gamma
Software design patterns
– Context
• 1977 et 1979
– Christopher Alexander
– A Pattern Language: Towns, Buildings, Construction and the
idea of generative patterns
– The Timeless Way of Building and the idea of perfection in
architecture
• 1990
– Object-oriented programs are becoming mainstream
72. 72/79
Erich Gamma
A Pattern Language: Towns, Buildings, Construction
– 253 patterns
– Generative grammar
– “At the core... is the idea that people should design for
themselves their own houses, streets and communities.
This idea... comes simply from the observation that most of
the wonderful places of the world were not made by
architects but by the people”
Design Patterns: Elements of Reusable Object-
Oriented Software
– 23 patterns
– Not a language?
– “Dynamic, highly parameterized software is harder to
understand and build than more static software”
73. 73/79
Erich Gamma
Design Patterns:
Elements of Reusable
Object-Oriented
Software
– Dahl-Nygaard Prizes to
• Ralph Johnson
• Richard Helm
• Erich Gamma
• † John Vlissides
74. 74/79
Grady Booch
Grady Booch
– Born February 27th, 1955
– Father of the UML with Jacobson and Rumbaugh
Stevens Award in 2003
– Cf. http://en.wikipedia.org/wiki/Grady_Booch
Grady Booch
*1955
76. 76/79
Grady Booch
– Three Amigos and their methods
• Grady Booch,
– Booch Method (design)
• Ivar Jacobson
– Object Oriented Software Engineering, OOSE (use cases)
• James Rumbaugh
– Object Modeling Technique, OMT (analysis)
• Rational Software Corporation
– UML
77. 77/79
Butler Lampson
Butler Lampson
– Born December 23, 1943
– Founding members of Xerox Parc
– IEEE J. von Neumann Medal in 2001
– ACM Turing Award in 1992
– Cf. https://en.wikipedia.org/wiki/Butler_Lampson
78. 78/79
Butler Lampson
Wildflower general blueprint
Laser printer, two-phase commit protocols,
Bravo, WYSIWYG text formatting programs,
Ethernet, and Euclid
“Any problem in computer science can be
solved with another level of indirection”
– Attributed to David Wheeler in Lampson’s Turing
Award Lecture in 1993
79. 79/79
To Be Continued
ACM A. M. Turing Award
– Cf. http://awards.acm.org/homepage.cfm?
awd=140
AITO Dahl-Nygaard Prize
– http://www.aito.org/Dahl-Nygaard/
IEEE J. von Neumann Medal
– Cf. http://www.ieee.org/about/awards/bios/
vonneumann_recipients.html