Dart is a Web programming language that comes with libraries and tools. It has been designed and developed by Google as an open source project, after many years of programming Web applications with JavaScript, Java, Python and other languages. Dart was [unveiled] (http://gotocon.com/aarhus-2011/) in Denmark in October of 2011.
I have first heard about Dart at the end of October in 2011. At the beginning of November, I have started learning Dart by developing a simple PingPong game. I have developed the game in a sequence of spirals, from simple ones to more advanced versions.
Learning new software concepts and technologies is a challenging task. Learning in spirals, from simple to more advanced concepts, helps beginners get a reasonable confidence level early on. With each [new spiral] (http://www.leaningpinesoftware.com/spiral.shtml), the project grows and new concepts are introduced. A new spiral is explained with respect to the previous one. This is called learning by anchoring to what we already understand. With a new spiral, we can come back to what we did previously and improve it. In this way, learning in spirals can touch the same topic several times, but each time with more details in a better version.
In December of 2011, I started a new project called Magic Boxes that was transformed into Model Concepts. Model Concepts is a graphical model designer, based on a similar tool that I had developed in Java in the context of Modelibra project. Modelibra is an open source software family of tools and frameworks to support domain-driven development in Java. I have reported about the project in an academic paper recently accepted for publication. After a few months of intense programming, Model Concepts is available to model designers and it is listed as the only application design tool in Community Dart Packages and Examples.
I am a professor at Université Laval. I develop software, teach courses and write about my [development] (https://dl.dropbox.com/u/161496/dr/dr-papers/2011/Ankara/final/ModelibraPrototyping.pdf) and teaching experiences, in that order of preference.
While developing Magic Boxes in Dart, I have started a blog that shows, in a step by step way, the process of learning and developing a rather complex software, from simple concepts pertinent to introductory courses to more advanced concepts important in advanced courses.
Based on my experience with Dart, I have prepared a new content for the introductory programming course, which I teach this Fall to students of information systems. At the same time, I have prepared a public course On Dart, to help early adopters of Dart to learn faster in a more organized way. The course material consists of slide presentations and software applications that I have been developing in Dart to support concepts presented in slides.
Although I am a professor in the Department of Information Systems at FSA Laval, I program every day at least for four hours. Programming for me is a mental activity that helps me master the content that I teach with confidence, and a way to explore new research ideas.
The latest project that I have been working on is dartling. Dartling is a domain model framework for web application prototypes. A graphical model designed in Model Concepts is transformed into JSON representation, imported to dartling and converted to a meta model. After the code generation, the model may be used without almost any additional programming for quick prototypes.
Dartling has several examples that show how different web applications may be developed quickly based on a domain model generated from the JSON representation of a graphical model. One of them is DArt Pen, which is a version of the Logo programming language for children. I use Art.Pen to teach basic control structures in programming by drawing fun ‘art’ with positional pen commands. Another example is Game.Parking, which is a strategy puzzle designed by a mathematician to teach children abstract thinking. The other three examples are models with standard modeling patterns: one-to-many, many-to-many and reflexive relationships.
Recently, I have joined the Dart Game Group that wants to learn Dart by developing games. I have developed a simple, educational memory game to have a base for discussions and further spirals.
All my Dart projects are publicly available at GitHub. GitHub is the most popular software repository. Recently, it is becoming more social.
I report about my development efforts and about various Dart projects on my Google+ page called On Dart.
I want to thank the Dart community for answering my questions, and for communicating so well in different ways. My favorite way to follow news about Dart is the Dartisans G+ page.
If there are professors that want to teach Dart, please join me to make ondart.me better. If there are Dart developers that would like to contribute to dartling, I would be happy to add you as collaborators on the dartling project at GitHub. If there are students that would like to work on educational projects related to dartling, I would hangout with you even if you are far away.
For me, it was a fun year of learning Dart, more fun when developing and less fun when writing about it. My software projects help me teach better. My teaching efforts help me explore new research avenues. My research activities help me develop better. And those are spirals as well, n’est-ce pas?