Smalltalk and Big Ideas: Squeak tutorial

Mark Guzdial guzdial at cc.gatech.edu
Tue Aug 15 14:21:52 UTC 2000


On the theme of the Squeak tutorial, to let y'all know, that I 
shipped the manuscript of my Squeak textbook "Squeak: Object-oriented 
design with multimedia applications" to Prentice-Hall a couple weeks 
ago.  It's expected to be in stock 12/1/2000.  Below is the Table of 
Contents.  Thanks to all who reviewed the earlier versions -- I 
really appreciate it!

Mark

TABLE OF CONTENTS


FOREWORD
SOFTWARE: ART, ENGINEERING, MATHEMATICS,
OR SCIENCE?
BY ALAN KAY	10
PREFACE	1
1	APPROACH OF THE BOOK	1
1.1	START FROM WHERE THE STUDENTS ARE	2
1.2	LEARNING INVOLVES TESTING AND FAILURE	4
1.3	GENERATION AND INQUIRY, NOT TRANSMISSION	5
2	CONTENT OF THE BOOK	5
3	ACKNOWLEDGEMENTS	6

PART 1
FOUNDATIONS OF  OBJECT-ORIENTED PROGRAMMING AND SQUEAK	8

CHAPTER 1
OBJECTS, SMALLTALK, DYNABOOKS, AND SQUEAK:
WHERE THE OBJECTS COME FROM	9
1	OBJECT-ORIENTED PROGRAMMING	9
2	BIRTH OF OBJECTS	10
3	"A PERSONAL COMPUTER FOR CHILDREN OF ALL AGES"	13
4	BACK TO THE FUTURE	18
5	COMMON ANCESTRY OF OTHER OBJECT-ORIENTED LANGUAGES	21

CHAPTER 2
A TOUR OF SQUEAK	24
1	BASIC RULES OF SMALLTALK	24
2	DOING "NORMAL" THINGS IN SQUEAK	27
2.1	VARIABLES AND STATEMENTS	28
2.2	CONTROL STRUCTURES	30
2.3	LITERALS, NUMBERS, AND OPERATIONS	33
2.4	STRINGS AND ARRAYS	34
2.5	FILES	38
3	DOING "OBJECT" THINGS IN SQUEAK	38
3.1	BLOCKS	39
3.2	VARIABLES AND MEMORY	40
3.3	CREATING CLASSES, INSTANCES, AND METHODS	41
3.4	THE SQUEAK MODEL OF EXECUTION	43
4	USING SQUEAK	45
4.1	STARTING A NEW PROJECT	48
4.2	EXTENDED EXAMPLE: MUPPETS IN SQUEAK	50
5	TOOLS AND STRATEGIES: FINDING MORE IN SQUEAK	57
5.1	FINDING CLASSES: THERE HAS GOT TO BE A WINDOW OR A TEXTFIELD
CLASS AROUND HERE SOMEWHERE. WHERE IS IT?	57
5.2	EXPLORING OBJECTS: I'M EXPLORING A COMPLICATED OBJECT, AND NOW
I'VE GOT A BAZILLION INSPECTORS ALL OVER THE SCREEN.  IS THERE SOME 
OTHER WAY TO EXPLORE AN OBJECT?	59
5.3	FINDING METHODS: I REMEMBER THERE'S A WAY OF GETTING AN ELEMENT,
'AT'-SOMETHING, BUT I CAN'T FIND IT.	60
5.4	FINDING IMPLEMENTORS: I SEE A REFERENCE TO A METHOD NAMED
FINDTOKENS: (OR WHATEVER). WHERE IS IT? WHAT DOES IT DO?	62
5.5	FINDING SENDERS: THAT'S WHAT FINDTOKENS: DOES. WHO USES IT?	63
5.6	DEBUGGING: I CAN'T FIGURE OUT WHAT MY CODE IS DOING! I'VE GOT AN
ERROR, BUT IT MAKES NO SENSE TO ME.	64
5.7	LEARNING TO USE A CLASS: WHAT ALL DOES STRING OR OTHER 
CLASSES UNDERSTAND?	66
5.8	THERE SEEM TO BE A HUGE NUMBER OF COMMAND KEYS. IS THERE A LISTING
SOMEWHERE OF ALL OF THEM?	67
6	HOW DO YOU MAKE AN APPLICATION IN SQUEAK?	68

CHAPTER 3
YOUR FIRST PROGRAM: JOE THE BOX	71
1	ADELE GOLDBERG'S JOE THE BOX	71
2	TOOLS AND STRATEGIES: FILING IN NEW CODE	71
3	PLAYING WITH BOXES	73
3.1	JOE AND JILL AS EXAMPLE OBJECTS	76
3.2	ADDING A NEW KIND OF BOX	77
4	CREATING THE BOX CLASS AND BOX INSTANCES	79
5	BASICS OF DRAWING	81
5.1	CREATING FORMS	81
5.2	TEACHING BOXES TO DRAW	84
5.3	GETTING INPUT FROM THE USER	86
6	EXTENDING BOX TO CREATE NAMEDBOX	87
7	TOOLS AND STRATEGIES:
HOW TO GO FROM "SAMPLE CODE" TO "REUSE"	90
8	IMPROVING BOXES: EFFICIENCY, ANIMATION, AND DESIGN	93
8.1	DRAWING BOXES BETTER	93
8.2	ANIMATING BOXES	95
8.3	DESIGNING BOXES	96

CHAPTER 4
DESIGNING OBJECT SYSTEMS	99
1	THE OBJECT-ORIENTED DESIGN PROCESS	99
1.1	OBJECT-ORIENTED ANALYSIS STAGE	100
1.1.1	Brainstorming Candidate Classes	100
1.1.2	Class Responsibility Collaboration (CRC) Cards	102
1.2	OBJECT-ORIENTED DESIGN STAGE	104
1.2.1	UML Tools	105
1.2.2	Relationships between Classes	105
2	YOUR FIRST DESIGN: A CLOCK	107
2.1	DOING IT QUICKLYŠAND WRONG	107
2.2	OBJECT-ORIENTED ANALYSIS OF THE CLOCK	108
2.2.1	Brainstorming a Clock	109
2.2.2	CRC Cards for a Clock	109
2.3	OBJECT-ORIENTED DESIGN OF A CLOCK	113
2.3.1	Considering An Alternative Design	115
2.4	OBJECT-ORIENTED PROGRAMMING FOR THE CLOCK	116
2.4.1	Implementing SecondsTicker	117
2.4.2	Side Trip on Processes	118
2.4.3	Implementing the Clock Class	119
3	SPECIALIZING CLOCK AS AN ALARMCLOCK	122
3.1	OOA FOR ALARM CLOCK	122
3.2	OOD FOR ALARM CLOCK	123
3.3	OOP FOR THE ALARMCLOCK	124
4	REUSING THE CLOCK AND ALARMCLOCK	126
4.1	REUSE IN A VCR	126
4.2	REUSE IN AN APPOINTMENTBOOK	129
4.2.1	Programming the Appointment Book	131
4.2.2	Implementing the AppointmentBook with Collections	131
4.2.3	Implementing the Appointments	133
5	IMPLEMENTING MODELS	134
6	RULES OF THUMB FOR GOOD OBJECT-ORIENTED DESIGNS	136
6.1	RECONSIDERING JOE	137
7	TOOLS AND STRATEGIES: PROGRAMMING IN GROUPS	137
7.1	CREATING PROJECTS AND CHANGE SETS	138
7.2	WORKING WITH SOMEONE ELSE'S CHANGES	139
7.3	RECOVERING FROM SOMEONE ELSE'S CHANGES	140

CHAPTER 5
BUILDING USER INTERFACES IN SQUEAK	143
1	ISSUES IN BUILDING A USER INTERFACE	143
2	DEVELOPING MODEL-VIEW-CONTROLLER	144
2.1	ROUND 1: NO SEPARATION AT ALL	145
2.2	ROUND 2: SEPARATE WINDOWS AND BUTTONS	150
2.3	ROUND 3: SEPARATING EVEN THE TEXT	157
2.4	STRENGTHS AND WEAKNESSES OF MODEL-VIEW-CONTROLLER	163
3	BUILDING PLUGGABLE USER INTERFACES IN SQUEAK	165
3.1	CREATING PLUGGABLE INTERFACES IN MVC	167
3.2	CREATING PLUGGABLE INTERFACES IN MORPHIC	171
3.2.1	Introducing Morphic	171
3.2.2	Doing Pluggable Components in Morphic	176
3.3	MENUS AND DIALOGS IN A PLUGGABLE WORLD	181
4	BUILDING MORPHIC USER INTERFACES	183
4.1	PROGRAMMING MORPHS FROM THE VIEWER FRAMEWORK	184
4.1.1	Adding an Instance Variable	186
4.1.2	Making our Ellipse Fall	188
4.1.3	Building the Kicker	190
4.2	PROGRAMMING BASIC VARIABLES AND EVENTS OF MORPHS	192
4.2.1	Instance Variables and Properties	193
4.2.2	Morphic Events	194
4.2.3	Animation	196
4.2.4	Custom menus	196
4.2.5	Structure of Morphic	197
4.3	PROGRAMMING A MORPHIC FALLING OBJECT	198
4.3.1	Implementing the Falling Object	200
4.3.2	Implementing the Kicker	201
4.3.3	Running the Text Falling Simulation	202
4.3.4	Changing the Gravitational Constant	202
5	TOOLS AND STRATEGIES: USING MORPHS THAT YOU
HAVEN'T MET YET	203

CHAPTER 6
DESIGNING USER INTERFACES IN SQUEAK	206
1	KNOW THY USERS FOR THEY ARE NOT YOU	206
1.1	HOW DO YOU DECIDE BETWEEN USER INTERFACE ALTERNATIVES?	207
2	UNDERSTANDING THE USER	208
2.1	UNDERSTANDING THE TASK	209
3	MATCHING USERS TO INTERFACE: AVOIDING USER ERROR	210
4	A USER INTERFACE DESIGN PROCESS	212
5	CRITIQUING OUR CLOCK INTERFACE	214
6	EVALUATION OF USER INTERFACES	215
6.1	EVALUATION BEFORE USER INVOLVEMENT	215
6.2	EVALUATION WITH USERS	216
6.3	EVALUATING GROUPWARE	219

CHAPTER 7
MULTIMEDIA NUTS-AND-BOLTS	221
1	TEXT	221
1.1	EXPLORING SQUEAK'S TEXT	221
1.2	PROGRAMMING SQUEAK'S TEXT	223
2	GRAPHICS AND ANIMATION	225
2.1	SIMPLE GRAPHICS TOOLS	225
2.2	PROGRAMMING SIMPLE GRAPHICS	226
2.3	3-D GRAPHICS FOR END-USERS	228
2.3.1	Programming Wonderland without the Script Editor	232
2.4	FLASH MOVIES	233
3	SOUND	235
3.1	RECORDING, VIEWING, AND EDITING SOUND	235
3.2	SOUND CLASSES	238
3.3	MIDI SUPPORT	240
3.3.1	MIDI Support Classes	243
3.4	SPEECH IN SQUEAK	244
4	NEW MEDIA IN SQUEAK	245
4.1	SQUEAKMOVIES	245
4.2	BOOKMORPHS	248
5	MAKING THE DYNABOOK IN SQUEAK	250

PART 2
CASE STUDIES	252

CHAPTER 8
CASE STUDY: AUDIO NOTES	253
1	MOTIVATION FOR AUDIO NOTES	253
2	USING AUDIO NOTES	253
3	DETAILS ON USE	254
4	OBJECT-ORIENTED DESIGN AND PROGRAMMING OF
AUDIO NOTES	255
4.1	BUILDING THE USER INTERFACE	256
4.2	HANDLING THE NOTES LIST	258
4.3	IMPLEMENTING THE LIST UI	259
4.4	SETTING UI OPTIONS	260
4.5	RECORDING AND PLAYING SOUND	260
5	EVALUATING THE DESIGN AND INTERFACE	264
5.1	HEURISTIC UI EVALUATION	265

CHAPTER 9
CASE STUDY: PLUGGABLE WEB SERVER AND SWIKI	268
1	NETWORKING SUPPORT IN SQUEAK	268
1.1	USER INTERFACES FOR NETWORKING	268
1.2	PROGRAMMING NETWORK ACCESS	270
1.3	WEB SERVING WITH PWS	271
1.3.1	Programming the PWS	272
2	SWIKI AS A PWS APPLICATION	275
2.1.1	Uses of the Swiki	277
2.2	OBJECT DESIGN OF SWIKI	277
2.2.1	Responsibilities of Swiki Classes	278
2.2.2	Critiquing Swiki's Object Design	281
2.2.3	Evaluating Swiki's Usability	281

CHAPTER 10
CASE STUDY: MAT (MULTIMEDIA AUTHORING TOOL)	284
1	MOTIVATION FOR AND USE OF MAT	284
2	OBJECT DESIGN AND PROGRAMMING OF MAT	287
2.1	IMPLEMENTING MAT	289
2.1.1	Drag-and-Drop into MAT	290
2.1.2	Handling the Menu in MAT	291
2.1.3	Generating HTML in the ParagraphEditor	291
3	USER EVALUATION OF MAT	298

CHAPTER 11
CASE STUDY: PROTOTYPING A PLAY-WRITING WORKBENCH	302
1	MOTIVATION AND SETTING THE GOAL	303
2	OBJECT ANALYSIS OF THE WORKBENCH	304
3	IMPLEMENTATION OF THE PLAY WORKBENCH	306
3.1	PROTOTYPE SCRIPTINGBENCH AND SCRIPTINGCONTROLS	306
3.2	IMPLEMENTING THE ACTORS	308
3.3	IMPLEMENTING PLAYING THE SCRIPT	310
4	ITERATING ON THE PLAYBENCH	312
5	EVALUATING THE PLAYBENCH: EXPERT EVALUATION AND
OBSERVATION	314
5.1.1	Summarizing the Evaluation	316

APPENDIX
A QUICK START GUIDE OF  SQUEAK EXAMPLES	319
1	CONSTANTS	319
2	CONTROL STRUCTURE EXPRESSIONS INVOLVING BLOCKS	319
3	TESTING OBJECTS	320
4	BASIC OBJECT BEHAVIOR	320
5	BOOLEAN OPERATIONS	320
6	MAGNITUDE AND NUMBER OPERATIONS	321
7	CHARACTER OPERATIONS	322
8	COLLECTION OPERATIONS	322
9	STRING OPERATIONS	323

INDEX	325


--------------------------
Mark Guzdial : Georgia Tech : College of Computing : Atlanta, GA 30332-0280
Associate Professor - Learning Sciences & Technologies.
Collaborative Software Lab - http://coweb.cc.gatech.edu/csl/
(404) 894-5618 : Fax (404) 894-0673 : guzdial at cc.gatech.edu
http://www.cc.gatech.edu/gvu/people/Faculty/Mark.Guzdial.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 10637 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20000815/95674b07/attachment.bin


More information about the Squeak-dev mailing list