This course has already ended.

The latest instance of the course can be found at: O1: 2024

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.


Chapter 1.1: Introduction to O1

About This Page

Questions Answered: What’s this course about? How do I go about taking the course?

Topics: The aims of the course; its components, policies, communications channels, and assessments.

What Will I Do? Mostly just read, in this first chapter.

Rough Estimate of Workload:? Half an hour or less.

Points Available: A5.

../_images/person01.png

Hello

Welcome to O1!

You are reading the first chapter of the course’s custom ebook. These chapters are located in a learning environment called A+, which we also use to receive and assess your work.

Oh, and O1 is short for Ohjelmointi 1, which is Finnish for Programming 1.

Welcome to O1!

You are reading the first chapter of the course’s custom ebook.

Our online materials are too diverse for the MyCourses platform to handle. That’s why these chapters are located in this separate learning environment, A+, which we also use to receive and assess your work.

Aalto’s bureaucracy requires you to register for courses via the thing that is Sisu, so yeah, do that too. But for O1, the important thing is that you enroll on our front page in A+.

Oh, and O1 is short for Ohjelmointi 1, which is Finnish for Programming 1.

Learning Objectives

In broad terms, we expect that after finishing O1, you:

  • have reached the conclusion that programming is a pretty neat thing to do; and

  • have at least some ability to program.

To understand these goals a bit better, let’s detour to the actual subject matter before getting back to the course arrangements.

To program is to create computer programs. But what is a program? And what counts as a computer?

Programs and Computers

../_images/devices.png

A variety of computer systems

Computer systems are often classified into:

  1. general-purpose computers (yleiskäyttöinen tietokone) that can be used for a broad range of tasks (e.g., desktop and laptop computers); and

  2. embedded systems (sulautettu järjestelmä): devices that have only one or a few purposes and that contain a built-in computer. Examples include various modern vehicles, ATMs, washing machines, printers, robots, and many toys.

Both kinds of systems rely on computers that execute programs (ohjelma). Programs direct the system to do what the program’s creator wants it to do. In O1, we’ll program only general-purpose computers, but the same fundamental principles apply to embedded systems just as well.

What about cell phones?

Are mobile phones general-purpose computers or embedded systems? Why? After thinking about it for a bit, you may want to search the internet to see what others have said.

(These gray-bordered boxes contain supplementary materials that you are free to skip without putting your course performance at risk. For instance, the above is a completely voluntary activity that won’t score you any course credit but that might help you learn something.)

A variety of programs

../_images/end_user.png

An end user and application programs.

The type of program that you’re probably the most familiar with is the application (sovellus). An application program helps its user carry out a particular activity. Word processors, computer games, and web browsers are examples of applications.

Other types of programs include:

  • software libraries (ohjelmakirjasto): collections of general-purpose “program parts” that programmer can build various programs from;

  • drivers (ajuri) that control specific auxiliary devices; and

  • operating systems (käyttöjärjestelmä), such as Windows, Linux, or macOS, which govern the use of hardware and enable end users to launch applications.

In O1, we’re going to focus on applications: the programming assignments that you’ll work on include an adventure game, an experience diary, and a program that simulates how people move house and form neighborhoods, among many others. To help us build these applications, we’ll use software libraries. We won’t be discussing drivers or operating systems as such, but again, the general concepts that you’ll learn apply to them as well.

We’ll get back to programs and programming soon, in Chapter 1.2. Now let’s continue with the course overview.

Learning Objectives, Revisited

In O1, you’ll learn to write and modify application programs of a modest size, such as games or everyday utilities. We also hope that you’ll notice that programming can be both fun and useful.

As you can tell by its name, this first course alone won’t turn anyone into a master programmer, even though you’ll learn various concrete skills. O1 has been designed to be the first module in an introductory programming curriculum.

Prerequisites

We don’t expect you to have any prior knowledge of programming.

You do need to know how to use a computer and Aalto’s IT services: how to operate a web browser; a rudimentary understanding of files and folders/directories; etc.

You do need to have basic skills in using a computer. For instance, we expect you to know how to browse the web, read email, and more or less know your way around the file system of whichever computer you use, whether you’re running macOS, Windows, Linux, or something else.

Grade-school mathematics will help you here and there, but this is a minor requirement. You won’t need substantial math skills to do well.

You need a solid command of English or Finnish. If you know Finnish, we recommend the Finnish edition of this ebook. This English edition is phrased to assume that you don’t know Finnish.

Speaking of languages, you probably already noticed the strange words in parentheses after each term definition. Those are the Finnish equivalents of the English terms. They are there for the benefit of students who use the English-language edition but wish to learn the Finnish terminology as well.

O1’s Components

O1 has three components, the first two of which are linked:

  1. The assignments are O1’s most important part by some distance. You’ll receive a grade between 0 and 5 for your work on the assignments; this will also be your grade for the entire course. To pass O1, you need to pass the assignments; that is, you need a grade of 1 or higher.

  2. We collect per-chapter feedback for each of the chapters in this ebook: an estimate of the time you spent on the chapter and any questions or comments you have. This is an obligatory activity!

  3. At the end of O1, we expect you to fill in a course-feedback questionnaire that evaluates the course as a whole. It will be published as Chapter 13.1 of this ebook. This is also obligatory.

See below for more information about the assignments and per-chapter feedback. We’ll remind you about the end-of-course questionnaire later when the time comes.

We don’t do an exam.

Course Materials and Assignments

The chapters of this ebook cover all the course topics, so you won’t need a separate textbook, but we do have a few suggestions for further reading on the Resources page, if you want to take a look.

The assignments have been worked into the ebook. You’ll run into them as you study each chapter.

The ebook contents and assignments have been divided into weeks and categories as described below.

Weekly deadlines

Each assignment is in a chapter, and each of those chapters is part of a week. Weeks run from 1 to 12; there’s also Week 13, but that just contains the end-of-course questionnaire and no assignments.

Each week has a strict deadline for submitting the assignments; late submissions won’t count towards your course grade.

The deadline for Week 1 is Wednesday September 13th, 2023, at 18:00 (Finnish time: EET, GMT+2), the deadline for Week 2 is exactly one week later, and so forth. (There’s one exception: there is no deadline on November 22nd, 2023, as we’ll give you two actual weeks to work on a larger project during Week 11.)

You’re free to tackle any of the assignments in Weeks 1 through 12 as soon as the course kicks off. The questionnaire in Week 13 will be published after the Week 12 deadline in December.

The first deadline

The first deadline is already on September 13th, 2023. Please note that Week 1’s assignments, like those of the other weeks, will take time. Especially if, like most students in O1, you have little or no prior programming experience, we recommend that you reserve at least a dozen hours for the assignments.

Time estimates for chapters

O1’s chapters don’t have the same length. The programming assignments in some chapters take a lot more time than the assignments in some other chapters.

At the beginning of each chapter, you’ll find a rough estimate of how much time the chapter might take. Even though those estimates are based on data collected from (beginner) programmers, they are just estimates. Still, they should give you an idea of which chapters in Week are the longest, which can help you plan your personal schedule.

As for Week 1, which consists of eight chapters, please note that the two last ones — 1.7 and 1.8 — have bigger workloads than the first six do.

Notice the exam week

The sixth-week deadline is in the middle of the fall semester, during the so-called exam week. If you have many examinations (for other courses) during that time, please plan your schedule extra-carefully beforehand. O1’s schedule is flexible in that you can work on any of the Weeks in advance. Week 6 has a slightly lower workload than O1’s other weeks, but there’s plenty to do there, too.

Having a deadline fall on the exam week is not perfect, but it is probably a better solution than if we split the same workload over fewer weeks. A major factor behind this decision is that O1’s primary target group (first-year students from the School of Science) do not have a glut of exams at that point.

Points in three categories

Each chapter in this ebook has a points value, indicated at the beginning of the chapter by the letter A, B, or C, which is followed by a number. “B50”, for instance.

The letter indicates the category of the assignments in the chapter:

  • Category A assignments have been designed to teach and assess the skills that constitute O1’s minimum requirements. These assignments are mandatory for anyone who wants to pass.

  • Category B assignments are voluntary but they are highly recommended, especially if you intend to take O1’s follow-on courses at Aalto.

  • Category C assignments are voluntary but useful. They are intended for those who wish to make the most of this opportunity to learn. Many of them are also quite fun.

The number that follows the category letter is the maximum number of points you can score in that chapter. For instance, at the beginning of this introductory chapter it says “A5” because you can score five points in Category A by reading the chapter and doing the tiny assignment that appears further down on this page.

A high points value usually indicates that an assignment is more work than others in the same category. An assignment’s topic also affects the category that we’ve put it in.

Besides the main assignments that give you actual points, the ebook contains additional practice tasks and challenge problems, which are entirely voluntary. You’ll find those in gray-bordered further-reading boxes in some upcoming chapters. Please note that although the extra tasks have a nominal value of one point each, those points don’t count towards your grade; only the A/B/C points do.

Below is a diagram of how the assignments are distributed across weeks. As the diagram shows, you can score points in Category A during the first few weeks whereas Category C mostly features during the second half of the course. One practical consequence of this is that you can do all the mandatory assignments during the early months of the fall semester.

../_images/o1_structure-en.png

Submitting solutions for automatic assessment

With the exception of a few assignments, A+ assesses your submissions automatically and gives you immediate feedback on them. Many of the assignments are programming tasks; A+ gives you a number of points that reflects how well your program’s behavior matches what was requested.

A+ does a fairly thorough job of checking your answers, which means that you too will need to be meticulous. On the upside — was that a downside? — A+ is ready to serve day and night and is quick and even-handed.

There is a limit to how many times you can submit a solution for each of the assignments. Depending on the assignment, the limit is between three and ten tries. The highest-scoring submission you send before the deadline counts towards your course grade.

A couple of hours after each deadline, we’ll publish example solutions to the previous Week’s assignments. Since many of the assignments don’t have a unique correct answer, comparing your solution to the example solution is often a good way to learn even if you successfully solved the assignment.

This Is Not a Joke

Prepare to work. Soon.

Most of the points that you’ll need to collect come from practical assignments that require you to write computer programs. These assignments will take time. If you leave them for deadline night, you’re likely to find yourself struggling to keep up. Take a look at upcoming chapters in advance, reserve time for working on the assignments, and start well in advance of each deadline.

Per-chapter feedback and getting your points confirmed

There is a small feedback form at the end of this chapter and at the end of each of the other chapters as well. Submitting these forms is a mandatory component of O1: the points you score in each chapter aren’t official before you’ve submitted the end-of-chapter feedback form!

It works like this:

  1. You read the chapter and do the assignments within. A+ assesses your solutions and lets you know how many points you’re about to score.

  2. You fill in the chapter feedback. At a minimum, you’ll be asked to estimate how long you spent working on the chapter. Do this, too, before the weekly deadline!

The “Your Points” page in A+ is sensitive to the feedback forms. If you’ve forgotten to submit a form, a look at the page will tell you.

Your questions and feedback make a difference!

We hope that you’ll write feedback at the end of most chapters. It doesn’t have to be an opinion; instead, you can ask a question that occurred to you or reflect on your learning, for instance.

We won’t dispatch your questions and comments straight to Bit Heaven. On the contrary, we read them all and use them already during this course offering and to help us design future offerings.

The teacher will pick common and otherwise interesting questions (anonymously) into weekly bulletins. We’ll publish these bulletins as part of these course materials already during this same fall semester.

From assignment points to a course grade

Your course grade — between 0 (failed) and 5 (excellent) — depends on how many points you collected from the assignments:

  • Doing almost all the assignments in Category A is enough to pass with a grade of 1.

  • For a grade of 2 or 3, you’ll additionally need to work on the assignments in Category B.

  • Add some assignments from Category C, and you reach 4 or 5.

The details are in this table:

Grade

Category A

Category B

Category C

Notes

1

2000

Minimum learning objectives reached.

2

2100

450

3

2100

800

Roughly matches the skill level you need for O1's follow-on courses.

4

2100

800

450

5

2100

800

625

You don’t need more points than this for a 5.

total available

2205

900

725

So you don’t quite need to collect every last point from every assignment.

For instance, for a grade of 4, you’ll need:

  • at least 2100 points from assignments in Category A; and

  • at least 800 points from assignments in Category B; and

  • at least 450 points from assignments in Category C.

(In addition, you’ll need to fill in the feedback forms in the chapters where you did assignments as well as the end-of-course questionnaire in December.)

Yes, it’s a bit complicated, but luckily there’s the Your Points page where you can find an up-to-date report of what you’ve done and how many points you have.

If you’re short of points in Category A, you can use points from Category B or C to cover for that. Any points you need in Category B can be replaced by points from Category C, one-for-one. The Your Points page takes care of such things automatically.

Examination (only for students based in Finland but not at Aalto University)

To receive an official certificate for passing O1, you need to take an examination at the end of the course. You can do this either by physically coming to the Aalto campus or at another Finnish educational institution. If you take the exam at another institution, you’ll need to refer us to a contact person (e.g., teacher, professor) from that institution, who can receive the exam papers, supervise the exam, and send your solutions back to Aalto. Further information about this arrangement will be sent later during the fall.

If you just wish to learn to program and don’t have a need for an official certificate, there’s no need to take the examination.

Working in Pairs

You can do the programming assignments either alone or paired with another student.

Feel free to tackle the assignments alone, if you wish. However, working together forces you to articulate your thoughts — even to yourself! — and teaches you to talk about programming. Two pairs of eyes are better than one at spotting errors. Social pressure helps you avoid procrastinating.

We recommend that you work with a pair. Working together forces you to articulate your thoughts even to yourself and teaches you to communicate about programming. Two pairs of eyes are better than one at spotting errors. Social pressure helps you avoid procrastinating.

Here’s an O1 student from an earlier year:

Working with a pair made it way easier to finish the course. My pair and I ended up debating a bunch of things together, and we had to come up with the arguments to explain why a piece of code would work.

(This ebook contains quotations from students. Many of them, like the one above, have been somewhat loosely translated from Finnish.)

When we say we recommend pairwork, we mean studying the chapters and doing the assignments together. It is forbidden to split the workload with another student so that you independently work on different tasks.

Whenever you submit a solution, you’ll choose whether you’re submitting alone or with a pair. You can change pairs during the course but not during a single assignment: once you’ve submitted a solution to a particular assignment, any retries will also need to be submitted by the same pair or individual.

The end-of-chapter feedback forms are meant for each individual to answer separately. The same goes for the end-of-course questionnaire.

It’s a good idea to find another student to pair up with as soon as O1 starts. You can use our online discussion forums for this; you’ll find out more about them soon on this page. In most cases, it’s best to pair up with a student whose prior programming knowledge roughly matches your own.

Reflect on the chapters together. Talk. Find a way of writing programs together that works for you; you can take turns sitting at the keyboard, for instance. Each member of the pair must be fully familiar with all the solutions that the two of you produced.

Certainly, many students have passed O1 working alone, so pairing up is not a necessary condition for success.

You may also study and exchange ideas in larger groups, as long as each pair or individual student produces their own solutions. Quoth one of your forebears:

Ohhh, that feeling of community when everyone’s sat at the table for 6 hours working on the same assignment. Groups are so the best way to learn!

If the idea of a six-hour assignment scared you, take solace: there won’t be any of those until later. We’ll start small. Nevertheless, there’s power in collaboration.

This Ought To Be Self-Evident

Plagiarizing solutions from other students or otherwise isn’t allowed. It is likewise forbidden to attempt to score points by deceiving the automatic assessment system.

Academic misconduct has consequences as per Aalto’s policies for academic integrity. We do vet student programs for plagiarism.

Support: Lab Sessions, Discussion Forums, Etc.

As a student in O1, you’ll need to take charge of your own studies and reserve time for tackling each chapter as you progress through the ebook. However, we are happy to support you:

Lab sessions

The teaching assistants host lab sessions, most of which are on the Aalto campus in Espoo. There are sessions every weekday throughout the semester. The locations and a more detailed schedule are available on a separate page. These lab sessions are open to Aalto students only, but external students are free to use our other channels (see below).

The teaching assistants host lab sessions every weekday throughout the semester.

The first lab sessions are on September 7th, 2023. After that, there are dozens of lab hours every week. Most of them are on the Aalto campus in Espoo, but there are some online sessions, too. There’s a a separate page with the locations and a more detailed schedule.

You don’t have to sign up for the lab sessions: you can just join freely to any of them. The labs don’t have a preset agenda that each student follows at a set pace. Instead, you work on the chapters at your own pace and ask the teaching assistants for help if you fail to make progress or want to discuss something.

Questions and answers: Piazza

Piazza is a web site for discussing courses. You can ask questions on Piazza and have them answered by the O1 staff or other students. Under normal circumstances, you can expect to receive an answer within a day’s time; often you'll receive one much sooner. You may also use Piazza to start other conversations.

Please go ahead and ask questions in English. Even if many students ask theirs in Finnish, don’t worry about that.

../_images/piazza.png

A form for writing a new question in Piazza.

Assuming you want to use Piazza, you’ll need to create a user account there. (Negotiations have been taking place between Aalto and Piazza, which we hope will eventually enable students to log into Piazza directly from A+ using their Aalto credentials, but that’s not possible yet. Please note that Piazza is a U.S. service which currently stores data on computers that are not located within the European Union and which does not fully comply with the European GDPR policy. If this makes you uneasy about using Piazza, no problem: you can take O1 nevertheless — just use our other services — but we do recommend Piazza, as it is useful and has served O1 students well for years.)

Assuming you want to use Piazza, you’ll need to create a user account there. (Negotiations have been taking place between Aalto University and Piazza, which we hope will eventually enable students to log into Piazza directly from A+, but that’s not possible yet. Please note that Piazza is a U.S. service which currently stores data on computers that are not located within the European Union and which does not fully comply with the European GDPR policy. If this makes you uneasy about using Piazza, no problem: you can take O1 nevertheless — just use our other services — but we do recommend Piazza, as it is useful and has served O1 students well for years.)

Sign up now so it’s done? You can do it here:

https://piazza.com/o1mooc_at_aalto/fall2023/da2.

(The “school” is called O1+MOOC at Aalto. When Piazza prompts you for a “class”, select O1 Ohjelmointi 1 / Programming 1.)

Once you’ve signed up, you can use the link in A+’s left-hand menu to access O1’s Piazza forum. This link also works: https://piazza.com/class/ljmvrden6c11uq/

To score your first assignment points, please answer the question below.

Among the three options listed below, pick the one that best describes you. Please note that A+ gives you some feedback after you answer, and you’ll also get feedback for other sorts of assignments later.

Check your Piazza settings!

It’s a good idea to click the cogwheel in Piazza’s upper right-hand corner and check your site preferences. You can skip this bit, but then Piazza will default to sending you frequent email notifications of new messages on the course forum. You can adjust this behavior in the settings.

Another channel for discussions: Telegram

We also have a group chat on Telegram under the name Aalto-O1. Some of O1’s students and staff hang out there, and it’s possible to get quick answers to questions (sometimes; no guarantees).

You can use the Telegram app or access Telegram straight from your browser.

You can access O1’s chat through this link:

Lectures

There are two lectures, which are meant primarily for the local students at Aalto. Attending the lectures is in no way necessary to do well in O1. The online materials, which you’re reading now, cover all the course topics. For more information about the lectures, please see a separate page.

O1 is emphatically not a lecture course, but there are two lectures as a bonus:

  • The lecture on Monday, September 4th, 2023, is an introduction to O1 and the tools we’ll use for programming.

  • On December 8th, 2023, O1 finishes with an end-of-course event, where we’ll marvel at the nifty programs you students have created and showcase some follow-on courses, among other things.

The details are on the lectures page. Mark the dates in your calendar!

Course Staff

Teacher Juha Sorva

../_images/juha_sorva.jpg

Juha

Juha is in charge of O1’s pedagogical design, the contents of this ebook, student feedback and suggestions, the weekly bulletins, and general organization.

Email: juha.sorva@aalto.fi

Head assistants Antti Immonen, Kaisa Ek, Ilona Ma, and Mikael Lenander

../_images/antti_kaisa_ilona_mikael.jpg

Antti, Kaisa, Ilona, Mikael

The head assistants (or head TAs) coordinate the work of the other teaching assistants, develop the automatic assessment of O1’s programming assignments, maintain this course offering here in A+, and teach alongside the other assistants.

Email: o1-head-assistants-sci@list.aalto.fi

Teaching assistants

Our many teaching assistants (TAs) will help you at the lab sessions. They are: Mohammed Anwer, Nhut Cao, Kaisa Ek, Esa Elo, Kirill Enckell, Joose Eronen, Hannes Fant, Hilkka Gröhn, GuTing Huang, Antti Immonen, Kaarlo Kauriinvaha, Severi Koivumaa, Onni Komulainen, Nuutti Kuosa, Eemil Lähteenmäki, Kalle Laitinen, Elmeri Lankinen, Mikael Lenander, Ilona Ma, Onni Miettinen, Jaakko Nakaza, Hiep Nguyen, Tuomas Nummela, Karoliina Oksanen, Kautilya Patel, Kerttu Peura, Lilli Peura, Anton Podlozny, Viola Rautaheimo, Roosa Ripatti, Elja Saksman, Filippa Sandberg, Janne Seppälä, Joel Toppinen, Olli Ullgren, and Inka Viita.

The assistants also take care of certain other duties such as manually assessing your solutions to some programming assignments.

About thirty teaching assistants help students at the lab sessions. The assistants also take care of certain other duties such as manually assessing your solutions to some programming assignments.

O1 as a MOOC

../_images/otto_seppala.jpg

Otto

An open-access offering of O1, a so-called MOOC, runs at the same time as the offering for Aalto students. It’s organized by University Lecturer Otto Seppälä (otto.seppala@aalto.fi) and Senior University Lecturer Juha Sorva (juha.sorva@aalto.fi).

An open-access offering of O1, a so-called MOOC, runs at the same time as the offering for Aalto students.

The MOOC is organized by University Lecturer Otto Seppälä (otto.seppala@aalto.fi) and Senior University Lecturer Juha Sorva (juha.sorva@aalto.fi). Otto is in charge of arrangements that concern MOOC students specifically. If you have questions about certificates or the examination, for instance, Otto is the person to contact.

Once more: welcome!

We in the O1 staff are prepared to work hard to make the course a successful experience. We hope that you too are prepared to work hard and make the most of this demanding but rewarding opportunity to learn!

Summary of Key Points

  • This course, known as O1, has three mandatory components: assignments, per-chapter feedback, and an end-of-course feedback questionnaire.

  • O1 revolves around the text of this ebook and the assignments embedded herein.

    • Your course grade is directly determined by your work on the assignments, but you’ll also need to submit the required feedback forms. The first form is right there below this summary.

    • The goal is to help you develop your programming skills. Most of the grade comes from practical programming tasks.

  • We provide lab sessions, discussion forums, and weekly bulletins to support you as you tackle the assignments.

  • It is forbidden to use “artificial intelligence” to solve O1’s assignments.

  • The first deadline is soon!

  • We recommend that you pair up with another student and work on the assignments together.

  • This ebook serves an introductory programming course at Aalto, O1, which is also available as an open-access MOOC.

  • This course, known as O1, has three mandatory components: assignments, per-chapter feedback, and an end-of-course feedback questionnaire. MOOC students who wish to receive an official certificate must also take an exam.

  • O1 revolves around the text of this ebook and the assignments embedded herein.

    • Your course grade is directly determined by your work on the assignments, but you’ll also need to submit the required feedback forms. The first form is right there below this summary.

    • The goal is to help you develop your programming skills. Most of the assignment points come from practical programming tasks.

  • We provide discussion forums and weekly bulletins to support you as you tackle the assignments. Lab sessions are also available for Aalto students.

  • It is forbidden to use “artificial intelligence” to solve O1’s assignments.

  • It won’t take long to hit the first deadline!

Feedback

Please note that this section must be completed individually. Even if you worked on this chapter with a pair, each of you should submit the form separately.

Credits

Thousands of students have given feedback and so contributed to this ebook’s design. Thank you!

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, Kaisa Ek, Joonatan Honkamaa, Antti Immonen, Jaakko Kantojärvi, Niklas Kröger, Kalle Laitinen, Teemu Lehtinen, Mikael Lenander, Ilona Ma, Jaakko Nakaza, Strasdosky Otewa, Timi Seppälä, Teemu Sirkiä, Anna Valldeoriola Cardó, 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.

Additional credits appear at the ends of some other chapters.

a drop of ink
Posting submission...