1 of 17

Computer Programming�Some Context

Prepared by Joe Del Rocco

“I wish to God these calculations had been executed by steam!”

Charles Babbage, 1821 [3]

2 of 17

Humans Have Been Computing For A Long Time

3 of 17

Mechanical Computing (Calculators)

Images courtesy of Computer History Museum

4 of 17

Computers Pre-1950

Veterans Bureau 1929

Image courtesy of Computer History Museum

“number crunching”

5 of 17

The Algorithm

  • Euclid, Greek mathematician (~300BC)�publishes Elements, 13 vol. collection of math and geometry

  • One section contains the algorithm for finding the�greatest common divisor (GCD) of two numbers

  • This is often cited as the first documented�algorithm, though the word and its formalizations�would come much later

  • Algorithms are not equations…
    • A set of steps
    • Dynamic based on inputs

by Wvbailey , CC BY-SA 3.0

6 of 17

General Purpose, Programmable, Computing

Technology, industry innovations…

Need for fast, accurate computations…

7 of 17

“The Mother & Father of Modern Computing”

“There are therefore two sets of cards, the first to direct the nature of the operations to be performed […,] operation cards; the other to direct the particular variables on which those cards are required to operate […,] variable cards. […] The Analytical Engine is therefore a machine of the most general nature. Whatever formula it is required to develop, […] must be communicated to it by two sets of cards.”

Charles Babbage [3]

“In almost every computation a great variety of arrangements for the succession of the processes is possible … One essential object is to choose that arrangement which shall tend to reduce to a minimum the time necessary for completing the calculation.”

Ada Lovelace [4]

“We may say most aptly that the Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves.”

8 of 17

Modern Computer Evolution Timeline

Hollerith’s Tabulating Machine

IBM

Babbage’s Final Difference Engine

iPhone

1850

1900

1950

2000

1960

1980

1990

1970

Human / Mechanical

Electromechanical

1st Gen

Mainframes

Minis

Micros / Personal

Start of WWII

the “modern” computer

Mobile

9 of 17

So Many Contributors!

10 of 17

“Amazing Grace” Hopper

Contributed the assembler, COBOL, standards, etc.

11 of 17

Women In Computing

  • (SURPRISE!) Women are underrepresented in the history of computing

  • Women contributed greatly to both the hardware and software evolution of computing technology and computer science

  • Unfortunately…
    • In 1985, 37% of computer science grads were women
    • In 2008, 18%

  • The ”Leaky Pipeline” problem refers to the statistics that there is a higher percentage of women with computing/engineering degrees than that of the industry

  • Orgs like Code.org, TEALS, Ignite-CS… us! (www.CactiCouncil.org) are addressing this

12 of 17

High school computer science

University �computer science

Software workforce

Women who try AP Computer Science in high school are ten times more likely to major in it in college, and Black and Hispanic students are seven times more likely.

Sources: College Board, National Center for Education Statistics, Bureau of Labor Statistics

Tech’s diversity problem starts in K-12 CS

13 of 17

Modern Computer Programming Evolution

Arnold Reinhold, CC BY-SA 3.0

switches, dials, plugs

binary

assembly

high level languages

14 of 17

From High Level To Machine Code

int y = 0; //

int x = 10; // code to add a variable and a literal

y = x + 350; //

Chitpone, CC BY-SA 3.0

lui $r1, 0

lui $r2, 0x0a

000010 00001 000000000000000000000

000010 00010 000000000000000001010

compiler

assembler

.exe

This is what modern programmers write

This is the resulting program executed by the computer

15 of 17

Programming Languages

16 of 17

Programs Are Like Recipes

Inputs

Algorithm

Output

Inputs

Algorithm

Output

17 of 17

References

  1. Pixabay. Public domain images released under CC0.�
  2. Creative Commons Share Alike, Attribution, General, 3.0, 2.5, 2.0 Licenses�https://creativecommons.org/licenses/by-sa/3.0/legalcodehttps://creativecommons.org/licenses/by/2.5/legalcodehttps://creativecommons.org/licenses/by/2.0/legalcode* scaling may have been applied to images to fit onscreen.

  • Goldstine, H. H. (1993). The Computer from Pascal to von Neumann (5th ed.). Princeton, NJ: Princeton University Press.

  • Menabrea, L.F., Lovelace, A. A. (1842). Sketch of The Analytical Engine Invented by Charles Babbage, With notes upon the Memoir by the Translator. Bibliothèque Universelle de Genève. Retrieved from (n.d.) http://www.fourmilab.ch/babbage/sketch.html