Computer Science Fundamentals: Exposure, Hardware, Software, History, and Networking
Learning the Exposure Way
The "Nothing is Obvious" Concept:
A young boy raised in the Amazon jungle has lived without modern conveniences, never visiting a city, watching television, or reading a book.
Upon traveling to Colorado during winter, the Amazonian boy stands in a yard and watches falling snow with bewilderment and astonishment, as he does not understand what is falling from the sky.
A local boy from Colorado observes this reaction with confusion, failing to understand why the visitor acts strangely when it is "obviously" snowing.
Cultural Perceptions of "Obvious":
In the United States, pouring cold milk on corn flakes is considered obvious, whereas in Europe, pouring warm milk on cereal is standard practice.
In Europe, serving tea warm or hot is considered obvious; European observers are baffled when Texans put ice in tea.
The Exposure Equation
The Fundamental Equation:
Exposure in Extracurricular Activities:
Drill team performances
Half-time band shows
Football team blocking
Basketball free throws
Baseball batting
The Curious Exposure Discrepancy:
Students recognize that achieving a strong showing in a brief athletic or artistic performance requires continuous practice.
Many of these same students barely read or practice a topic once for an academic subject.
Preparation for a known, short performance receives thorough practice, while preparation for life receives minimal effort.
Getting Started in Computer Science
Course Assumptions:
Assumes this is the student's first formal course in computer science.
Assumes zero prior knowledge of computer programming; existing programming knowledge is not a prerequisite.
Fundamental Capabilities of Computers
Three Key Advantages of Computers Over Humans:
Speed: Computers perform operations much faster than human beings.
Accuracy: Computers operate with far greater precision and lower error rates.
Memory Retention: Computers do not forget stored information.
Messages and Morse Code
Morse Code Principles:
Information encoding historically used discrete signal states (such as dots/dashes or binary states) to encode letters ( through ) and numeric digits ( through ).
Electronic Memory and Base Systems
Electronic Memory States:
Computer memory relies on electronic circuits that exist in two states: off () or on ().
Example sequence:
off on off off on off off offtranslates to binary sequence .
Decimal (Base-10) Number System:
Uses digits ().
Likely developed because human beings have fingers.
Positional values are powers of : ().
Example breakdown of :
Binary (Base-2) Number System:
Uses digits: (off) and (on).
Directly mirrors the flow of electricity in computer hardware.
Positional values are powers of : ().
Example conversion of to Base-10:
Character Mapping Examples:
Base-10 to Base-2 Mapping Table (0–30):
Bits, Bytes, and Codes:
Bit: A binary digit representing either (off) or (on).
Nibble: ().
Byte: .
Combinations:
() contains distinct numerical combinations.
() contain distinct numerical combinations.
ASCII: Uses to store one character.
Unicode: Uses to store one character.
Memory Measurement and Hardware Components
Primary Board and Integrated Circuits:
Motherboard: Main board housing primary computer components and attached chips.
ROM (Read Only Memory): Chip that stores permanent information for the computer.
RAM (Random Access Memory): Chip that stores temporary information; volatile memory.
CPU (Central Processing Unit): Chip acting as the "brains" of the computer.
Memory Capacity Measurement Units:
Technical Definition: .
Kilobyte (KB): ().
Megabyte (MB): ().
Gigabyte (GB): ().
Terabyte (TB): ().
Petabyte (PB): ().
Exabyte (EB): ().
Zettabyte (ZB): ().
Yottabyte (YB): ().
Secondary Storage Devices:
Because contents in RAM are lost when turning off power, files must be saved to secondary storage devices for long-term retention.
Hardware and Software Classifications
Hardware:
Refers to physical computer equipment, including the system unit and external peripherals that plug into it.
Software:
Provides executable instructions to a computer.
System Software: Operating systems that control computer system functionality. Major examples include Windows, UNIX, Linux, and Mac OS.
Application Software: Software that runs user applications. Examples include Word, Excel, PowerPoint, Video Games, and custom user-written software.
Historical Evolution of Computing Hardware
First Era: Early Counting Tools:
Initial tally methods involved making marks on rocks, carving notches in bones, and tying knots in ropes.
Abacus (): Invented in the Middle East; continues to be used widely across Asian countries.
Napier's "Bones" (): Created by John Napier; used marked bone strips to simplify complex arithmetic multiplication via addition.
Slide Rule (): Created by William Oughtred; enabled complex mathematical calculations for centuries until replaced by scientific calculators in the 1970s.
Second Era: Gear-Driven Mechanical Devices:
Required manual cranking and used rotating physical gears; subject to mechanical wear and physical breakdown.
Pascaline / Numerical Calculating Machine (): Built by Blaise Pascal; first numerical calculating machine; handled addition and subtraction using inner gear mechanisms similar to vehicle tumbler odometers; variations remained in use through the 1970s.
Jacquard's Loom (): Invented by Joseph Jacquard; accepted flexible cards punched with data to control cloth weaving patterns; represents an early milestone in programming.
Analytical Engine (): Invented by Charles Babbage; read sequential instructions from punched cards; first general-purpose computing machine design.
First Programming (): Ada Byron, Countess of Lovelace (assistant to Babbage), designed program instructions for the Analytical Engine, establishing core concepts used in modern programming languages.
Third Era: Electro-Mechanical Devices:
Utilized electrical power, eliminating manual cranking, but relied on moving physical parts subject to hardware failure.
Tabulating Machine (): Invented by Herman Hollerith to compute U.S. Census Bureau statistics; reduced census processing time from 8 years (1880 census) to 1 year (1890 census).
Corporate History (): Hollerith founded the Tabulating Machine Company in 1896; merged in 1911 to form the Computing Tabulating Recording Company; renamed International Business Machines Corporation (IBM) in 1924.
Differential Analyzer (): Built at MIT by Harold Locke Hazen and Vannevar Bush to solve differential equations. A lower-cost Erector Set version was constructed at Manchester University in 1934 by Douglas Hartree and Arthur Porter.
Z3 (): Built by Konrad Zuse in Germany during World War II; first functional, programmable, fully automatic digital computer; destroyed in 1943 Allied bombing of Berlin; Zuse is regarded by some as the inventor of the computer.
Mark-I (): Electro-mechanical calculator measuring 51 feet long by 8 feet tall; executed automatic long calculations involving numbers up to 23 digits.
Grace Hopper's Contributions: Navy Lieutenant who programmed the Mark-I; authorized by U.S. Congress to serve past mandatory retirement age, retiring as an Admiral in 1986 at age 79.
Mark-II & First Computer Bug (): On September 9, 1942/1947, the Mark-II halted due to a moth caught in a relay switch; removal of the insect produced the first literal computer bug (the moth is preserved at the San Diego Computer Museum); Grace Hopper popularized the term "debugging".
Fourth Era: Fully Electronic Computers with Vacuum Tubes (First Generation):
Removed moving parts, increasing speed and reliability; vacuum tubes were large, generated significant heat, and burned out frequently.
ABC (): Built by John Atanasoff and Clifford Berry at Iowa State University; first electronic digital computer; non-programmable, special-purpose computer designed to solve systems of linear equations.
Colossus (): Designed by Tommy Flowers; 10 machines built in England to decrypt secret German WWII communications; early programmable electronic digital computer.
ENIAC (): Electronic Numerical Integrator and Computer; created by John Mauchly and J. Presper Eckert; first electronic general-purpose computer; twice the size of Mark-I; contained 17,468 vacuum tubes; programmed by physical rewiring; executed 385 multiplications per second; calculated in 1949; dubbed "The Giant Brain".
EDVAC (): Electronic Discrete Variable Automatic Computer; ENIAC successor; introduced Stored Program architecture holding instructions in electronic memory (approximately ).
UNIVAC I (): Universal Automatic Computer; world's first commercially available computer; gained fame by accurately predicting the outcome of the 1952 U.S. presidential election.
Fifth Era: Transistors and Integrated Circuits:
Second Generation (Transistors): University of Manchester created the first transistor computer in 1953; transistors were significantly smaller than vacuum tubes and did not burn out.
Third Generation (Integrated Circuits - ): Jack Kilby (Texas Instruments, Richardson, TX) developed the first integrated circuit using germanium; Robert Noyce developed an improved silicon-based IC six months later ("Mayor of Silicon Valley"); both are co-inventors.
Early Video Games: Tennis for Two (, William Higinbotham, played on Brookhaven National Laboratory oscilloscope); SpaceWar! (, Stephen Russell, MIT, played on an actual computer monitor).
IBM System/360 (): Standardized line of compatible mainframes serving both scientific and business communities; established the 8-bit byte industry standard.
Apple II (): Introduced by Apple Computer Company; first commercially successful personal computer.
VisiCalc (): Created by Dan Bricklin; first widespread commercial spreadsheet software.
WordStar (): Released by MicroPro; dominant early word processing program.
IBM PC (): Validated personal computers as serious business machines.
MS-DOS (): Created by Bill Gates and Microsoft as the operating system for the IBM Personal Computer.
Compaq Portable (): First portable computer (28 lbs, suitcase-sized) and first 100% IBM PC-compatible clone.
Macintosh (): First commercially successful personal computer featuring mouse and windowing GUI interface (technology initially developed by Xerox).
Windows 1.0 (): Operating environment GUI sitting atop MS-DOS.
Windows 95 (): Released as a standalone operating system with a Macintosh-like GUI interface.
Windows Release History Matrix:
Version 1: Windows 1.0–3.1 / Windows NT 3.1
Version 2: Windows 95 / Windows NT 3.51
Version 3: Windows 98 / Windows NT 4.0
Version 4: Windows Millennium / Windows 2000
Version 5: Windows XP Home, Windows Home Server / Windows XP Professional, Windows Server 2003 / R2
Version 6: Windows Vista / Windows Server 2008
Version 7: Windows 7, Windows Home Server 2011 / Windows Server 2008 R2
Version 8: Windows 8, 8.1, Windows Phone 8 / Windows Server 2012 / R2
Tianhe-2 Supercomputer (): Developed in China; ranked world's fastest computer in June 2013; executes floating point operations per second ( times faster than ENIAC).
Fundamental Concepts of Programming
Core Definitions:
Program: A sequence of instructions directing a computer to perform a desired task.
Programmer: A person who writes software instructions for a computer.
History and Levels of Programming Languages
Machine Code (1st Generation):
Programming directly in binary (s and s); involved raw physical wiring or switch manipulation; tedious and error-prone.
Assembly Language (2nd Generation):
Introduced with EDSAC () in Britain; used Initial Orders assembler to convert single-letter mnemonic symbols into binary streams.
Grace Hopper & Language Translation:
Pioneered human-readable programming; wrote the first compiler in 1952 for the A-0 language.
Her contributions earned her the nickname "Amazing Grace"; the Cray XE6 Hopper supercomputer and the USS Hopper Navy destroyer are named in her honor.
Language Level Categorization:
Low-Level Languages: Operate directly at or near machine code (s and s); powerful but difficult (e.g., Machine Language, Assembly Language).
Medium-Level Languages: Combine English-like commands with low-level power and hardware access (e.g., C, C++).
High-Level Languages: Use English-like words for instructions; easier to learn but less powerful (e.g., BASIC, Pascal, COBOL, FORTRAN, PL/I, Java).
Very High-Level Languages: Use visual, point-and-click graphical interface blocks for programming (e.g., Lego Mindstorms NXT).
Language Translators:
Compiler: Translates entire source program into an executable file before execution.
Interpreter: Translates and executes source code one statement at a time during execution.
Evolutionary Timeline of High-Level Languages:
FORTRAN (): FORmula TRANslation; developed by IBM programmers for scientific, mathematical, and engineering applications; lacked business record-processing functions.
LISP (): LISt Processing; designed by John McCarthy at MIT for artificial intelligence research.
COBOL (): COmmon Business Oriented Language; created primarily by Grace Hopper for business and military application; standardized by the U.S. Department of Defense.
The Hardware Split (): Computer hardware was split between FORTRAN math mainframes and COBOL business mainframes until IBM System/360 unified hardware in 1964.
PL/I (): Programming Language 1; IBM's attempt to combine FORTRAN math features and COBOL record features; proved too complex for widespread adoption.
BASIC (): Beginners All-purpose Symbolic Instruction Code; created by Tom Kurtz and John Kemeny at Dartmouth College for non-technical students; packaged with early microcomputers as Altair BASIC / Microsoft BASIC ().
Pascal (): Created by Niklaus Wirth specifically to teach structured programming; adopted by the College Board as the AP Computer Science exam language in .
C (): Derived from BCPL (, Martin Richards) and B (, Ken Thompson at Bell Labs); created by Dennis Ritchie; used to rewrite the UNIX operating system kernel in .
C++ (): Created by Bjarne Stroustrup by adding Object-Oriented Programming (OOP) to C; replaced Pascal on the AP Computer Science exam in .
Java (): Released by Sun Microsystems (acquired by Oracle in 2010); features Platform Independence and mandatory OOP; replaced C++ on the AP Computer Science exam in 2003$.\n * **Lego Mindstorms NXT (2006$$)**: Point-and-click graphical blocks for robotics; evolved from Lego's 1998 visual language, NXT in 2006, and NXT 2.1 in 2009.
Computer Networking Foundations
SneakerNet:
The standalone computer era prior to local networks. Transferring files or printing required saving data to a floppy disk and physically walking to another computer.
Peer-to-Peer Networks (LANs):
Local Area Networks connecting small groups of computers directly to each other as equals to share local resources.
Client-Server Networks:
Network architecture where client workstations access shared central server machines dedicated to printing, login authentication, permanent file storage, and network communications.
Origins of the Internet:
Developed in the 1960s by the U.S. Department of Defense during the Cold War.
Designed as a decentralized communication system capable of rerouting data traffic automatically if military strikes damaged target nodes like the Pentagon.
Intranets and Internet Service Providers (ISPs):
Intranet: Private enterprise network connecting internal LANs to deliver security, speed, and cost savings.
Internet: Global public network accessed by paying a monthly fee to an Internet Service Provider (ISP), with pricing based on transmission speed.