This course has already ended.

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. Myös suomenkielisessä materiaalissa käytetään ohjelmien koodissa englanninkielisiä nimiä kurssin alkupään johdantoesimerkkejä lukuunottamatta.

Voit vaihtaa kieltä A+:n valikon yläreunassa olevasta 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.



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 for receiving and assessing your submissions to assignments.

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 Aalto’s 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.

You don’t have to (and cannot) sign up for O1 in Oodi. It’s enough to 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 we get 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


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 an 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 still help you learn something.)

A variety of programs


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.


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, since it has a teensy bit more optional material and flavor than this English-language edition. But don’t worry: the English ebook is comprehensive, too. 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. Or lectures.

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 16th, 2020, at 12 noon (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 18th, 2020, as we’ll give you two actual weeks to work on a larger project during Week 10.)

The first deadline

The first deadline is already on September 16th, 2020. 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.

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.

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

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.

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 typically indicates that an assignment is more work than others in the same category. Each assignment’s topic also affects which category we’ve put it in.

Besides assignments with a points value, the ebook contains additional practice tasks and challenge problems, which are entirely voluntary and don’t directly impact on your grade.

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.


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 you’ll need to be meticulous, too. 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.

At 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!

Your “Exercise Results” 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.

We’ll pick out common and otherwise interesting questions (anonymously) into weekly bulletins, which we’ll publish as part of these course materials already during this 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 1900 Minimum learning objectives reached.
2 2100 400  
3 2100 750 Roughly matches the skill level you need for O1's follow-on courses.
4 2100 750 500  
5 2100 750 750 You don’t need more points than this for a 5.
total available 2200 850 860 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 worth of assignments in Category A; and
  • at least 750 points worth of assignments in Category B; and
  • at least 500 points worth of assignments in Category C.

(In addition, you’ll need to fill in the feeback 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 status 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. Your status 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 indicate to us 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 published 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 in the fact that 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

Plagiarising solutions from other students or elsewhere 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 every weekday throughout the semester. The Fall 2020 labs will be implemented online using Zoom. A more detailed schedule is available on a separate page. Due to these exceptional circumstances, the labs are open only to students with an Aalto user account.

The teaching assistants host lab sessions every weekday throughout the semester after the course officially starts. Due to the pandemic, the Fall 2020 labs will be implemented online using Zoom. A more detailed schedule is on a separate page.

You don’t have to sign up for the labs: you can join freely to any of them. Use the labs to ask the teaching assistants for help if you fail to make progress or want to discuss something.

Discussions and announcements: 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 can also use Piazza to start other conversations.

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

The course staff uses Piazza to publish announcements. The announcements will also appear here in A+.


A form for writing a new question in Piazza.

The left-hand menu in A+ contains a link to Piazza. You can also use this link right here:

To get you started with Piazza, let’s do a small exercise.

A+ presents the exercise submission form here.

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.

An alternative channel for discussions: Telegram

Piazza is O1’s official discussion forum and the primary place you can go to ask questions about the programming assignments. As an alternative, we also have a chat on Telegram. It doesn’t have an official staff presence, but some of O1’s students and staff hang out there, and it’s possible to get quick answers to questions (no guarantees, though).

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

You can access O1’s chat through this link:

Course Staff

Teacher Juha Sorva



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


Head assistants Nikolas Drosdek, Niklas Kröger, and Joonatan Honkamaa


Nikolas, Niklas, Joonatan(?)

The head assistants 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 participate in teaching in the labs.


Teaching assistants

More than twenty teaching assistants will help you at the lab sessions. They are: Sanna Alander, Veera Alt, Nikolas Drosdek, Kirill Enckell, Markus Enroth, Matthew Higgins, Joonatan Honkamaa, Tuukka Jaakkola, Mira Keränen, Otso Koiso-Kanttila, Niklas Kröger, Joel Lahenius, Kaarlo Liukkonen, Cedric Neergaard, Vinh Nguyen, Anna Nikander, Konsta Olkkonen, Balázs Nagyváradi, Into Pääkkönen, Ville Pihlava, Linnea Risku, Pyry Ruotsalainen, Mathilda Smith, Kristiina Suojanen, Sonja Tervola, and Sergey Zakuraev.

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

More than twenty 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



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ä ( and Senior University Lecturer Juha Sorva (

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 Teacher Otto Seppälä ( and Senior University Lecturer Juha Sorva ( Otto is in charge of arrangements that specifically concern MOOC students. 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.
  • 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 won’t take long to hit the first deadline!


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.


Thousands of students have given feedback that has 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, 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.

Additional credits appear at the ends of some other chapters.

a drop of ink
Posting submission...