Objects and Design Summer 2002 Introduction to CS2340 Objects and Design Summer 2002
This Semester Instructor: Barbara Ericson, ericson@mindspring.com
Books this Semester Required Text Optional Guzdial: Squeak: Object-oriented design with multimedia applications Optional Goldberg & Robson: Smalltalk-80: The Language (“Purple Book”) - Addison-Wesley Guzdial & Rose (Eds): Squeak, Open Personal Computing and Multimedia
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 (follow-on to Languages and Translation)
Structure of Class You have a major, team-based project Summer 2002: Build an objects-based drawing editor with ability to output and input a subset of Postscript Lectures are here to provide you with theory, examples, issues BUT DO COME! Huge differences in grades…
Grading Policy 25% Midterm 10% Quizzes (3) 30% Final In-class, open-book, 15-20 minutes 30% Final 35% Project Assignments (5 of them)
Resources CoWeb: http://coweb.cc.gatech.edu/cs2340/ Newsgroup: git.cc.class.2340 TAs hang out there No guarantee of 24-hour coverage, nor late night (nor early morning!) coverage
Where to get Squeak, lecture notes… On the CoWeb… We’ll be using Squeak 3.2 (latest version, not what’s on your CD, but what’s on your CD should work.) Lecture notes are all on the book CD with updates loaded to CoWeb.
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 First milestone: May 28 (DO IT YOURSELF!) First quiz: May 23 First team milestone: June 13 FAQs, links to external resources, etc. Cases page where any code can be reused without honor code violation! Strongly recommended: Who’s Who page
Project This Semester Drawing Editors M1 (individual): Build a simple drawing editor M2 (team): Make a more powerful drawing editor: More tools, move/erase/resize M3: Design everything M4: Generate and input Postscript M5: Make it a web service
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 at you. So you 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 get you design feedback), it is. Quizzes will 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 C-based 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