Trees architecture

Here is video presenting my work for GSoC 2019 with Pharo project and a sneak peak into architecture of implemented trees.

End Line

This is my last blog post about GSoC. For the last week and a half most of my time has been spent on documentation and some small refactoring of code.

Final Report

Hello everyone. The last three months passed by really quickly and the Google Summer of Code (GSoC) 2019 is coming to an end. In this blog post (which is also a part of my final report) I will summarize the main results of my GSoC 2019 project titled New Collections for Pharo, my overall experience and what I have learned. I am really happy that I had a chance to participate in this GSoC and I can say that this was an incredible experience.

M-ary trees

M-ary tree is a tree data structure in which each node has no more than m children. I have already mentioned M-ary trees in an earlier blog post. I’ve also written about the left child right sibling representation. In this blog post I want to write about M-ary trees in greater detail.


Refactoring is an important part of each project. It allows us to fix architectural mistakes, to better organize our code. Formal definition would say something like: Refactoring represents change in an internal structure of a software, in an attempt to make it more understandable and easier for modification, but without a visible shift in his behaviour. I have been applying refactoring techniques from the beginning of the project, to avoid having huge changes in the end.

Strategy Design Pattern

I have already written about the null object and the state design patterns and their use in designing and programming abstract data structures, with an emphasis on binary trees. In this post I decided to write about the strategy design pattern as it is a great way of extended existing trees by adding different balancing strategies. The strategy pattern is very similar to the state and null object patterns, but they solve different problems.

Meet The Authors

Nina Medić

Hi, my name is Nina and I am a master student of Computer Science in Novi Sad, Serbia. As a part in one of my classes I was introduced to Pharo world. The simplicity of the language and user friendly environment invited me to explore it more. Now I am a member of Pharo community and the team that is working on improving it.

Smiljana Knežev

Hi, my name is Smiljana Knežev and I am a final year undergraduate student at the Faculty of Sciences, University of Novi Sad. I am doing my studies in Informatics - Information Technologies, and I am very interested in Objected-Oriented design and functional and distributed programming. I am very passionate about Pharo and theoretical computer science and find it very interesting.