Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Most of the programming examples in my <a href="http://dcsobral.blogspot.com" rel="nofollow noreferrer">blog</a> are, effectively, coding dojo exercises. Particularly the <a href="http://dcsobral.blogspot.com/search/label/matrix" rel="nofollow noreferrer">matrices series</a>, but also the <a href="http://dcsobral.blogspot.com/search/label/puzzle" rel="nofollow noreferrer">puzzles</a> and <a href="http://dcsobral.blogspot.com/2009/10/99-beers.html" rel="nofollow noreferrer">99 beers</a>. Now, don't disregard the matrices series as being "mathematical", because the problems I concern myself in it are related to the construction of classes in Scala, not to doing fancy algorithms. In fact, I pretty much skip over the mathematical algorithms themselves.</p> <p>Now, <a href="http://aperiodic.net/phil/scala/s-99/" rel="nofollow noreferrer">99 Scala Problems</a> and pretty much everything from <a href="http://projecteuler.net/" rel="nofollow noreferrer">Project Euler</a> are nice exercises for the functional part of Scala, but I understand that not to be your emphasis. I do recommend <a href="https://stackoverflow.com/users/160378/retronym">retronym</a>'s <a href="https://stackoverflow.com/questions/2118578/any-practical-coding-dojo-kata-ideas/2118645#2118645">answer</a>. <a href="http://rosettacode.org/" rel="nofollow noreferrer">Rosetta Code</a>, not being functionally oriented, might have more general examples. There are many with <a href="http://rosettacode.org/wiki/Category:Scala" rel="nofollow noreferrer">Scala examples</a>, of course, though you may wish to consider other tasks as well, for ideas.</p> <p>There's lot of cool things to learn about Scala, but one has to be careful at beginner level. For instance, I would not speak of dependency injection (self types and the cake pattern) or of type classes (the pattern that simulates such with implicits).</p> <p>Do look as well at the material on the <a href="http://www.scala-lang.org/" rel="nofollow noreferrer">Scala Lang</a> site, particularly the <a href="http://www.scala-lang.org/sites/default/files/linuxsoft_archives/docu/files/ScalaByExample.pdf" rel="nofollow noreferrer">Scala by Example</a> document.</p> <p><strong>EDIT</strong></p> <p>I have now overseen several Scala dojos, so here's a bit of stuff I've learned from then:</p> <ul> <li><p>Problems: they have to be fun, not-quite-easy, not-that-hard, and that has to be <em>everyone's</em> opinion.</p> <p>We use the <a href="http://dojopuzzles.com/" rel="nofollow noreferrer">Dojo Puzzles</a> site, which is in Portuguese so it won't be of use for most people here. If there's a similar site in English, I'd love to hear about it.</p> <p>The way it works is you ask for a random problem, look it over and discuss to see if you'll pick it up or not, and then indicate by saying you'll use it, you'll not use it, or maybe you'll use it but you'd like to see another one. This vote gets registered and you can see how many people picked up a problem, which helps deciding whether to pick it up or not in first place.</p></li> <li><p>Scala knowledge: it turns out it's not that important to introduce key concepts of Scala language beforehand, particularly if some of the participants have basic knowledge.</p> <p>In my experience, setting up the testing environment with a trivial "pass" test and explaining how people should write the tests is often enough to get people started. If you feel someone is struggling to write something, give a quick explanation and get on with it.</p></li> <li><p>Teaching Scala: if you do set out to teach Scala, keep lessons short and follow up with a dojo. In this case, keep a set of dojo problems that are adequate to the lesson, and, depending on how many lessons you want in one day, short.</p> <p>It helps imposing artificial constraints on how one must solve a problem. Some examples of constraints I have put in practice are no classes and single-expression methods (that is, no multiple statements or <code>val</code>/<code>var</code> declarations). The point of these constraints is making it impossible for people to solve the problem in the way they are used to, which gets them to explore the language in search of alternatives.</p></li> </ul> <p>I have the final results of three dojos done at my current job <a href="https://github.com/ebc/dojo" rel="nofollow noreferrer">in this repository</a>.</p> <p>At the moment we are using the <a href="http://codingdojo.org/cgi-bin/wiki.pl?back=RandoriKata" rel="nofollow noreferrer">Randori Kata</a> format, but without fixed time or break, and with retrospective at the end of the dojo, not at the beginning of the next. This, however, is just were we are currently at -- we have experimented many variations, and we are still evolving.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload