48
CMSC 100 CMSC 100 Course Overview Course Overview Adapted from slides provided by Dr. desJardins Robert Holder [email protected] Thursday, September 1, 2011

CMSC 100 Course Overview Adapted from slides provided by Dr. desJardins Robert Holder [email protected] [email protected] Thursday, September 1, 2011

Embed Size (px)

Citation preview

CMSC 100CMSC 100

Course OverviewCourse Overview

Adapted from slides provided by Dr. desJardins

Robert [email protected]

Thursday, September 1, 2011

Thu 9/1/2011 CMSC 100 -- Overview 2

What is your name? What is your major? What was your first computer you ever used? What did you use it for?

Thu 9/1/2011 CMSC 100 -- Overview 3

Course Logistics

Instructor: Robert Holder, [email protected] Office hours: Tuesday 11:30-12:30 & By appointment

ITE 201F

TA: Debdatta Mukherjee, [email protected] Office hours: TBD

Course website/syllabus: http://www.csee.umbc.edu/courses/undergraduate/100/Fall11/

Schedule: http://www.csee.umbc.edu/courses/undergraduate/100/Fall11/schedule.html

Thu 9/1/2011 CMSC 100 -- Overview 4

Textbooks

Brookshear, Introduction to Computer Science

Thu 9/1/2011 CMSC 100 -- Overview 5

Overview

What is Computer Science? Course Logistics First Assignments

UPC Example (if time)

What is Computer What is Computer Science?Science?

What is Computer Science? (2)

“Computer science is no more about computers than astronomy is about telescopes.” - Edsger Dijkstra

Thu 9/1/2011 CMSC 100 -- Overview 7

What is Computer Science? (3)

“Computer science is the study of how computers can make the world a better place.” - Robert Holder

Thu 9/1/2011 CMSC 100 -- Overview 8

Grand Challenges for CS

http:///www.cs.cmu.edu/~claytronics/software thebrain.mcgill.ca

Claytronics

Human-Level

Intelligence

Information SearchUbiquitous Computing

and Situation Awareness

Autonomous

Vehicles NIST

DARPA

Thu 9/1/2011 CMSC 100 -- Overview 10

The Computer Revolution

How fast did this happen? [ http://www.blinkenlights.com/pc.shtml ] 1950: “Simon” (plans published in Radio Electronics) 1973: HP 65 (programmable calculator) 1975: Altair 8800 (first widely used programmable computer kit) 1977: Apple II (a huge breakthrough, the first mass-produced,

inexpensive personal computer) 1981: IBM 5150 PC (now we’re really taking off)

1984: Apple Macintosh 128K

2008: MacBook Air

Thu 9/1/2011 CMSC 100 -- Overview 11

What Was It Like Then?

The PDP-11/70s my advisor used in college had 64K of RAM, with hard disks that held less than 1M of external storage

“... And I had to walk five miles, uphill, in the snow, every day! And we had to live in a cardboard box in the middle of the road!”

Thu 9/1/2011 CMSC 100 -- Overview 12

What Is It Like Now?

The PDP-11/70s my advisor used in college had 64K of RAM, with hard disks that held less than 1M of memory

The cheapest laptop at Best Buy has 1G of RAM and a 250G hard drive for $200

...a factor of 1018 more RAM and 1013 more disk space ...and your iPod nano has 8G (or 16G!) of blindingly fast storage “...so don’t come whining to me about how slow your computer is!”

Thu 9/1/2011 CMSC 100 -- Overview 13

Moore’s Law

Computer memory (and processing speed, resolution, and just about everything else) increases exponentially (roughly: doubles every 18-24 months)

Thu 9/1/2011 CMSC 100 -- Overview 14

Measuring Memory

One 0/1 (“no/yes”) “bit” is the basic unit of memory Eight (23) bits = one byte 1,024 (210) bytes = one kilobyte (1K)*

1,024K (220 bytes) = one megabyte (1M) 1,024K (230 bytes) = one gigabyte (1G) 1,024 (240 bytes) = one terabyte (1T) 1,024 (250 bytes) = one petabyte (1P) ... 280 bytes = one yottabyte (1Y?)

How many different patterns can you represent with one bit of storage? Two! (It’s either 0 or 1; that’s it, no in between)

How many different patterns can you represent with one byte of storage?

* Note that external storage is usually measured in decimal rather than binary (1000 bytes = 1K, and so on)

Thu 9/1/2011 CMSC 100 -- Overview 15

It’s Not Just Speed, It’s Quantity

So just how big a revolution are we talking about?

How many computers do you think were in the room when my advisor took her first programming class?

Answer: ZERO(*).

How many computers are in this room?(* First we need to decide what is a computer… not so easy!)Answer: I’m going to guess around 100.

Speed AND Quantity

Thu 9/1/2011 CMSC 100 -- Overview 16

Thu 9/1/2011 CMSC 100 -- Overview 17

How Does a Computer Work?

“The work performed by the computer is specified by a program, which is written in a programming language. This language is converted to sequences of machine-language instructions by interpreters or compilers, via a predefined set of subroutines called the operating system. The instructions, which are stored in the memory of the computer, define the operations to be performed on data, which are also stored in the computer's memory. A finite-state machine fetches and executes these instructions. The instructions as well as the data are represented by patterns of bits. Both the finite-state machine and the memory are built of storage registers and Boolean logic blocks, and the latter are based on simple logical functions, such as And, Or, and Invert. These logical functions are implemented by switches, which are set up either in series or in parallel, and these switches control a physical substance, such as water or electricity, which is used to send one of two possible signals from one switch to another: 1 or 0. This is the hierarchy of abstraction that makes computers work.” -- W. Daniel Hillis, The Pattern on the Stone

Thu 9/1/2011 CMSC 100 -- Overview 18

How Does a Computer Work?

“The work performed by the computer is specified by a program, which is written in a programming language. This language is converted to sequences of machine-language instructions by interpreters or compilers, via a predefined set of subroutines called the operating system. The instructions, which are stored in the memory of the computer, define the operations to be performed on data, which are also stored in the computer's memory. A finite-state machine fetches and executes these instructions. The instructions as well as the data are represented by patterns of bits. Both the finite-state machine and the memory are built of storage registers and Boolean logic blocks, and the latter are based on simple logical functions, such as And, Or, and Invert. These logical functions are implemented by switches, which are set up either in series or in parallel, and these switches control a physical substance, such as water or electricity, which is used to send one of two possible signals from one switch to another: 1 or 0. This is the hierarchy of abstraction that makes computers work.” -- W. Daniel Hillis, The Pattern on the Stone

Thu 9/1/2011 CMSC 100 -- Overview 19

Abstraction: The Key Idea!

Computers are very complex Most interesting programs are very complex What makes it possible to design and maintain these

complex systems??

Which just means: Once we’ve solved a “low-level detail,” we can treat that solution as

a “black box” with known inputs and outputs, and not worry about how it works.

The way we get there is called problem reduction (or decomposition or divide-and-conquer)

Thu 9/1/2011 CMSC 100 -- Overview 20

Hardware

Patterns of bits Memory / storage registers Machine-language instructions Switches and Boolean logic blocks

Thu 9/1/2011 CMSC 100 -- Overview 21

Systems

Operating systems Compilers

Thu 9/1/2011 CMSC 100 -- Overview 22

Software

Programs Programming languages

Thu 9/1/2011 CMSC 100 -- Overview 23

What this class is about

How computers are built, programmed, and used to solve problems Hardware: Digital logic and system architecture Systems: Operating systems and networks Software: Basic programming/algorithms, databases Theory: Algorithms, computation, complexity Applications: AI, graphics, … Social issues: Ethics, privacy, environmental impact

Other skills emphasized: Effective writing and presentation skills Basic programming (in Scratch) Foundational mathematics for computer science

Thu 9/1/2011 CMSC 100 -- Overview 24

What this class is NOT about

How to install Windows or Linux How to use Excel and PowerPoint What kind of computer you should buy Advanced programming techniques

Thu 9/1/2011 CMSC 100 -- Overview 25

Course Logistics

Instructor: Robert Holder, [email protected] Office hours: By appointment

TA: Debdatta Mukherjee, [email protected] Office hours: TBD

Course website/syllabus: http://www.csee.umbc.edu/courses/undergraduate/100/Fall11/

Schedule: http://www.csee.umbc.edu/courses/undergraduate/100/Fall11/schedule.html

Thu 9/1/2011 CMSC 100 -- Overview 26

Textbooks

Brookshear, Introduction to Computer Science

Thu 9/1/2011 CMSC 100 -- Overview 27

My Expectations

Students will… Attend class regularly Be prompt, and not engage in distracting or disruptive behaviors

NO LAPTOPS OR CELLPHONES DURING CLASS (yeah, I know it seems weird in a CS class…)

Take responsibility for knowing what work is due, and turning the coursework in promptly

Follow the course’s academic honesty policy, and not present another’s work as your own

Be engaged in the learning process, respectful of the course staff, and supportive of your fellow students

Express concerns and ask questions Understand that the course staff has other obligations outside of this

class

Thu 9/1/2011 CMSC 100 -- Overview 28

Your Expectations

The instructor will… Tell students what is expected in terms of coursework and behavior Be fair in giving assignments, grading assignments, and returning

coursework in a timely fashion Answer questions and concerns promptly Be open to feedback and suggestions Be respectful of students Try to make the course useful, interesting, and enjoyable Understand that students have other obligations outside of this

class

Thu 9/1/2011 CMSC 100 -- Overview 29

Academic Honesty Policy

See handout…

Thu 9/1/2011 CMSC 100 -- Overview 30

Course Communications

Email Requests for extensions, questions about course policies

Instructor Grading inquiries, requests for help with assignments

TA Still having trouble? Talk to instructor

Office hours Posted on website

Blackboard Instructor postings Discussion board Assignment submission

Thu 9/1/2011 CMSC 100 -- Overview 31

First Assignments

First Assignments Academic Honesty Policy and Survey: Due Thursday 9/8 HW 1: Due Tuesday 9/13

Homework expectations: In general, there will be an assignment (either a written homework or a

programming assignment) due each week(at least for the first part of the semester).

These assignments will typically be based on the assigned reading. The primary purpose of the written assignments is to keep you on track with

the reading, and to provide me with feedback about problem areas, well in advance of the midterm and final exams. (The exams will be very similar to the written assignments.)

Please plan your time (to do the reading and complete the assignments) accordingly!

All assignments are to be submitted in class (i.e., as hardcopy!) unless otherwise specified

Late policy (see course syllabus)

Thu 9/1/2011 CMSC 100 -- Overview 32

EXAMPLE: Universal Product Codes

• First scanned product: Wrigley’s gum (1974).

• Method of identifying products at point of sale by 11-digit numbers.

• Method of encoding digit sequences so they can be read quickly and easily by machine.

Slides for the UPC example courtesy of

Prof. Michael Littman (Rutgers University)

Thu 9/1/2011 CMSC 100 -- Overview 33

Reduction Idea

• Each level uses an encoding to translate to the next level (i.e., the next higher abstraction)• Patterns of ink.• Sequence of 95 zeros and ones (“bits”).• Sequence of 12 digits.• Sequence of 11 digits.• Name/type/manufacturer of product.

Thu 9/1/2011 CMSC 100 -- Overview 34

Product Name

• Ponds Dry Skin Cream• 3.9 oz (110g)• Unilever Home and Personal Care USA

• Name Badge Labels (Size 2 3/16" x 3 3/8")• 100 Labels• Avery Dennison/Avery Division

Thu 9/1/2011 CMSC 100 -- Overview 35

11-Digit Number

• Digit = {0,1,2,3,4,5,6,7,8,9}• Sequence of 11 digits• QUESTION: How many different items can be encoded?

Thu 9/1/2011 CMSC 100 -- Overview 36

Encode Name By 11 Digits

• First 6 digits: Manufacturer• First digit, product category:

0, 1, 6, 7, 8, or 9: most products 2: store’s use, for variable-weight items 3: drugs by National Drug Code number

• Last 5 digits: Manufacturer-assigned ID

Thu 9/1/2011 CMSC 100 -- Overview 37

Examples

• Labels: 0-72782-051440• 0=general product• 72782= Avery• 051440=Avery’s code for this product

• Ponds: 3-05210-04300• 3=drug code• 05210= Unilever• 04300=National Drug Code for this product

Thu 9/1/2011 CMSC 100 -- Overview 38

12-Digit Number

• The UPC folks decided to include another digit for error checking. Example:• 01660000070 Rose’s Lime Juice (12 oz)• 04660000070 Eckrich Franks, Jumbo (16 oz)• 05660000070 Reese PB/Choc Egg (34 g)• 08660000070 Bumble Bee Salmon (14.75 OZ)

• Misread digit #2 and you turn sweet to sour.

Thu 9/1/2011 CMSC 100 -- Overview 39

Check Digit

1. Add the digits in the odd-numbered positions (first, third, fifth, etc.) together and multiply by three.

2. Add the digits in the even-numbered positions (second, fourth, sixth, etc.) to the result.

3. Subtract the result from the next-higher multiple of ten. The result is the check digit.

Thu 9/1/2011 CMSC 100 -- Overview 40

Code and Example

• Lime juice: 01660000070→016600000708• Franks: 04660000070→046600000705• Choc Egg: 05660000070→056600000704• Salmon: 08660000070→086600000701

set evensum to d2+d4+d6+d8+d10set oddsum to d1+d3+d5+d7+d9+d11set checkdigit to 10 - (3*oddsum+oddsum) mod 10

01660000070

01660000070

odd-digit sum: 0+6+0+0+0+0=6even-digit sum: 1+6+0+0+7=14odd*3+even = 6*3+14=32subtract from mult of 10=40-32=8

all are two digits

different now

Thu 9/1/2011 CMSC 100 -- Overview 41

Some (Mod) Math

• 3 x Sodd + Seven = 0 mod 10• The sum of the odd-position digits (times 3) plus the sum

of the even position digits (including the check digit) is 0 mod 10.

• Modulo math is just like regular math, except things wrap around (like an odometer). Mod 10 means we only pay attention to the last digit in the number.

• Divide by 10 and only keep the remainder.

Thu 9/1/2011 CMSC 100 -- Overview 42

More Modulo Math

• What’s the check digit for the code 0-000000-000000?• What happens to the check digit if you add one to an

odd-position digit?• What happens to the check digit if you add one to an

even-position digit?

• Reminder: Check digit = 10 – (3*oddsum + evensum) mod 10

Thu 9/1/2011 CMSC 100 -- Overview 43

Bits

• We’ve gone from a product name to an 11-digit number to a 12-digit number.

• A 0 will appear in the UPC as a white bar (space) and a 1 as a black bar. • So we need to turn each digit into a series of bits.• Also, we want to be sure we alternate 0s and 1s often

enough (e.g., don’t want 20 black bars (1s) in a row).• Finally, we want to have a code that we can scan in

either direction (i.e., we need to be able to tell which direction we’re reading it in).

Thu 9/1/2011 CMSC 100 -- Overview 44

Bits

• Encode d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 as:

101 d1 d2 d3 d4 d5 d6 01010 d7 d8 d9 d10 d11 d12 101Last 6 digits have 0s and 1s flipped. (No reverse complements can tell what direction we’re scanning in!)

Digits are encoded as 7-bit patterns that all:•start with 0, end with 1•switch from 0 to 1 twice•include no reverse

complements

0: 00011011: 00110012: 00100113: 01111014: 0100011

5: 01100016: 01011117: 01110118: 01101119: 0001011

Thu 9/1/2011 CMSC 100 -- Overview 45

How Many Bits?

• How many bits (zeros and ones) long is the code for the original 12-digit sequence?

Thu 9/1/2011 CMSC 100 -- Overview 46

Finally, Ink!

• Given the long pattern of bits, we write a 1 as a bar and a zero as a space.

• Two 1s in a row become a double-wide bar.• Two 0s in a row become a double-wide space.• No UPC has more than four 0s or 1s in a row.• All digits have equal width.• All UPCs start and end with bars (actually with black-

white-black pattern).• UPCs can be read upside down.• UPCs can be read at an angle or variable speed via

ratios.

Thu 9/1/2011 CMSC 100 -- Overview 47

Example .......

• Barcode for skin cream:• 3-05210-04300-8 (8 is the check digit) start: 101; 3: 0111101 05210: 0001101-0110001-0010011-0011001-0001101 middle: 01010 04300: 1110010-1011100-1000010-1110010-1110010 (rev) 8: 1001000 (rev); end: 101

• The digits underneath are for our benefit.

0: 00011011: 00110012: 00100113: 01111014: 0100011

5: 01100016: 01011117: 01110118: 01101119: 0001011

Thu 9/1/2011 CMSC 100 -- Overview 48

Whew!

The UPC example illustrates: Abstraction Binary numbers and modulo math Encoding (error correction, readability constraints)