Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
An Overview of theField of Computing
John K. Bennett
IWKS 2300 Section 2
Fall 2019
Many computer science book trace the development of computing
hardware and software, referring to different eras as “generations”. This
is not a universally accepted approach, but it does no harm, and
might be a helpful way to think about the topic.
Vacuum TubesRelatively large, failure over time due to heat
Magnetic Drum Memory: cyl. rotated under read/write heads
Card Readers Magnetic Tape DrivesSequential auxiliary storage devices
First Generation Hardware (1951-1959)
TransistorReplaced vacuum tubes, fast, small, durable, cheap (esp. after silicon transistors)
Magnetic CoresReplaced magnetic drums, information available w/o mechanical access latency
Magnetic DisksReplaced magnetic tape, more reliable, rotational vs. sequential latency
Second Generation Hardware (1959-1965)
Integrated CircuitsReplaced circuit boards with discrete components (transistors, resistors, capacitors, etc.), smaller, cheaper, faster
TransistorsNow used for memory construction
Cathode Ray Tube (CRT) Terminal An input/output device with a keyboard and screen
Third Generation Hardware (1965-1971)
Large-scale IntegrationMove from bi-polar to MOSFET transistors
PCs, the Commercial Market, WorkstationsPersonal Computers and Workstations emerge. New companies emerge: Apple, Sun, Dell …
Portable Computers -> LaptopsAnyone can have a portable computer
4th Gen. Hardware (1971 to ~1985)
We stopped really counting generations at 4…
Generation 5 is everything else…
Computer Software
4
Layers of a Computing System:The “Onion” View
4
Layers of Computing SystemsJKB’s View
Bits
Data
Information
Knowledge
Transistors
Gates
Logic
Architecture
Operating System
Application Program
Middleware SW
HW
Machine Language
Computer programs written in binary (1s & 0s) - Really!
Assembly Language and Assembler
Programs written using mnemonics, which were
translated into machine language. Example:
C= A+B could be represented as:
Load A 1101 0000 0000 0001
Load B 1101 0000 0000 0010
Add 1111 0000 0000 0000
Store C 1110 0000 0000 0011
(Addresses of A, B, and C = “1”, “10”, & “11”)
First Generation Software (~1951 - ~1959)
High-level Languages and CompilersAllowed programs to be written in more abstract, easier-to-read (by humans) ways. These programs were then translated into assembly language (later, directly into machine code) by the compiler.
Examples of Early High-Level Languages:Fortran (arithmetic functions)COBOL (business data manipulation)Lisp (“functional” PL)ALGOL (closest to modern languages)
Second Generation Software (~1959 - ~1965)
FORTRAN Example
C AREA OF A TRIANGLE - HERON'S FORMULAC INPUT - CARD READER UNIT 5, INTEGER INPUTC OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUTC INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING
INTEGER A,B,CREAD(5,501) A,B,C
501 FORMAT(3I5)IF(A.EQ.0 .OR. B.EQ.0 .OR. C.EQ.0) STOP 1S = (A + B + C) / 2.0AREA = SQRT( S * (S - A) * (S - B) * (S - C) )WRITE(6,601) A,B,C,AREA
601 FORMAT(4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2,12HSQUARE UNITS)STOPEND
Cobol Example$ SET SOURCEFORMAT"FREE"IDENTIFICATION DIVISION.PROGRAM-ID. Multiplier.AUTHOR. John Bennett.* Example program using ACCEPT, DISPLAY and MULTIPLY to * get two single digit numbers from the user and multiply them together
DATA DIVISION.
WORKING-STORAGE SECTION.01 Num1 PIC 9 VALUE ZEROS.01 Num2 PIC 9 VALUE ZEROS.01 Result PIC 99 VALUE ZEROS.
PROCEDURE DIVISION.DISPLAY "Enter first number (1 digit) : " WITH NO ADVANCING.ACCEPT Num1.DISPLAY "Enter second number (1 digit) : " WITH NO ADVANCING.ACCEPT Num2.MULTIPLY Num1 BY Num2 GIVING Result.DISPLAY "Result is = ", Result.STOP RUN.
COBOL Fibonacci Code (no recursion)IDENTIFICATION DIVISION.
PROGRAM-ID. FIBONACCI.ENVIRONMENT DIVISION.DATA DIVISION.WORKING-STORAGE SECTION.77 N PIC 9(18).77 N1 PIC Z(18).77 M PIC 9(18) VALUE 1.77 O PIC 9(18).77 I PIC 9(4) VALUE 1.77 Q PIC X.PROCEDURE DIVISION.PARA-A.
DISPLAY ( 1 , 1 ) ERASE.DISPLAY ( 2 , 1 ) "FIBONACCI NUMBERS FROM 1
TO 100 ARE:".MOVE 0 TO N.DISPLAY " ".DISPLAY 0.DISPLAY 1.MOVE 0 TO O.
PARA-B.
COMPUTE N = O + M.MOVE N TO N1.MOVE M TO O.MOVE N TO M.DISPLAY N1.ADD 1 TO I.IF I = 21
DISPLAY "PRESS TAB KEY TO VIEW NEXT PAGE."ACCEPT Q.
IF I = 41DISPLAY "PRESS TAB KEY TO VIEW NEXT PAGE."ACCEPT Q.
IF I = 61DISPLAY "PRESS TAB KEY TO VIEW NEXT PAGE."ACCEPT Q.
IF I = 81DISPLAY "PRESS TAB KEY TO VIEW NEXT PAGE."ACCEPT Q.
IF I = 99GO TO STOP-PARA
ELSEGO TO PARA-B.
STOP-PARA.DISPLAY " ".STOP RUN.
Lisp Example
(defun fibonacci (N)"Compute the N'th Fibonacci number."(if (or (zerop N) (= N 1))
1(+ (fibonacci (- N 1)) (fibonacci (- N 2)))))
ALGOL Example
procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of sizen by m is transferred to y, and the subscripts of this elementto i and k;begin integer p, q;
y := 0; i := k := 1;for p:=1 step 1 until n dofor q:=1 step 1 until m do
if abs(a[p, q]) > y thenbegin y := abs(a[p, q]);i := p; k := qend
end Absmax
APL Programming Example
The following APL expression finds all prime numbers from 1 to R.
(~R∊R∘.×R)/R←1↓ιR
This example demonstrates why APL is sometimes called a “write-once” programming language.
Third Generation Software (~1965 - ~1971)
“Systems” Software becomes prevalent
• Utility programs
• Language translators
• Operating system, which provides an abstraction of the underlying hardware, and performs scheduling
Emergence of computer use by non-programmers (i.e., “users”)
Computer programmers write programs to be used by general public
Structured Programming Languages; Examples:Pascal CC++Python
New Application Software for UsersSpreadsheets Word processors Database management systemsGAMES
Fourth Generation Software (~1971 - ~1989)
Pascal Code Exampleprogram fibonacci; var
result : longint;num,i, error: integer;strnum: string;
function fib(n : integer) : longint;begin
if n <= 2 then fib := 1else fib := fib(n-2) + fib(n-1);
end;
beginif ParamCount = 1 thenbegin
val (ParamStr(1), num, error);end;for i := 1 to num do
begin write (The next Fibonacci number is : ');writeln fib(i);end;
end;end.
C Example
int fibonacci(int n) {
if (n <= 1) return n;else return fibonacci(n-1) + fibonacci(n-2);
}
#include<stdio.h> int main( int argc, char *argv[] )) {
int n = argv[0];for (int i = 1; i <= n; i++)
printf(“The next Fibonacci number is %d\n", fib(i));}
C++ Exampleint fibonacci(int n){if (n <= 1) return n;else return fibonacci(n-1) + fibonacci(n-2);}
#include <stdio.h>int main(int argc, char* argv[])) {
int n = argv[0];for (int i = 1; i <= n; i++)
cout << " (“The next Fibonacci number is " << fib(i) << “\n”);}
Python 3.x Example
## Python program to display the nth Fibonacci number using recursiondef fib(n):## Recursive function to compute Fn, the nth Fibonacci number
if n <= 1:return n
else:return(fib(n-1) + fib(n-2))
## User Inputnum = int ( input("What Fibonacci number would you like to print? "))
## Input must be > 0 (to be valid) and < 31 (to limit recursion)if ((num < 0) or (num > 30)):
print ("Please enter a positive integer less than 31")else:
print (f "The Fibonacci number of {num} is {fib(num)}.")
Apple and MicrosoftWindows-based, mouse-driven operating systems and applicationsMicrosoft SW dominates market until 2005 or so
Object-Oriented DesignBased on a hierarchy of abstractionExamples: Smalltalk, C#,Java
World Wide WebUbiquitous global communication via Internet
UsersNo programming ability assumed (my mother)
Fifth Generation Software (1990- present)
Smalltalk Code Example
fib^ self < 2
ifTrue: [ 1 ]ifFalse: [ (self - 2) fib + (self - 1) fib ]
Java Code Examplepublic class Fibonacci {
public static long fib(int n) {if (n <= 1) return n;else return fib(n-1) + fib(n-2);
}
public static void main(String[] args) {int n = Integer.parseInt(args[0]);for (int i = 1; i <= n; i++)
StdOut.println(“The next Fibonacci number is " + fib(i) + “\n”);}
}
C# Code Example// Recursively computes a Fibonacci numberfloat fib(int num){
float result;if (num==1)
result=0;else{
if (num==2)result=1;
elseresult=fib(num-1)+fib(num-2);
}return result;
}
Mobile Devices and Applications
This is the big game changer. Why?
Mobile Devices: We’re Past the Tipping Point
How Do We Access Digital Media?
Detailed Comparison of Mobile Operating Systems
https://en.wikipedia.org/wiki/Comparison_of_mobile_operating_systems
.2%
Everybody Else
Mobile Cybersecurity is a Big Deal
ZDNet - By Ellyne Phneah | March 26, 2013 -- 10:34 GMT (03:34 PDT) | Topic: Security
Programmer / User
Applications Programmer(uses tools)
User with No
Computer Background
Systems Programmer(builds tools)
Domain-Specific Programs (apps)
Computing as a Tool
21
Computing as a Discipline
Computer Science is a richly diverse field of endeavor
Useful traits and skills (software-centric view)
– Algorithmic thinking (solution planning)
– Representation (how to represent problem context)
– Programming (clearly express 1&2)
– Design (making end result artistically pleasing)
Systems Areas of Computer Science
• Algorithms and Data Structures
• Programming Languages
• Architecture
• Operating Systems
• Software Design and Engineering
• Human-Computer Communication
• Computer-Computer Communication
Application Areas of Computer Science
• Numerical Computation
• Symbolic Computation
• Databases and Information Retrieval
• Artificial Intelligence and Robotics
• Graphics
• Gaming (in the broadest sense)
• Organizational Informatics
• Bioinformatics
Abstraction as an Underlying Principle
5
A “black-box” view that masks lower-level complexity, typically for the purpose of simplifying the interface to that complexity
Abstraction will show up throughout the course.
What is an Abstraction?
“Low-level” View
An Abstraction of that View
Let’s Talk About the Internet
What is the Internet?
• A network of networks, joining many government, university and private computers together and providing an infrastructure for the use of E-mail, bulletin boards, file archives, hypertext documents, databases and other computational resources
• The creation of the Internet solved the following challenges:– Basically inventing digital networking as we know it
– Survivability of an infrastructure to send / receive high-speed electronic messages
– Reliability of computer messaging
The Origins of the Internet
• 1945: Memex Conceived by Vannevar Bush– We can access information using electronic
computers.
• 1948: Claude Shannon publishes A Mathematical Theory of Communication– We can do this reliably by sending and receiving
“bits.”
• 1958: First Silicon IC (Texas Instruments)– We can do it cheaply by using circuits etched in
silicon.
The Origins of the Internet
• 1962: First published concept of a network of computers
– We can envision a vast network of computers used for accessing information and exchanging ideas.
• 1964: Packet switching developed
– We can send digitized data though computer networks in “packets.”
• 1965: Hypertext developed
– Hypertext can be used to allow rapid access to text data.
The Internet: The Sixties • 1962: J. C. R. Licklider, of Bolt, Beranek and Newman (BBN),
published memoranda discussing his concept for an “Intergalactic Computer Network.”
• 1966: First experiments in digital packet switched technology.
• 1968: DARPA (Defense Advanced Research Projects Agency) issues RFQ (request for quote) for IMPs (Interface Message Processors) to 140 potential bidders. Only 12 responded (AT&T says it will never work and does not bid).
• 1969 - BBN is awarded the contract to create ARPANET.
The Internet: The Seventies
• 1970 - First five nodes on ARPANET: – UCLA– Stanford– UC Santa Barbara– U of Utah, and – BBN
• 1974: TCP specification developed by Cerf and Kahn• 1975: AlohaNet at the University of Hawaii• 1975: ARPANET has 100 hosts; operational responsibility
passed to DCA.• 1976: Metcalfe and Boggs (Xerox PARC) publish seminal
Ethernet paper in CACM (3MB; based upon cheap cable TV technology)
• 1977: 4-network demonstration of ARPANET, SATNET, Ethernet, and PRnet.
The Entire Internet (circa 1977)
The Internet: The Eighties• 1980: Design of TCP/IP completed.
• 1983: Conversion to TCP/IP completed; "gateways" and "routers" allow full inter-networking (ARPANET becomes a "network of networks"). Roughly 500 hosts.
• 1983: Stanford University Network computers licensed to ~10 companies, one of which became successful.
• 1983: DARPA contracts with Berkeley to include networking protocols in BSD Unix.
• 1988: ARPANET becomes NSFNET; regional networks established; backbone speed 56Kbps. Roughly 100,000 hosts and 200 networks.
The Internet: The Nineties• 1989: CNRI interconnects MCImail to the Internet (a wise
policy choice). • 1989: CERN (European Organization for Nuclear Research)
is the largest Internet node in Europe.• 1990: Tim Berners-Lee, working as a CERN Fellow, joins
hypertext with the Internet to create the World Wide Web and the first web browser.
• 1990: Backbone speed increased to 1.5Mbps by IBM and MCI. Roughly 250,000 hosts, 1,500 networks.
• 1992: Mosaic web browser was developed at the National Center for Supercomputing Applications (NCSA) at the University of Illinois Urbana-Champaign. Released in 1993, Mosaic stimulates explosive growth of the WWW.
• 1995: Full commercialization, at 45Mbps. Roughly 6,000,000 hosts and 50,000 networks.
• The Internet is discovered by business...
AOL, CompuServe, Prodigy, MSN, and AT&T discover the Internet...
Growth in Number of Internet Hosts: 1969 - 1999
Source: Matrix Information and Directory Services, Inc. (MIDS)
1
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
10000000000
1981
1983
1985
1987
1989
1991
1993
1995
1997
1999
2001
2003
2005
Number of Internet Hosts
World Population
1969-2017
Internet Live Stats12:12 PM Sept. 2, 2019
http://www.internetlivestats.com/
Internet Penetration (2019)
Internet Users in the Worldby Geographic Region – June 2019
Internet Users per 100 Inhabitants
What is “The Internet of Things” (IoT)
• The network of physical objects, animals and people that are provided with unique identifiers and embedded with electronics, software, sensors, and connectivity to enable the unattended exchange of information over the Internet.
• IoT market size estimated to exceed $7 Trillionby 2020
• also called “Internet of Everything”
• also kind of creepy…
• Take IWKS 4120 next semester to learn more
IOT Growth Estimates