Collaborating on scala for newbies guide?

Hi! Nice topic!

Mark makes an important point about how teaching a language to complete beginners means that the teaching of basic programming comes first and the language is mostly just a tool to that end.

I completely agree that Scala can be wonderful first language under the right circumstances. I also agree that the perception that Scala is too complex is harming adoption. I do think it’s true, though, that an introduction to programming in Scala needs to be particularly carefully designed, compared to, say, Python (not that doing a good job of it is trivial in any language).

If there is an effort to create or curate materials for beginners, I would be happy to read and comment, at least, although free time is always scarce.

And if we’re listing existing beginner-oriented materials in this thread, perhaps I can bang on my own drum. I’ve taught the basics of programming in Scala at university for close to a decade now, with intake of 1000+ students a year currently. Roughly half of the students are beginners. Most of them are our own university students, but about a quarter are external students who take the open-access offering of the course. I use my own materials, which aren’t in the form of a traditional textbook but an ebook/website (free to access by anyone). Some of its features are:

  • It’s designed with beginners in mind and influenced by research on computing education as well as detailed feedback from thousands of students.
  • Its main purpose is to support a semester-long programming course, but there are some students from Finland and elsewhere in the world using it for self-study at their own pace.
  • The material is meant to be self-contained: students don’t need external materials to do the course. It’s hundreds of thousands of words long, so corresponds to a big book. (Well, two big books, since it’s available in both Finnish and English.)
  • The chapters contain various interactive components, such as autograded assignments and stepwise visualizations of program execution. Still haven’t gotten around to Scastie integration though :slightly_frowning_face:.
  • In addition to a bunch of IntelliJ modules that the students work with, supporting software includes a plugin that lets students submit directly from the IDE and a custom library with tools for 2D graphics and animation, MIDI sound, and other things.
  • We’re not even close to being purely functional, but the functional goodies of, say, the collection framework are very much present, and themes such as mutability vs. immutability do come up many times.
  • The ebook’s in Scala 2 for now, but next year’s edition will be in Scala 3, which is something I’m currently busy with — loads of work ahead still!

(At some point in the future, it would be nice to create a version that doesn’t explicitly link to our specific course arrangements anywhere; maybe something like a still improved version of what Runestone Interactive has for Python and some other languages.)

In case anyone is interested in looking at our stuff in more detail, here are some links to different parts:

4 Likes