View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
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:

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

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

In Conclusion...

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