Top Banner
What is Computer Science About? Part 1: Computational Thinking
22

What is Computer Science About? Part 1: Computational Thinking

Mar 17, 2016

Download

Documents

kiley

What is Computer Science About? Part 1: Computational Thinking. Main Points. There is more to computer science than just programming. Computer science is about computational thinking and algorithms . We try to formalize activities into repeatable procedures and concrete decisions. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: What is Computer Science About? Part 1: Computational Thinking

What is Computer Science About?

Part 1: Computational Thinking

Page 2: What is Computer Science About? Part 1: Computational Thinking

Main Points• There is more to computer science than just

programming.• Computer science is about computational

thinking and algorithms.• We try to formalize activities into repeatable

procedures and concrete decisions.• Generalizing a procedure into an abstract

algorithm helps us recognize if there are known solutions, and how complex the problem is.

• Programming is just translating an algorithm into a specific syntax.

Page 3: What is Computer Science About? Part 1: Computational Thinking

• Computational thinking– translating processes/procedures into step-by-step activities with

well-defined choice points and decision criteria• Design and analysis of algorithms

– expression of a procedure in terms of operations on abstract data structures like graphs, lists, strings, and trees

– finite number of steps (clear termination conditions; it has to halt)– is the algorithm correct? – are all cases handled, or might it fail on certain inputs?– how much time will it take? how much space (memory)?

• Programming– translating algorithms into a specific language

• Software engineering– managing the development and life-cycle of a system, including

design/specification, documentation, testing, use of components/libraries, release of new/updated versions

– usually a team effort

Some definitions...

Page 4: What is Computer Science About? Part 1: Computational Thinking

• CT has infused into all kinds of fields from cooking and sports, to transportation, medical diagnosis, and particle physics

• many intelligent activities are often ill-defined, and CT is about formalizing them into concrete decisions and repeatable procedures– think about how to find a good place to eat in a new

town• ask a friend? desired type of food? consult Zagat’s? look for

restaurant with many cars in the parking lot? – think about how choose a book to read

• interest? availability? recommendations? reviews?– “finding Waldo” (how do you search for shapes in

images?)

Computational Thinking

Page 5: What is Computer Science About? Part 1: Computational Thinking

Four components: Example: baking a cake Computationally:

DECOMPOSIONbreaking a problem into (decoupled) sub-problems

mixing dry ingredients, then wet ingredients

divide-and-conquer

PATTERN RECOGNITION identifying repeatable operations

crack egg1,crack egg2,crack egg3...

for/while-loops, sub-routines

GENERALIZATION and ABSTRACTION

baking chocolate cake or carrot cake or pound cake is similar, except add/substitute a few different ingredients

adding parameters to code; also, can we apply the same procedure to other data like vectors, arrays, lists, trees, graphs?

ALGORITHM DESIGN formalize procedure into recipe others can use; define things like how you know when it is done (bake 30 min at 350 or until crust is “golden”...)

step-by-step procedure with clear initialization, decision and termination conditions

Google’s ideas on Computational Thinkinghttp://www.google.com/edu/computational-thinking/what-is-ct.html

Page 6: What is Computer Science About? Part 1: Computational Thinking

• mechanical analogies– think about how a thermostat does

temperature control

Page 7: What is Computer Science About? Part 1: Computational Thinking

• mechanical analogies– think about how a thermostat does

temperature control• what are the actions that can be taken?• what are the conditions under which these actions

are triggered?• what parameters affect these decisions?

Page 8: What is Computer Science About? Part 1: Computational Thinking

• mechanical analogies– think about how a thermostat does

temperature control• what are the actions that can be taken?• what are the conditions under which these actions

are triggered?• what parameters affect these decisions?

if temp>T, turn on AirConditionerif temp<T, turn on Heater

let T be the desired or “control” temperature

Page 9: What is Computer Science About? Part 1: Computational Thinking

• mechanical analogies– think about how a thermostat does

temperature control• what are the actions that can be taken?• what are the conditions under which these actions

are triggered?• what parameters affect these decisions?

if temp>T+, turn on AirConditionerif temp<T-, turn on Heater

let be the acceptable range of temp. variation

Page 10: What is Computer Science About? Part 1: Computational Thinking

• mechanical analogies– think about how a thermostat does

temperature control• what are the actions that can be taken?• what are the conditions under which these actions

are triggered?• what parameters affect these decisions?

if temp>T, turn on AirConditionerif temp<T, turn on Heaterif AC on and temp<T, turn AC offif HE on and temp>T, turn HE off

Page 11: What is Computer Science About? Part 1: Computational Thinking

• mechanical analogies– think about how a thermostat does

temperature control• what are the actions that can be taken?• what are the conditions under which these actions

are triggered?• what parameters affect these decisions?

– think about how a soda machine works• keep accepting coins till enough for item• dispense item (if avail.), then make change

– think about the decision policy for an elevator – think about the pattern of traffic signals at an

intersection (with sensors)• how do lights depend on cars waiting? pedestrians?

Page 12: What is Computer Science About? Part 1: Computational Thinking

• ultimately, we formalize these things into:– flowcharts and pseudocode– abstractions like finite-state machines

procedure bubbleSort( list A ) repeat swapped = false for i = 1 to length(A)-1 do: if A[i] > A[i+1] then swap( A[i], A[i+1] ) swapped = true until not swapped

13792

111317

finite-state machinerepresenting aturnstile

these play a big role in compilers, networkprotocols, etc.

13729

111317

Page 13: What is Computer Science About? Part 1: Computational Thinking

The “earliest” known algorithm• Euclid’s algorithm for determining the GCD

(greatest common denominator) – also known as the Chinese Remainder Theorem

• problem: given two integers m and n, find the largest integer d that divides each of them

• example: 4 divides 112 and 40; is it the GCD? (no, 8 is)

Page 14: What is Computer Science About? Part 1: Computational Thinking

• Euclid’s algorithm: repeatedly divide the smaller into the larger number and replace with the remainder

• questions a Computer Scientist would ask: – Does it halt? (note how a always shrinks with each pass). – Is it correct? – Is there a more efficient way to do it (that uses fewer

steps)? – Relationship to factoring and testing for prime numbers.

1. a=112, b=40, a/b=2 with rem. 322. a=40, b=32, a/b=1 with rem. 83. a=32, b=8, a/b=4 with rem. 04. a=8, b=0, return 8

GCD(a,b): if a<b, swap a and b while b>0:

let r be the remainder of a/b a←b, b←r

return a

Page 15: What is Computer Science About? Part 1: Computational Thinking

• while monitoring a stream of basketball scores, keep track of the 3 highest scores– impractical to just save them all and sort– how would you do it?

...UCLA 92 Stanford 80 – OklaSt 55 Iowa 61 – Indiana 83 MichSt 82 ...

Page 16: What is Computer Science About? Part 1: Computational Thinking

• algorithm design often starts with representation– imagine keeping 3 slots, for the highest scores

seen so far– define the “semantics” or an “invariant” to maintain:

• A > B > C > all other scores

A B C

...UCLA 92 Stanford 80 – OklaSt 55 Iowa 61 – Indiana 83 MichSt 82 ...

Page 17: What is Computer Science About? Part 1: Computational Thinking

• algorithm design often starts with representation– imagine keeping 3 slots, for the highest scores

seen so far– define the “semantics” or an “invariant” to maintain:

• A > B > C > all other scores– with each new game score (p,q) (e.g. Aggies 118, Longhorns 90)

if p>A then C=B, B=A, A=pelse if p>B, then C=B, B=pelse if p>C, then C=prepeat this “shifting” with q

A B C

p A B

A p B

A B p

...UCLA 92 Stanford 80 – OklaSt 55 Iowa 61 – Indiana 83 MichSt 82 ...

Page 18: What is Computer Science About? Part 1: Computational Thinking

• algorithm design often starts with representation– imagine keeping 3 slots, for the highest scores

seen so far– define the “semantics” or an “invariant” to maintain:

• A > B > C > all other scores– with each new game score (p,q) (e.g. Aggies 118, Longhorns 90)

if p>A then C=B, B=A, A=pelse if p>B, then C=B, B=pelse if p>C, then C=prepeat this “shifting” with q

– questions to consider: • what happens on first pass, before A, B, and C are defined?• what happens with ties?• should A, B, and C represent distinct games, or could 2 of them

come from the same game?

A B C

p A B

A p B

A B p

...UCLA 92 Stanford 80 – OklaSt 55 Iowa 61 – Indiana 83 MichSt 82 ...

Page 19: What is Computer Science About? Part 1: Computational Thinking

Spell-checking• given a document as a list of words, wi,

identify misspelled words and suggest corrections– simple approach: use a dictionary

• for each wi, scan dictionary in sorted order– can you do it faster? (doc size N x dict size D)

• suppose we sort both lists• sorting algs usually take N log2 N time

– example: if doc has ~10,000 words, sort in ~132,000 steps– assume you can call a sort sub-routine (reuse of code)– note: you will learn about different sorting algorithms (and

related data structures like trees and hash tables) and analyze their computational efficiency in CSCE 211

• can scan both lists in parallel (takes D steps) – D + N log N < ND

Page 20: What is Computer Science About? Part 1: Computational Thinking

Words in a document like the USDeclaration of Independence:• abdicated• abolish• abolishing• absolute• absolved• abuses• accommodation• accordingly• accustomed• acquiesce• act• acts• administration• affected• after• against• ages• all• allegiance• alliances• alone• ...

Words in the English Dictionary:• ...• achieve• achromatic• acid• acidic• acknowledge• acorn• acoustic• acquaint• acquaintance• acquiesce• acquiescent• acquire• acquisition• acquisitive• acquit• acquittal• acquitting• acre• acreage• acrid• acrimonious• ...

note that thislist is “denser”

Page 21: What is Computer Science About? Part 1: Computational Thinking

• a harder problem: suggesting spelling corrections– requires defining “closest match”

• fewest different letters? same length?– occupashun occupation– occurence occurrence

• “edit distance”: – formal defn: # diff letters + # gap spaces – minimal dist over all possible gap placements

calculated by Dynamic Programming• how to efficiently find all words in dictionary

with minimal distance?– does context matter?

• used as noun or verb (affect vs. effect)• compliment vs. complement• principle vs. principal

occupashun||||||***|occupation

occupashun ||||******occurrence

occupashun |||***|**|occl-usion

d=3

d=6

d=5

Page 22: What is Computer Science About? Part 1: Computational Thinking

Summary about Computational Thinking• CT is about transforming (often ill-defined)

activities into concrete, well-defined procedures.– a finite sequence of steps anybody could follow, with

well-defined decision criteria and termination conditions

• take-home message: the following components are important to computational thinking:1. decomposition2. identifying patterns and repetition3. abstraction and generalization4. choosing a representation for the data5. defining all decision criteria