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

Related Projects: None.



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 very 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; how to use the Linux computers on campus; 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.

Components of O1

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 one 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. The questionnaire 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 18th, 2019, 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 20th, 2019, as we’ll give you two actual weeks to work on a somewhat larger project during Week 10.) All the deadlines are visible here in A+.

The first deadline

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

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 answering the small 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. The topic of an assignment 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 the weeks of the course. 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.


The diagram also suggests that there are more weeks than 13 in this ebook. Which is true, but those later weeks are part of the spring course CS-C2120 Programming Studio 2, which takes over where we leave off.

Submitting solutions for automatic assessment

You submit your work via web forms that you’ll find within this ebook.

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

We’ll publish example solutions to each assignment in A+ at each deadline. 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!

You “Exercise Results” page in A+ is sensitive to the feedback forms. If you’ve forgotten to submit one, 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 855 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, but 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 contemplating a bunch of things together, and we had to come up with the arguments to support our solutions, like 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 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. Some of the lab sessions are also open to students from outside of Aalto (who are nevertheless able to attend in person).

The teaching assistants host lab sessions at Maarintalo on the Aalto campus in Espoo.

The first lab session is on September 11th, 2019. After that, there are sessions every weekday throughout the semester. The locations and a more detailed schedule are on a separate page.

You don’t have to sign up for the labs: you can just walk in freely to any of them. The lab sessions 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.

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 install the Telegram app, or you can use it straight from your browser. Registering requires a phone number.

You can access O1’s chat through this link:


There are three 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 that you’re reading now cover all the necessary topics. For more information about the lectures, please see a separate page.

O1 is emphatically not a lecture course, but there are three lectures as a bonus. The first two are in Finnish only, however, and none of the three is mandatory or especially important.

Please do not worry: you won’t miss out on anything important even if you don’t know Finnish. The two lectures at the start of the course are largely for orientation; everything that’s said there is also covered in detail in this ebook.

  • The lecture on Wednesday, September 11th, 2019 is a brief introduction to O1 and programming in Finnish. Since you’ve read this far on this page, you’ll already know everything that matters that’s said there.
  • In the following week, another lecture in Finnish reviews Week 1 and discusses topics from Chapter 2.1.
  • In December, O1 ends in a final lecture of sorts, where we’ll marvel at the nifty programs you students have created, hand out small awards to the winners of a virtual robot tournament, and showcase some follow-on courses. This session will be mainly in English. Mark the date: December 11th, 2019, 15–17 in Hall T1 of the CS building.

The full schedule is on the lectures page.

Course Staff

Teacher Juha Sorva



Juha is in charge of O1’s pedagogical design, the contents of this ebook, the weekly bulletins, and the lectures.


Head assistants Riku Autio, Niklas Kröger, Nikolas Drosdek


Riku, Niklas, Nikolas

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

22 teaching assistants will help you at the lab sessions: Henri Alaharju, Ella Anttila, Riku Autio, Nikolas Drosdek, Henri Gröhn, Henrik Hoppania, Anna Huttunen, Matias Kari, Markus Kirjonen, Otso Koiso-Kanttila, Niklas Kröger, Marianna Malkamäki, Trang Nguyen, Vinh Nguyen, Viljami Nurminen, Anna Müller, Dosky Otewa, Olli Paloviita, Anton Pirhonen, Linnea Risku, Iida Saaristomaa, Mathilda Smith, Marja Tiainen, and Thong Tran.

The assistants have some other duties such as manually assessing your solutions to certain programming assignments.

Our 22 teaching assistants help students at the lab sessions on campus. The assistants also have some other duties such as manually assessing your solutions to certain 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 Teacher 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.
  • Weeks 1 to 13 in this ebook make up the materials for an introductory programming course at Aalto that 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 and a few lectures are also available for local students at Aalto.
  • 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!

Weeks 1 to 13 of the ebook, including the assignments and weekly bulletins, have been written in Finnish and translated into English by Juha Sorva.

Weeks 14 to 20 are by Otto Seppälä. That part of the ebook isn’t available during the fall term, but we’ll publish it when it’s time.

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