Computer Programming�Some Context
Prepared by Joe Del Rocco
“I wish to God these calculations had been executed by steam!”
Charles Babbage, 1821 [3]
Humans Have Been Computing For A Long Time
Mechanical Computing (Calculators)
Images courtesy of Computer History Museum
Computers Pre-1950
Veterans Bureau 1929
Image courtesy of Computer History Museum
“number crunching”
The Algorithm
by Wvbailey , CC BY-SA 3.0
General Purpose, Programmable, Computing
Technology, industry innovations…
Need for fast, accurate computations…
“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.”
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
So Many Contributors!
“Amazing Grace” Hopper
Contributed the assembler, COBOL, standards, etc.
Women In Computing
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
Modern Computer Programming Evolution
Arnold Reinhold, CC BY-SA 3.0
switches, dials, plugs
binary
assembly
high level languages
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
Programming Languages
Programs Are Like Recipes
Inputs
Algorithm
Output
Inputs
Algorithm
Output
References