Introducing Objects in Squeak Mark Guzdial Georgia Tech

advertisement
Introducing Objects in Squeak
Mark Guzdial
Georgia Tech
Story
Why Squeak?
How the course CS2340 Objects and
Design is assembled
Examples of students assignments
How we use the CoWeb
Squeak
 Smalltalk-80 running on modern machines (over 30
platforms)
http://www.squeak.org
 Supporting wide range of media: Flash, MIDI, AIFF/WAV, MPEG
 Open-source
 Alan Kay, Dan Ingalls, Ted Kaehler from original Xerox
PARC LRG plus Wonderful additions
Apple to Disney to Viewpoints Research
http://www.squeakland.org
Breaking the Lines
The Subversive Reason for Squeak
What if Steve Jobs and Bill Gates got it wrong?
What if the Xerox PARC idea of the personal
computer was bigger than MacOS and Windows
(and X-Windows and Gnome and…)?
In Squeak, you have what Jobs saw.
LITERALLY THE EXACT SAME BITS?
Can you see what he missed?
Teaching Squeak
Squeak is the language of our required
Sophomore level course on Objects and
Design (140-250 students per term)
Focus on OOA/D/P and User Interfaces
Semester-long team projects
Leverage Squeak’s multimedia support to do
interesting things
Content of Class
Focus on OOA, OOD, OOP
OOA: CRC Cards
OOD: UML Class Diagrams
OOP: Squeak
User interfaces: Building, design,
evaluation
Cap of languages focus in our curriculum
(follow-on to Languages and Translation)
Structure of Class
 Students have a major, team-based project
Spring 2001: Build a map of Georgia Tech, based on information
harvested from the Web
Eventually, grow it so that you can provide a 3-D tour of an
IMAGINARY campus with vocal instructions
 Lectures are available to provide students with theory,
examples, issues
Students tend to stop coming very much to lecture past 3/4 point
One morning, SEVEN students…
Grading Policy
25% Midterm
10% Quizzes (4) (on coding)
35% Final
30% Project Assignments (7 of them)
On the CoWeb…
Definition of project
Milestones (Turn-ins) - ALL OF THEM
Roughly every two weeks
First one is individualized, all others are team-based
FAQs, links to external resources, etc.
Strongly recommended: Who’s Who page
Later: Cases, Surprises, Exam Reviews…
Project This Semester
Interactive Maps
P1 (individual): Draw a simple map with
routes
P2 (team): Make it interactive with buildings
P3: Design everything
P4, P5: Whole campus and provide routes
P6: Make the map show up in Wonderland
(3-D) with user-definable tours
P7: Provide a big tour for an imaginary
campus (but don’t change code)
Project Last Semester
Text-based adventure games (Interactive
Fiction)
P1 (individual): Build a pattern matcher that will work
for (simple) natural language
P2 (team): Implement simple adventure game
P3: Design everything
P4, P5: Add features like Web access, daemons,
interactive people
P6, P7: ANY API YOU WANT. Make the adventure
game show up in Wonderland
P7: Build a game, but can’t change the code (without
justification)
Philosophy of the Course
The course is on design, for novice designers
“If you know UML, Corba, COM, and XP already, great. Most
people here don’t.”
But there’s a big focus on learning, not just
lecturing.
Students have to implement your designs — live
in them. Figure out where they’re bad
The course isn’t explicitly on programming in
Squeak, but implicitly (to provide design
feedback), it is. Quizzes focus on Squeak
programming
Why Squeak?
 Why not Java? Why not C++?
 Marvin Minsky: “If you only know something in one way,
you don’t know it at all.”
 Faculty agreed that you should see something not Cbased
 Other reasons:
Great for UI
Different model for programming: Can’t use emacs
All the sources are there for everything
Why this class can be aggravating
 It’s not about job skills, per se
No Delphi or Visual Basic here
Few job postings for Squeak these days (but increasing number
for Smalltalk)
 It’s about ways of thinking that are core to CS, about
ways of designing programs
About where the core ideas of computers today came from
 It’s about designing, critiquing designs, making
tradeoffs, and making choices
Approach of Book (and elsewhere)
 Concrete before Abstract
Build things before design them
 Learning involves testing and failure
You have to try things in Squeak
 Generation and Inquiry, over Transmission
There is no Squeak API
But there are lots of great tools for poking through the system
We'll teach the tools to help you learn how to figure it out for
yourself
CoWeb:
Collaborative Websites
 Based on Ward Cunningham’s
WikiWiki Web
Hence it’s “other” name: Squeak Wiki
-> Swiki
 Simple system:
It’s a website
Where any user can edit any page
(caveat “locks”)
And any user can create new pages
Using the CoWeb
QuickTime™ and a
QuickDraw decompressor
are needed to see this picture.
Features to support collaboration:
Recent Changes and Attachments
Security
We save
everything,
But it’s mostly
social
Use in CS2340:
HCI Review
HCI
Review
Other uses:
Midterm and final exam reviews
Glossaries
Case
libraries
Download