Software Engineering and Software Engineering and SqueakSqueak
Rick Zaccone
Bucknell University
OutlineOutline
Past EffortsTurning PointCurrent course designConclusions
CS Curriculum in Late 80sCS Curriculum in Late 80s
Pascal in CS1 and CS2Sun Workstations
First AttemptFirst Attempt
Standard Software Engineering text–Waterfall model– Structured Programming
Sun Workstations– X Windows– C
FrustrationsFrustrations
Students spent most of their efforts fighting with X Windows.
Project didn’t workText has much too much material
Next Attempt (1990)Next Attempt (1990)
Material from Software Engineering Institute
Macintosh ComputersC
ResultsResults
Projects worked!Not much design thoughProcess not effective
Curricular ChangesCurricular Changes
Pascal in CS1C++ in CS2
What is Software Engineering?What is Software Engineering?
From a standard SE text: SE is an engineering discipline which is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.
Another Attempt (1993)Another Attempt (1993)
Booch’s Object-Oriented Design With Applications
THINK Class Library
ResultsResults
Students produced working programs
Not much understanding of OOD
Similar Attempt 1995Similar Attempt 1995
Wirfs-Brock Designing Object Oriented Software
FrustrationsFrustrations
Students didn’t get it.Couldn’t talk about design patterns
in a meaningful way
More Curriculum ChangesMore Curriculum Changes
C++ in CS1 and CS2
OOPSLA ‘97 in AtlantaOOPSLA ‘97 in Atlanta
Alan Kay’s talk
Java Version (1998)Java Version (1998)
Booch’s OOA-OOD textRational Rose
FrustrationsFrustrations
Java didn’t deliver– Still couldn’t talk about design patterns
Steep learning curve for Rational Rose
Turning PointTurning Point
Birth of my son1998-1999 Sabbatical–More Java, learn Smalltalk– Smalltalk, Objects, and Design, by
Chamond LiuKent Beck’s XP manifestoMost software projects are small
SE and Squeak! (Spring 2000)SE and Squeak! (Spring 2000)
Mark Guzdial’s text: Squeak: Object-Oriented Design with Multimedia Applications
Kent Beck: Extreme Programming Explained.
Course ContentCourse Content
Lecture material from Mark’s book, Smalltalk, Objects, and Design, and The Smalltalk Report, and other sources.
Used weekly labs for the XP portion of the course. One week iterations.
Focus on DesignFocus on Design
Not just getting it to workStudents re-evaluated their designs
weeklyStudents refactored often
Project Was FunProject Was Fun
Squeak’s multimedia capabilities made it easy to find a fun project
Students wrote an MP3 player
Course OutlineCourse Outline
1.5 weeks - Intro to Squeak1.5 weeks - Extreme Programming1 week - Refactoring1 week - Abstract Classes1 week - Collections1 week - Design and implement1 week - MVC
Outline ContinuedOutline Continued
2 weeks - Polymorphism2 weeks - Design Patterns1 weeks - Type vs. Class
RefactoringRefactoring
Fowler’s RefactoringKent Beck’s Smalltalk Best Practice
Patterns
Abstract ClassesAbstract Classes
Why?Pure virtual methodsDesign Example
CollectionsCollections
What are they?Lab examples
Design ExampleDesign Example
• CRC Cards• Design a program using CRC Cards• Implement it
MVCMVC
Easy to explainStructure is in place
PolymorphismPolymorphism
Finite State MachineCounter
Unit TestingUnit Testing
HardNot the concept, just doing it!
Design PatternsDesign Patterns
EasySelected examples from GOF book
Good NewsGood News
Students had a lot of funAsk me to adjust their accounts so
they could continue working on it after the semester was over.
Bad NewsBad News
They didn’t do it!
ConclusionsConclusions
Squeak allowed me to focus on design and not syntax
Squeak’s multimedia capabilities permit more interesting projects
XP fits neatly into the course