Luet oppimateriaalin englanninkielistä versiota. Mainitsit kuitenkin taustakyselyssä
osaavasi suomea. Siksi suosittelemme, että käytät suomenkielistä versiota, joka on
testatumpi ja hieman laajempi ja muutenkin mukava.
Suomenkielinen materiaali kyllä esittelee englanninkielisetkin termit.
Kieli vaihtuu A+:n sivujen yläreunan painikkeesta. Tai tästä: Vaihda suomeksi.
Sections on This Page
You can talk to one of the teaching assistants at the lab sessions
You can also post a question in Piazza or Telegram (see Chapter 1.1). Please do. We are
happy to help.
Two channels that are not suitable for this purpose are the end-of-chapter feedback
forms and e-mail.
In some cases, looking up the error message online helps. If it doesn’t, try the lab
sessions, Piazza, or Telegram (see Chapter 1.1).
See For the Reader.
The ebook will be available online for the foreseeable future, which means that you’ll be
able to return to it later, even after the course is officially over.
Yes, if you want to and know how to.
At entirely your own risk, yes. There’s nothing in the programming assignments that
absolutely necessitates the use of IntelliJ. However, IntelliJ is the only official
programming environment in O1, and O1 staff probably won’t be able to help you with
any complications or technical problems that may arise if you use a different toolkit.
Using IntelliJ is particularly recommended because of its A+ Courses plugin, which
makes it convenient for you to fetch and submit O1’s programming assignments, along
with some other minor improvements to IntelliJ’s user experience.
A+ Courses has been created as an open-source student project. If you experience any
problems, please let us know via O1’s feedback channels or directly at the A+ Courses
plugin’s web site.
One option is to use IntelliJ and A+ Courses through Aalto’s
virtual desktop (VDI). For more information, see the gray
box in Chapter 1.2.
Alternatively, at the bottom of
our IntelliJ page, you’ll find instructions for downloading and
submitting assignments without the plugin. This is not a
convenient option, however.
At the bottom of our IntelliJ page,
you’ll find instructions for downloading and submitting assignments
without the plugin. This is not a convenient option, however.
See the big gray-bordered box in Chapter 5.4.
No, you didn’t.
If it happens that you forget to submit the feedback form before the deadline, just submit
it later. In individual instances that’s okay, but please be more careful next time.
No, unfortunately you can’t do that (except for the feedback forms; see above).
O1 has a lot of students and we can’t personalize the deadlines. Postponing the deadline
would interfere with the way we publish the example solutions and use them as learning
materials in later weeks.
If you fail to submit some assignments, you can compensate for the missing points as per
the policy described in Chapter 1.1.
Yes. You won’t score points for any assignments submitted after the deadline, but you
will receive the automatic feedback.
Many years back, we used to have fewer deadlines that were more spread out, with more to
do per deadline (night). It didn’t work.
It is very likely that what happened is not an error in automatic grading as such but a
bug in the code that you submitted.
In the automatically assessed programming assignments, any deviation from the specified
interface counts as an error, and even a small deviation may result in a very low score.
Sometimes, even what seems like a mere formality may be significant (see the next question
Please read the feedback from the automatic grader carefully. Please re-read the task
description carefully. Check your code for spelling errors, including those that involve
upper- and lower-case letters.
Ask the assistants to help you at one of the lab sessions or
post a question in Piazza or Telegram (see Chapter 1.1).
Of course, it can happen that our grader is faulty. We’ll be happy to fix the graders if
the need arises; if it does, we’ll give you additional chances to resubmit or add points
for you manually later.
Many assignments ask you to define variables and methods that are part of a class’s public
interface. The names (and parameter lists) of those variables and methods are also part
of that interface, since any user of the class needs to know them. You cannot change the
names without affecting how the class is used. Code written to such a specification is not
“exactly right” unless it conforms to the specification, names and all.
In O1, your classes are used by the grader program. The grader cannot use them unless you
use the specified names. Don’t change the names of any public variables or methods; don’t
even add any such public members.
You are free to name the private members of the classes. You are also free to add any
private members that you deem necessary or useful.
See the previous answer.
Not all of O1’s automatic graders penalize you for adding public members on a class, but
you should still avoid doing that. In some assignments, the graders do check that you
haven’t added public members beyond those specified.
The automatic assessment isn’t perfect. We kindly ask you to report such cases so that
we can improve the graders; you can use the chapter’s feedback form, for instance.
Deliberately attempting to mislead the graders is forbidden, of course, and may result in
a loss of points.
Those small assignments, too, give you an opportunity to learn. Admittedly, they also
give you an opportunity not to learn.
We’ve tried to design the course so that most students will be motivated to make the
most of the former opportunity. In any case, such assignments don’t count for much in
the grand scheme of O1’s assessment.
Please see the corresponding section in the Finnish version of this F.A.Q..
Compared to a random programming language: yes.
Compared to the most commonly used programming languages in the world (such as Java,
The language is used by many leading companies and other parties, such as Twitter,
PayPal, The Guardian, Zalando, Reaktor, Capital One, Blizzard, Netflix, LinkedIn, Intel,
Samsung, Spotify, Airbnb, Goldman Sachs, Duolingo, various financial corporations,
computational scientists, etc. Some of them are listed on Wikipedia.
There’s no one reason that clinches it. The choice of Scala is based on a combination
of criteria. Not all of those criteria concern O1 alone but the first-year programming
courses and degree programmes at Aalto more generally.
Below is a list of some of Scala’s attributes. The point of this list is not to say
that these features are unique to Scala. Some of the individual items in the list are
better realized in some other languages. However, this combination made Scala the most
At Aalto, we’ve used Scala for introductory programming since 2013. It’s worked well.
Lund University in Sweden adopted Scala as an introductory language in 2016. You
may wish to read what they said about their reasons.
No. Scala is designed for demanding professional use.
In fact, it’s relatively rare to use Scala in an introductory programming course. One
reason is that the language hasn’t been established for very long; traditional teaching
languages aren’t easily dislodged, and there isn’t a wealth of beginner-friendly material
on Scala out there.
A second reason is that many introductory courses at different institutions have goals
that are either more modest or otherwise different than ours in O1, so other languages
may fit the bill better.
And a third reason may be that since Scala is so versatile, harnessing it for introductory
use requires particularly meticulous pedagogical design.
Yes, you may have run into a different version of Scala.
A major update to the language, Scala 3, was released a little before this year’s O1
course. For the time being, Scala 2 remains the more widespread version, and we’re also
sticking with Scala 2 in 2021’s O1. However, some web sites have already transitioned to
Code written in Scala 3 looks slightly different from Scala 2, but all the most important
principles remain the same. The standard API library that we use with Scala 2.13 is
identical for Scala 3.0. Apart from some changes in how code looks, Scala 3 brings a
number of other improvements; most of those aren’t too relevant to a beginner learning the
basics of programming, though.
Yes. See Play and Scala.js,
Yes. Here’s a Google search on that topic.
Thousands of students have given feedback that has contributed to this ebook’s design.
The ebook’s chapters, programming assignments, and weekly bulletins have been written in
Finnish and translated into English by Juha Sorva.
The appendices (glossary, Scala reference,
FAQ, etc.) are by Juha Sorva unless otherwise specified on the page.
The automatic assessment of the assignments has been developed by: (in alphabetical order)
Riku Autio, Nikolas Drosdek, Joonatan Honkamaa, Jaakko Kantojärvi, Niklas Kröger, Teemu
Lehtinen, Strasdosky Otewa, Timi Seppälä, Teemu Sirkiä, and Aleksi Vartiainen.
The illustrations at the top of each chapter, and the similar drawings elsewhere in the
ebook, are the work of Christina Lassheikki.
The animations that detail the execution Scala programs have been designed by Juha
Sorva and Teemu Sirkiä. Teemu Sirkiä and Riku Autio did the technical implementation,
relying on Teemu’s Jsvee and Kelmu toolkits.
The other diagrams and interactive presentations in the ebook are by Juha Sorva.
The O1Library software
has been developed by Aleksi Lukkarinen and Juha Sorva. Several of its key components
are built upon Aleksi’s SMCL
The pedagogy of using O1Library for simple graphical programming (such as Pic) is
inspired by the textbooks How to Design Programs by Flatt, Felleisen, Findler, and
Krishnamurthi and Picturing Programs by Stephen Bloch.
The course platform A+ was originally created at Aalto’s LeTech
research group as a student project. The open-source project
is now shepherded by the Computer Science department’s edu-tech team and hosted by the department’s IT
Markku Riekkinen is the current lead developer; dozens of Aalto students and others have also contributed.
The A+ Courses plugin,
which supports A+ and O1 in IntelliJ IDEA, is another open-source project. It was created by Nikolai
Denissov, Olli Kiljunen, Nikolas Drosdek, Styliani Tsovou, Jaakko Närhi, and
Paweł Stróżański with input from Juha Sorva, Otto Seppälä, Arto Hellas, and others.
For O1’s current teaching staff, please see Chapter 1.1.
Additional credits appear at the ends of some chapters.