“computational thinking is a way of solving problems, designing systems, and understanding human...

71

Post on 19-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer
Page 2: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

The Spread of Computational Thinking

Peter LeeProfessor and Head of Computer ScienceInterim Director, Center for Computational ThinkingCarnegie Mellon University

Page 3: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

“Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer science.”

— Jeannette Wing

Page 4: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

How can I save Peter’s

life?

Fast algorithms for optimizing n-way organ exchange will be adopted by UNOS

Page 5: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

The Necessity of CT

By thinking computationally (that is, abstracting the problem, understanding the consequences of scale, and applying algorithmic concepts), we extract simplicity from complexity and, in this case, save lives.

Page 6: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

http://computationalthinking.org

Page 7: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

People who Think Computationally Can…

Apply algorithmic concepts to understand, explain, solve, and debug problems, processes, and interactions

Understand the consequences of scale in terms of both engineering and societal impact

Make use of abstractions at multiple levels, to control complexity and collaborate more effectively

Page 8: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

People who Think Computationally Can…

Apply algorithmic concepts to understand, explain, solve, and debug problems, processes, and interactions

recursion, divide-and-conquer, dynamic programming, …Understand the consequences of scale in terms of both engineering and societal impact

exponential growth, greedy vs global, Metcalfe’s Law, …Make use of abstractions at multiple levels, to control complexity and collaborate more effectively

applied logic, languages, ……

Page 9: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

The Spread of CT

Workshop series: Computational Thinking for Everyone

“…revolutionary science and engineering research outcomes made possible by innovations and advances in computational thinking…”

Page 10: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

This Session

A sample of research and education activities in the Center for Computational ThinkingCalled PROBEs, for PROBlem-oriented Explorations, each explores and/or demonstrates the value of computational thinking, in

drug discoveryparallel computingmusic and the arts

Page 11: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Computational Thinking for Drug Design

Christopher James LangmeadDepartment of Computer ScienceCarnegie Mellon University

Page 12: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Drug Design and ResistanceExample: HIV-1 Protease (HIV PR)

What is Drug Design?Finding a compound that:

Binds to target moleculeInhibits function of target

What is Resistance?A set of mutations to target that:

Inhibits binding of drugPreserves function of target

image source: wikipedia

HIV PR and drug

Page 13: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Key Question:

Can we design compounds that bind to, and inhibit function of target molecule --- and all viable mutants?

Mutant 1 Mutant n

Page 14: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Computational Thinking for Drug DesignAbstraction #1

2-player Game: Pharma vs. VirusA resistance-evading drug is a “checkmate”

Moves:Pharma moves by introducing/modifying compoundVirus moves by introducing mutationsNote: Pharma can anticipate virus’ moves, but not vice-versa

Move EvaluatorNature’s function: (changes in) Free Energy

Page 15: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Computational Thinking for Drug DesignAbstraction #2

Computing free energies , probabilistic inferenceStatistical Physics tells us how to derive free energies from the probability distribution over configuration spaceWe can efficiently represent these probability distributions using undirected probabilistic graphical modelsFree energies are computed via (generalized) belief propagation (BP) BP

MRF

Free Energy (move evaluator)

Page 16: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Results to Date

Tasks: Classification: does mutation M confer resistance to drug D?Regression: quantitative accuracy of predicted free energies

Data: 7 commercially available drugsWild-type + 14 mutants known to confer resistance

Accuracy: Classification: 71% accuracy (sens = 68%; spec = 100%)Regression: 0.9 kcal/mol

Page 17: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Parallel Thinking

Guy E. BlellochProfessorCarnegie Mellon University

Page 18: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

18

Andrew Chien, 2008

Page 19: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Problems in Moving to Multicores

Building the hardware?Developing good programming languages or extensions to existing languages?Developing efficient parallel algorithms?Developing good compilers, run-time systems, and debuggers?Developing good OS support?Rewriting the existing code base?Educating programmers to “think parallel”?

Page 20: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Parallel Thinking

As with “Computational Thinking” in general, “Parallel Thinking” is not a set of ad-hoc libraries, programming languages, and interfaces to learn, it is a set of core ideas and a way of approaching problems.If explained at the right level of abstraction many algorithms are naturally parallel? We currently brainwash programmers to think sequentially.Conjecture: If done right with appropriate knowledge parallel programming might be as easy as sequential programming for many uses?

Page 21: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Example: Quicksort procedure QUICKSORT(S): if S contains at most one element then return S else begin choose an element a randomly from S; let S1, S2 and S3 be the sequences of elements in S less than, equal to, and greater than a, respectively; return (QUICKSORT(S1) followed by S2 followed by QUICKSORT(S3))end

Two forms of natural parallelism

Page 22: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Example: Parallel Selection {e in S | e < a};

S = [2, 1, 4, 0, 3, 1, 5, 7] F = S < 4 = [1, 1, 0, 1, 1, 1, 0, 0] I = addscan(F) = [0, 1, 2, 2, 3, 4, 5, 5]

where F R[I] = S = [2, 1, 0, 3, 1]

Each element gets sum ofprevious elements.Seems sequential?

Page 23: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Example: Scan

[2, 1, 4, 2, 3, 1, 5, 7]

[3, 6, 4, 12]sum

recurse[0, 3, 9, 13]

[2, 7, 12, 18]sum

interleave[0, 2, 3, 7, 9, 12, 13, 18]

Page 24: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Conclusion

Educating programmers and researchers on parallelism is key.

We need to identify the “core” ideas in parallel thinking and concentrate on these.

Perhaps we can teach parallelism from day 1 and without much more effort than teaching sequential computing.

Page 25: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Computational Thinking and Music Performance

Roger B. DannenbergAssociate Research Professor of Computer Science and ArtCarnegie Mellon University

Page 26: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

The Big Picture

Everyone likes musicMost just listen, but many playMusic Merchants: $8B, 5M instruments (US, 2006)Sound reinforcement: $1.5B (US, 2006)Audacity Audio Editor (Dannenberg & Mazzoni): 1M/month

Computation can enhance the musical experience by providing automated, live, musical partners

Page 27: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

The Performer

Real-time performance synchronized to human musiciansAssumes quasi-steady tempo

research: characterize tempo variation in human performance

Uses foot-tapping to give the beat to the computerresearch: interfaces and methods for tempo acquisition and cues

Uses pre-recorded audio (20 instruments in real time)

research: high-quality, low-latency, time-variable, ensemble time stretching

Page 28: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

The Performer in Concert

Carnegie Mellon Jazz Ensemble + strings, directed by Dave Pellow, “Alone Together” arranged and conducted by Dr. John Wilson, strings recorded at Carnegie Mellon School of Music

Video

Page 29: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Future Work

Interface, interface, interfaceSensingDisplayComputational Thinking and the Digital Music Stand

Tablet PC and smaller platforms (Kindle? Cell phones?)Capture music notation as digital photosRecord all rehearsals“Learn the music” for page turns, etc.Feedback: location, intonation, cues

Page 30: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

ART and CODE

Golan LevinAssociate Professor of ArtDirector, Studio for Creative InquiryCarnegie Mellon University

Page 31: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

… a Director

Page 32: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

… an Artist/Engineer

Page 33: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 34: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

… and an Educator

“Studio Arts courses in Computer Science”Where the medium is code, but the objective is self-expression

Introduction to Computational FormInformation Visualization as Personal InquiryInteractive Technologies for Live PerformanceAudiovisual Systems and MachinesGenerative & Digital Fabrication

Page 35: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinStudio for Creative InquiryCarnegie Mellon University

Page 36: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

"Where's my Place?"

Page 37: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

"Where's my Place?"

There is no category for“art software” in this landscape.

Page 38: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Reason 1. ("That's Not Art/CS!")

We’re too slow to acknowledge thatComputation and Culture exist in feedback

Computing influences the evolution of cultureCulture motivates and prompts advances in computing“Culture” = people communicating together

Page 39: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Reason 2. ("Who, me?")

A pervasive belief that software is made by someone else

Page 40: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Reason 2. ("Who, me?")

A pervasive belief that software is made by someone else

Generally, we can’t even pimp it the way we can pimp our cars

Page 41: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

What is Software Literacy?

Just as true literacy in English means being able to write as well as read …

Page 42: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

What is Software Literacy?

Just as true literacy in English means being able to write as well as read …

True literacy in software demands not only knowing how to use commercial software tools, but also how to create new software for oneself and for others

Page 43: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Programming as a Liberal Art

CS departments should not have the monopolyon teaching programming

Programming (an everyday skill) and Computer Science (a research subject) are different

Computer scientists are not necessarily good atteaching programming to people from other disciplines(who may have very different motivations for learning)

Page 44: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer
Page 45: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

11 Different Arts-programming Languages

Actionscript/Flash (Adobe)Extendscript (Adobe)Alice (CMU) Hackety HackMax / MSP / JitteropenFrameworks (C++)Processing (Java)PureDataScratchSilverlightVVVV

Page 46: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

… not "Research Microlanguages"

The significance of these tools is not theoretical Each of these toolkits has 10K – 1M+ usersThey have totally transformed the landscape of which kinds of people are now writing codePeople like: “artists, young people, and the rest of us”

Page 47: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

NameTitleOrganization

Page 48: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

NameTitleOrganization

Page 49: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Atelier-Style Education

Importing methods of arts pedagogy:Curiosity-driven problem generation and solvingIndividualized feedback for individual needs

Similar to a music instrument lesson

Page 50: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

NameTitleOrganization

Page 51: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

NameTitleOrganization

Page 52: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

NameTitleOrganization

Page 53: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 54: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Attendee Diversity

Many, many people want to learn to code234 total registered attendeesHailing from 7 countries (inc. France, Norway, …)Hailing from 23 different American states

22% from Carnegie Mellon University39% from Pittsburgh and Allegheny County67% from East Coast + Rust Belt

Ages 11 through 7535% female

Page 55: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Attendee Diversity

So diverse, in fact…

“Is this event for developers, or kids?” yes…“Is this event for developers, or artists?” yes…“…” (sound of brain breaking)

Some introductions…

Page 56: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer
Page 57: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer
Page 58: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Workshops at Art && Code

21 workshops in 11 different programming languagesGenerally 10-20 students per workshopAbout 1100 person-hours of learning in one weekend

Page 59: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 60: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

NameTitleOrganization

Page 61: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 62: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

NameTitleOrganization

Page 63: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Art && Code: a Summit / Symposium

Creators of these toolkits had never been gathered togetherTopic: what motivated the creation of these toolkitsTopic: Feedback between user communities + features(particularly for open-source toolkits)

Page 64: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 65: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 66: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 67: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

A New Digital Community

Built with Ning, quickly grew to 500+ global membersContinues to grow, even months laterSymposium videos receiving thousands of viewsAll online… have a look!artandcode.com

Page 68: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 69: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

Golan LevinDirector, Studio for Creative InquiryCarnegie Mellon University

Page 70: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

sponsors NameTitleOrganization

Partners

Page 71: “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.