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

../_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 rich and varied 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, what really matters is that you enroll via 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 hope that after finishing O1, you:

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

  • have developed at least some programming ability.

To understand these goals a bit better, let’s take a short detour into 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

Types of computer systems

There are two main types of computer systems:

  1. General-purpose computers (yleiskäyttöinen tietokone) such as desktops and laptops. These computers can be used for a broad range of tasks.

  2. Embedded systems (sulautettu järjestelmä). These are devices with a built-in computer that serve only one or a few purposes. Examples include cars, ATMs, washing machines, printers, robots, and digital toys.

Both kinds of systems rely on computers that execute programs (ohjelma). A program directs 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 also apply to embedded systems.

What about cell phones?

Are mobile phones general-purpose computers or embedded systems? Why? Once you’ve thought about it, you may want to search online to see what others have said.

(These gray-bordered boxes contain optional materials that you’re free to skip without affecting your course performance. For instance, the activity above won’t earn you any course credit, but it might help you learn something.)

Types of programs

../_images/end_user.png

An end user and application programs.

The type of program you’re probably most familiar with is the application (sovellus). An application program helps the user perform specific tasks. 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 a programmer can use to build various programs;

  • drivers (ajuri) that control specific auxiliary devices such as printers or graphics cards;

  • operating systems (käyttöjärjestelmä), such as Windows, Linux,or macOS, which manage the computer’s hardware and enable 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 shortly, in Chapter 1.2. For 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 and everyday utilities. We also hope that you’ll discover that programming can be both fun and useful.

As its name suggests, this first course alone won’t turn anyone into a master programmer, even though you’ll learn many practical skills. O1 has been designed as the first step in an introductory programming curriculum.

Prerequisites

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

You will need to know how to use a computer and Aalto’s IT services — things like using a web browser and having a basic understanding of files and folders (also known as directories).

You will 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’ll also need a solid command of English or Finnish. If you know Finnish, we recommend the Finnish edition of this ebook. This English edition assumes no knowledge of 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 included for the benefit of students who use the English edition but want to learn the Finnish terminology as well.

O1’s Components

O1 has three components:

  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, earn a grade of 1 or higher.

  2. We collect per-chapter feedback as you work through this ebook: an estimate of the time you spent on the chapter and any questions or comments you have. This is a mandatory 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 appear as Chapter 13.1 in this ebook and is also mandatory.

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 there’s no need for a separate textbook. That said, you’ll find a few additional readings on the Resources page if you’re interested.

The assignments have been integrated into this 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 chapter is part of a week. Weeks run from 1 to 12. There’s also Week 13, but it contains only the end-of-course questionnaire — no assignments.

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

The deadline for Week 1 is Wednesday, September 10th, 2025, 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 19th, 2025, 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 on September 10th, 2025 — it comes up quickly!

Please note that Week 1’s assignments — like those in other weeks — require a significant time investment. Especially if you, like most students in O1, 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 vary in length. The programming assignments in some chapters take a lot more time than those in 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 still just that — estimates. Still, they should give you an idea of which chapters in each Week take the most time, so you can plan your schedule accordingly.

In Week 1, which consists of eight chapters, please note that the last two — 1.7 and 1.8 — have heavier workloads than the first six.

Notice the exam week

The Week 6 deadline is in the middle of the fall semester, during what’s known as exam week. If you have many exams (for other courses) at that time, please plan your schedule extra-carefully.

O1’s schedule is flexible: 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 during exam week isn’t ideal, but it’s likely better than squeezing the same workload into fewer weeks. A major factor behind this decision is that O1’s main 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 point value, indicated at the beginning 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 core skills required to pass O1. These assignments are mandatory for passing the course.

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

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

The number that follows the category letter shows how many points you can earn 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 higher point value usually means that the assignment takes more work than others in the same category. The topic of an assignment 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 boxes in some upcoming chapters. Please note that although each extra task is nominally worth one point, those points don’t count towards your grade — only the A/B/C points do.

Below is a diagram showing how assignments are distributed across weeks. As it shows, Category A points are concentrated in the first few weeks, whereas Category C points appear mostly in the second half of the course. A 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. Many of the assignments are programming tasks; A+ awards you points based on how well your program’s behavior matches what was requested.

A+ does a thorough job of checking your answers, so you too will need to be meticulous. On the upside — was that a downside? — A+ is ready to serve day and night, quick to respond, and scrupulously fair.

Each assignment has a limit on how many times you can submit a solution. Depending on the assignment, the limit ranges from three to ten tries. The highest-scoring submission before the deadline counts towards your course grade.

A couple of hours after each deadline, we’ll publish example solutions for the previous Week’s assignments. Many assignments don’t have a unique correct answer, and comparing your solution to the example can be a great way to learn — even if you successfully solved the assignment.

This Is Not a Joke

Prepare to work. Soon.

Most of the points you’ll need 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 scrambling to keep up. Take a look at upcoming chapters in advance, set aside time for the assignments, and start well before each deadline.

Per-chapter feedback and confirming your points

Each chapter ends with a short feedback form, including this one. Submitting these forms is a required part of O1: your points for a chapter won’t count before you’ve submitted its feedback form!

It works like this:

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

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

The “Your Points” page in A+ takes the feedback forms into account. If you’ve forgotten to submit a form, the page will tell you.

Your questions and feedback make a difference!

We hope that you’ll provide written feedback at the end of most chapters. It doesn’t have to be an opinion. You can also ask a question that came to mind or reflect what you learned, for instance.

Don’t worry — we won’t dispatch your questions and comments straight to Bit Heaven. On the contrary, we read them all and use them not only to improve future versions of this course but already during this one.

The teacher will pick common and otherwise interesting questions (anonymously) in weekly bulletins. He’ll publish these bulletins as part of these course materials throughout the fall.

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:

  • To pass with a grade of 1, you need to do almost all the assignments in Category A.

  • 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-up courses.

4

2100

800

450

5

2100

800

625

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

total available

2200

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,

  • 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 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, which gives you an up-to-date summary of how many points you have.

If you’re short on points in Category A, you can use points from Category B or C to make up the difference. Similarly, points from Category C can replace Category B points on a one-for-one basis. The Your Points page handles all this automatically.

Working in Pairs

You can do the programming assignments either alone or in a pair with another student.

Feel free to tackle the assignments alone, if you prefer. However, working with someone else forces you to articulate your thoughts — even to yourself! — and helps you learn how 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 arguments to explain why a piece of code would work.

(This ebook contains quotations from students. Many of them, like the one above, are somewhat loose translations from Finnish.)

When we recommend pairwork, we mean studying the chapters and assignments together. You are not allowed to split the workload with another student by working on different tasks independently.

To form a pair, go to the Form a Group page in A+ (which is also listed in the A+ menu). Later, when you submit solutions to assignments, you’ll be asked whether you’re submitting alone or on behalf of a pair. You can change partners during the course, but not in the middle of a single assignment: once you’ve submitted a solution to a particular assignment, any retries must be made by the same pair or individual.

The end-of-chapter feedback forms are meant to be completed individually. The same goes for the end-of-course questionnaire.

It’s a good idea to pair up with another student as soon as O1 begins. You can use our online discussion forums for this; you’ll find out more about them soon on this page. In general, it’s best to pair up with a student whose prior programming experience is similar to yours.

Reflect on the chapters together. Talk. Find a way of working together that suits you; you might take turns sitting at the keyboard, for instance. Each partner must be fully familiar with all the solutions you submitted together.

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 heart: 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, whether from other students or elsewhere, is not allowed. It is also forbidden to try to deceive the automatic assessment system to score points.

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

Support: Lab, Forums, and More

As a student in O1, you’ll need to take charge of your own learning and reserve time to work through the ebook chapters. 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 4th, 2025. After that, there are dozens of lab hours every week. Most of them are held on the Aalto campus in Espoo, but some online sessions are available, too. There’s a separate page with the locations and a more detailed schedule.

You don’t have to sign up for the lab sessions: you’re free to drop into any session. The labs don’t follow a preset agenda or have a fixed pace for all students. Instead, you work on the chapters at your own speed and ask the teaching assistants for help if you get stuck or want to discuss something.

Questions and answers: Piazza

Piazza is a website for course-related discussions. You can ask questions there and have them answered by the O1 staff or other students. Under normal circumstances, you’ll receive an answer within a day — often 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/fall2025/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/o1mooc_at_aalto/fall2025/da2/home

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 feedback after you answer this question, and you’ll also get feedback for other sorts of assignments later.

Check your Piazza settings!

Click the cogwheel in Piazza’s upper right-hand corner and check your site preferences. If you skip doing this, Piazza will send 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 O1 students and staff hang out there, and you may be able to get quick answers to questions — but that isn’t guaranteed.

You can use the Telegram app or access Telegram 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 we do offer two lectures as a bonus:

  • The lecture on Monday, September 1st, 2025, is an introduction to O1 and the programming tools we’ll be using.

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

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

Course Staff

../_images/juha_sorva.jpg

Juha

Teacher Juha Sorva

../_images/otto_seppala.jpg

Otto

The primary teacher, Juha, is in charge of pedagogical design, the contents of this ebook, student feedback and suggestions, the weekly bulletins, and general organization.

Email: juha.sorva@aalto.fi

O1’s other teacher, Otto, is in charge of plagiarism detection as well as any special arrangements related to the open-access version of the course. (An open-access offering of O1, a so-called MOOC, runs at the same time as the offering for Aalto students.) Otto also helps out with miscellaneous course matters.

O1’s other teacher, Otto, is responsible for arrangements that concern open-access students specifically. (An open-access offering of O1, a so-called MOOC, runs at the same time as the offering for Aalto students.) If you have questions related to those matters, Otto is the person to contact. Moreover, he is in charge of O1’s plagiarism detection and helps out with miscellaneous course matters.

Email: otto.seppala@aalto.fi

Head assistants Kai Bukharenko, Rasmus Fyhrqvist, Kaappo Raivio, and Onni Tammi

../_images/kai_rasmus_kaappo_onni.png

Rasmus, Kai, Kaappo, Onni

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:

Aditya Agrawal, Pouya Amiri, Mohammed Anwer, Antto Brandt, Khanh Bui, Kai Bukharemko, Esa Elo, Rasmus Fyhrqvist, Linnea Hara, Aape Hartikainen, Joonas Heikola, Xuan Hoang, Valtteri Kanstren, Nikolas Konggaard, Joel Kronqvist, Noora Kuosa, Pinja Lamberg, Minh Ha Le, Eemil Lehtikangas, Reetta Leinonen, Olli Lohikoski, Dang Ly, Aaro Marte, Shubham Monhal, Andy Nguyen, Nam Nguyen, Daniel Nikkar, Tõnis Pärtel, Vilma Pere, Anton Podlozny, Ishtiaque Rahman, Kaappo Raivio, Loviisa Rima, Nina Saarto, Zijad Sivić, Emma Suomalainen, Konsta Suuriniemi, Onni Tammi, Tilda Toivonen, Dinh Bach Tue, Ismo Ursin, Inka Viita, and Oiva Ylönen.

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

Dozens of 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.

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, O1, has three mandatory components: assignments, per-chapter feedback, and an end-of-course feedback questionnaire.

  • O1 revolves around this ebook and the assignments within it.

    • Your course grade is based on your assignment work, but you must also submit the required feedback forms. The first form is right there below this summary.

    • The goal is to help you build programming skills through practical tasks — which make up most of your grade.

  • 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.

  • We recommend pairing up with another student and working on the assignments together.

  • The first deadline is soon!

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

  • The course 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 this ebook and the assignments embedded within it.

    • Your course grade is based on your assignment work, but you must also submit the required feedback forms. The first form is right there below this summary.

    • The goal is to help you build programming skills through practical tasks — which make up most of your grade.

  • 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, Kai Bukharenko, Nikolas Drosdek, Kaisa Ek, Rasmus Fyhrqvist, Joonatan Honkamaa, Antti Immonen, Jaakko Kantojärvi, Onni Komulainen, Niklas Kröger, Kalle Laitinen, Teemu Lehtinen, Mikael Lenander, Ilona Ma, Jaakko Nakaza, Strasdosky Otewa, Kaappo Raivio, Timi Seppälä, Teemu Sirkiä, Onni Tammi, Joel Toppinen, 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...