Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
The CS Majors - The Genealogy Application
"The CS Majors" Group Members:
To design and program a Genealogy Application which allows users to enter ancestral/familial information, modify it, auto-fill it, generate GEDCOM files, and allow viewing and merging multiple family trees.
Our assignment was to create an application in Squeak to manipulate family trees. We were given lots of freedom in terms of how exactly to accomplish the task at hand. Certain minimum functionality was required as well. This functionality included:
- graphical representations of people
- a graphical method of defining relations
- the ability to edit people's vital information
- connecting to the Web to suppliment given information
- ability to read and write the standard Genealogy exchange format file (GEDCOM)
- ability to merge separate family trees, with computer-generated guidelines to who "should" be merged.
Arriving at this functionality from a language whose syntax was mostly unfamiliar seemed like a highly daunting task in the beginning. However, as time passed and our familiarity with SmallTalk and Squeak in particular increased, our view of Squeak transitioned from "daunting and scary" on the first milestone to more along the lines of "not too bad" around Milestone 3 and then "hmm... interesting" on Milestone 6. Due to the vagueness of the task-definition of Milestone 7, it was definitely the most difficult of all the milestones that we implemented, having to decide on every specific detail of the task was not exactly an easy task. But when we got done with it, our opinion of the project as a whole was more along the lines of "that was fun :-)". I'll divide my description of our work into the seven milestones...
M1 - Creating a Person
M2 - Automatic relations creation and Querying
M3 - Planning and design
M4 - Graphical Interface
M5 - Auto-completion
M6 - Reading and writing GEDCOM files
M7 - Merged Views
Suggestions to future Squeakers
- You will hear a lot of rant about this class, and Squeak in general... disregard half of what you hear, and all of what you feel.
- Disregard it because if you don't, you'll hate every minute of your work on Squeak (which, incidentally, will end up taking a lot of your time)
- Learn to love it, again, because thats your only option, if you don't your grades are going to be lower than you can imagine.
- Au contraire, the minute you begin to find Squeak interesting, your grades will go sky high.
- ... make sure you take a look at the mirror when that happens, cuz you'll most probably look like a mouse then. (c'mon... u like squeeaak... !)
Suggestions to the makers of squeak
PLEEEZEE! for God's sake... in the "?" class comments section, give examples for how you intend for every method to be used.. that will be the one thing that will save every future Squeaker a ton of time and impatience... besides, it'll make the langauge a lot more fun to learn and implement. In my opinion, teaching the concepts of a language should not involve the learners probing around to learn the obvoius, it should include (but not necessarily be limited to) coding new systems (just like our Genealogy Map) using existing classes which are detailed enough with their examples to be picked up and used right off rather than having to figure their syntax and use out. The efficiency of a programmer definitely increases dramatically with the availability of a well-documented system (like the Java API for example)... how bout we have a squeak API? Wouldn't that be cool?
Points to note
- You know you are a Squeak-Geek when...
- You find yourself randomly moving your mouse-pointer around because watching the little squeak-mouse roll its eyes gives you a kick.
- You know you are a Squeak-God when...
- You find yourself searching for "mouse" and "eyes" in the browser because you want to design your own mouse just like the squeak one!
- You know you are a FREAK when...
- You find yourself moving the individual components of the Squeak-mouse morph around and dissecting the mouse just for the kicks and giggles. (PS: Its Actually kinda fun :-D)
As stated earlier, inspite of all the rant about this course in general, and Squeak in particular (a lot of which you might even find in our description here), no one can deny the fact that SmallTalk is actually quite powerful. The way you can seamlessly handle Collections in squeak is rather impressive. The ease with which you can create your own Mice ... ahem, rather... Morphs, is unparalleled. Coding goes from a hard syntax in other languages into a new dimension of intuitiveness... something that programmers have always desired. Our project, the Genealogy Application, gave us a lot of insight into squeak and was well-designed, not just for students to learn a new language, but also for students to explore the possiblities of good Object Oriented Analysis and Design. Even though the 'design' parts of our milestones seemed useless when we actually worked on them, in retrospect, I cant help but admit that we didn't only learn, but actually mastered the usage of UML, CRC's and Scenarios in the design process. It enables you to think in an entirely different dimension and puts you in the practise of "thinking" about the assignment first and then beginning to actually code it - a skill that most programmers lack, but must have.
All in all, it was a good learning experience, and if you future students go into it with an open mind, you will end up agreeing with me (at least hopefully by the end of YOUR semester! ;-) )
Good luck All future squekers... and hope you found our description of our assignment helpful in grasping a little more about squeak than is revealed in the curious "?" that you see in your browsers.
Links to this Page
- Cases last edited on 30 July 2011 at 2:33 am by r59h132.res.gatech.edu
- Milestone 3 - The Design last edited on 24 April 2004 at 7:08 pm by r75h82.res.gatech.edu
- The unnamed Group last edited on 28 April 2004 at 10:33 am by lawn-199-77-206-101.lawn.gatech.edu