More Information on Squeak Textbook

Mark Guzdial guzdial at cc.gatech.edu
Wed Oct 4 13:59:10 UTC 2000


I've had several questions about my Squeak textbook, with suggestions 
that I post the answers to the list.

Again, the book is at: 
http://www.amazon.com/exec/obidos/ASIN/0130280283/o/qid=970306184/

(Currently ranked in sales at 38,828! (With a bullet? :-))

The publisher (which I can't believe Amazon doesn't list!) is 
Prentice-Hall.  My editor is Alan Apt.  Both the Table of Contents 
and Back cover text for the book are WRONG. <sigh> (I've alerted P-H, 
and they're working on it.)

Below is the actual back cover contents and the manuscript table of 
contents (which is changing some -- copyeditors are pretty amazing 
:-).  The cover for the textbook and the edited volume 
(http://coweb.cc.gatech.edu/squeakbook) will be the same image, with 
altered color schemes.  Maybe I shouldn't spoil the surprise about 
the cover images -- let's just say that they're wonderful and 
entirely appropriate for Squeak.

Rick Zaccone of Bucknell, Rik Fischer Smoody of Portland State, and 
Cullen O'Neill of U. Michigan all test-drove the book this last year.

Let me know if you have any other questions about it.
Mark


Squeak: Object-Oriented Design with Multimedia Applications

Mark Guzdial

"In Squeak, you have your hands in one of the most late bound, yet 
practical, programming systems ever created. It is also an artifact 
which is wide, broad, and deep enough to permit real scientific 
study, creation of new theories, mathematics, engineering 
constructions, and even its own successor! Please use this book to 
learn how to do "all of the above." - Alan Kay, V-P Research, Disney 
Imagineering

 "The text presents OO concepts in the context of Smalltalk (Squeak), 
which is by far the best environment and language in which to learn 
the concepts. The author is clearly enthusiastic about the subject 
matterŠauthoritative in explaining the basics of Smalltalk.  - Keith 
R. Pierce, St. Paul Companies


This innovative text teaches object-oriented programming using Squeak 
- a powerful, freely available language that is highly effective for 
teaching object-oriented programming. Using a focus on the basics and 
compelling case studies, the text covers the whole process of 
object-oriented development - from object-oriented analysis and 
design, though user interface design and application evaluation.


FEATURES/BENEFITS


 Free Squeak CD with book
** CD includes version 2.7 of Squeak compatible with Windows 
95/98/NT, WindowsCE, Macintosh, Linux, Solaris, SGI, Acorn, BeOS. 
ALSO includes source code for examples, Squeak extras, and lecture 
notes in PowerPoint and Squeak-native formats.


 Focus on Squeak
** Gives both professionals and students great flexibility in working 
in an exciting environment that supports the latest in multimedia, 
including 3-D computer graphics, MIDI audio, and Flash animations. It 
is the first printed documentation for Squeak's advanced features, 
Morphic user interface, and support for multimedia.


 Rich description of object-oriented process.
** Introduces readers to an object-oriented design process, using UML 
standard class diagrams.


 A user interface design and evaluation process.
** Leads users through constructing user interfaces, then designing 
and evaluating user interfaces. Case studies present the design and 
implementation of exciting multimedia applications, then follow-up 
with real evaluation results from interaction with users.


ABOUT THE AUTHOR

Mark Guzdial is an Associate Professor in the College of Computing at 
Georgia Institute of Technology. His research focuses on learning 
sciences and technology, specifically, "collaborative Dynabooks," 
which are tools that support learning through collaborative 
multimedia construction. He has been teaching object-oriented 
analysis, design, and programming in Smalltalk for over five years. 
His Ph.D. is in Education and Computer Science from the University of 
Michigan. Georgia Tech praised his teaching with an award for 
"Outstanding Use of Educational Technology" (1997). He has received a 
prestigious National Science Foundation CAREER Award. He is on the 
editorial board of IEEE Multimedia, Journal of the Learning Sciences, 
Journal of Interactive Learning Research, and Interactive Learning 
Environments Journal.





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: 15222 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20001004/6f4579d5/attachment.bin


More information about the Squeak-dev mailing list