10/09/1999© 1999 cnri, guido van rossum 1 computer programming for everybody guido van rossum cnri...
TRANSCRIPT
![Page 1: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/1.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
1
Computer Programmingfor Everybody
Guido van RossumCNRI
(Corporation for National Research Initiatives, Reston, Virginia, USA)
![Page 2: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/2.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
2
Our Vision
• A computer on every desk…?
Yes!
• But everybody a programmer…?
...Why not?!
![Page 3: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/3.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
3
Everybody a Programmer!
• Computers need programming– Programming skills will become as
essential as reading and writing
• Don't leave it to the experts– Empower users– Escape canned dialogs, “wizards”– Scratch your own itch– Solve your own problem, improvise
![Page 4: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/4.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
4
But How?
• Isn’t programming too hard?– Yes, with current languages
• C++ a nightmare in high schools• Java not much better• VB? Ha!
– Yes, with current tools• even professionals cuss their tools• tools for beginners lacking or “dumbed down”
![Page 5: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/5.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
5
Our Vision
• “A Python on every desk”
• Based on Python...– Next generation programming tools– New CS curriculum– New language
» Initially, use a subset of Python» Improve language based on experience
![Page 6: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/6.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
6
What is Python?
• OO HL rapid prototyping language– Not just a scripting language– Not just another Perl
• Extensible (add new modules)• C/C++/Fortran/whatever• Java (through JPython)
• Embeddable in applications
![Page 7: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/7.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
7
Why Start With Python?
• Good for teaching
• Useful in the real world
• Appealing to computer scientists
![Page 8: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/8.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
8
Why Teach Python?
• Easy to teach the principles– see trees through forest– structured programming– object-oriented programming– programming large systems
• Interesting, realistic examples– connect to real applications
![Page 9: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/9.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
9
Python in the Real World
• Python prepares for Java, C, C++• Python is used in many places
– Industrial Light & Magic– Infoseek, Google (crawlers)– Lawrence Livermore National Lab– Red Hat Linux– CGI scripts everywhere
![Page 10: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/10.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
10
Academic Elegance
• Small set of high level data types– numbers, string, array, hash, objects– “everything is an object” philosophy
• Elegant high-level syntax– expressive and readable; intuitive
• indentation for grouping
• Good mix of static, dynamic binding
![Page 11: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/11.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
11
Our Goals
• Improve CS education
• Improve software development tools
• Empower end users
• ...and Python world domination :-)
![Page 12: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/12.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
12
Specific Plans
• Teach Python to beginners– middle/high school– college freshmen (CS / non-CS)– fun examples, e.g. 3D games
• Develop easy programming tools– super version of IDLE (Python’s IDE)– add program analysis tools
![Page 13: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/13.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
13
Funding
• DARPA funding for first task– 1.5 people, 2 years
• May fund expanded proposal– 5 people, 5 years– plus collaborations (CMU, Chicago,...)
• Looking for other sources– NSF? Industry? Bill Gates?
![Page 14: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/14.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
14
Educational Plans
• Classroom materials– student textbook; exercises– teacher handbook; answers– develop interesting examples– also suitable for home schooling
• Self-study materials– slight variation on student textbook
![Page 15: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/15.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
15
Educational Goals
• Fundamentals of programming– datatypes, variables, control structures– datastructures, algorithms
• Object-Oriented programming– classes, methods, inheritance
• Program structure, good style– modules, libraries; idioms, patterns
![Page 16: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/16.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
16
The Role of Python
• Teach programming, not Python• Python doesn't get in the way• Python focuses on high level
concepts rather than bits & bytes• Python allows interesting examples• Python paves way for Java, C++, ...• Python is useful in itself
![Page 17: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/17.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
17
Software Plans
• Programming environment– novice-friendly – based on existing IDLE– interactive (>>> prompt)– syntax coloring, friendly messages– module editor, debugger, etc.– smart tools
![Page 18: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/18.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
18
Software Goals
• Useful for novices and experts– novices become experts– everybody is an expert in some field
• Smart program analysis tools– Incremental semantic analyzer
• my ideal: works like a spell checker!
– Abstraction finder– Large program structure analyzer
![Page 19: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/19.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
19
The First Year
• First half of 2000– develop first classroom materials
• working with teachers
– develop some software (extend IDLE)
• Fall 2000– first classroom exposure
• watch students• watch teachers!
![Page 20: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/20.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
20
Beyond the First Year
• Incorporate experience, feedback– improve classroom materials– improve software
• Widespread distribution– via Python website & community
• Develop advanced software• Possibly changes to the language
![Page 21: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,](https://reader034.vdocuments.us/reader034/viewer/2022052522/551507c2550346a80c8b5705/html5/thumbnails/21.jpg)
10/09/1999 © 1999 CNRI, Guido van Rossum
21
Community Involvement
• Like open source software process– Feedback, fixes, improvements– Develop wide range of examples– Develop specialized courses
• New applications• Co-tutoring