Björn Regnell is a professor in Software Engineering at LTH, Lund University in Sweden. He is currently teaching introductory programming using Scala for the Computer Science and Engineering MSc program students. He has been an expert advisor for the Swedish National Agency for Education when introducing programming in schools in Sweden, and has contributed to Kojo, an open source beginner-friendly Scala IDE, and introduced Kojo in experiments for school kids visiting the Science Center at LTH.
In advance of his talk “Scala First: Lessons from 3 student generations” at Scala Days Lausanne, we spoke to Björn about four key benefits of Scala and why he chose to teach Scala at Lund University, why recruiting is the biggest challenge and why creating more teaching material on Scala is the solution to the problem.
Please tell us more about your role at Lund University.
I am a professor of software engineering, and my research focus is software requirements engineering. Since 2016 I have been engaged in teaching programming using Scala as a first language to computer science and engineering students.
Why did you choose Scala and what problems does it solve for you?
Here are some example challenges where Scala as a first language have helped me as a university teacher:
- Gaining conceptual understanding fast. A general problem in teaching programming in higher education is to help as many students as possible to develop abstraction skills and generalized conceptual knowledge fast enough for the pace of a university-level course. With a pragmatic, multi-paradigm language different concepts and programming approaches can be contrasted within the same language, thereby better helping students to gain conceptual understanding. Scala’s multi-paradigm options help me as a teacher to cover more ground in more depth within the same time frame compared to other languages that I have used. And a guided “dialog of values and types” using the Scala REPL gives feedback on students’ iterated experimentation, helping them to rapidly advance their conceptual understanding.
- Can’t see the forest for the trees. Beginners stumble on irregular syntax and semantics and tricky details make students confused. Clean syntax and regular semantics help students to focus on conceptual understanding, avoiding hurdles of boilerplate while leaving tricky details for later. As a teacher, I want to stay focused on my explanations on the core ideas of abstraction, such as functions, objects, and classes, and I find that Scala helps me with that.
- Managing diverse pre-knowledge. When meeting students with very diverse pre-knowledge ranging from complete beginners to students with significant coding experience, the expressiveness of Scala enables a teacher to challenge both beginners and experienced coders at each individual’s current level. Students with prior coding experience typically have used another language such as C#, Python or Java, allowing Scala to be a fresh language for novices and more experienced learners alike.
- Doing interesting things with simple-to-use tools. The powerful collections provided by the Scala standard library allows students to create interesting programs while having limited knowledge of the internals of advanced data structures. When you have learned how to use a sequence such as Vector you can then reuse and extend your knowledge while learning how to use a key-value Map. The concepts of mutation in-place and immutable data structures can be contrasted and students get a deeper knowledge as they learn how to reason about the pros and cons of using different types of collections.
What is the most important challenge Scala developers are facing today?
One of the toughest challenges for many software organizations is recruiting. We all need more colleagues! Making it even easier for beginner programmers to start coding and discovering the fantastic intellectual journey of Scala programming is one of our community’s most important quests. We should focus more on helping students to start coding and help programming teachers to start teaching with cool, simple-to-use tools.
What is one thing that could address this challenge?
More people can become developers if we make it easier for complete beginners to start learning how to program. We need more teaching material for Scala with a novice programmer focus and more university teachers choosing Scala first. Empirical studies on the effectiveness and efficiency of Scala first can help us develop our teaching approaches.
Who should attend your talk at Scala Days and why?
My talk is for everyone interested in helping beginners to learn Scala.
Whom would you like to connect with at the conference?
I am very excited to meet anyone interested in bringing beginners to the community, such as university teachers, professional trainers and recruiting managers. I’m also very interested in discussing how Scala 3 can improve the novice user experience. We also need to discuss how to encourage underrepresented groups to discover the joy of Scala coding.