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
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
A variety of computer systems
Computer systems can be classified into:
General-purpose computers (yleiskäyttöinen tietokone) such as desktop and laptop computers. These computers can be used for a broad range of tasks.
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
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:
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.
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!
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 11th, 2024, 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 20th, 2024, 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 11th, 2024. 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.
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:
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.
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 |
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; 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.
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.
An Important Note about ChatGPT and Related Tools
It is forbidden to use “artificial intelligence” (AI) to solve O1’s assignments. In other words, you are not allowed to use technical tools that generate program code or other solutions to assignments; this applies to tools such as ChatGPT, GitHub Copilot, JetBrains AI, Bing, and the like. Such use counts as plagiarism just like copying solutions from a human does. Each student or student pair must submit only solutions that they themselves produced.
You do not have permission to enter our course materials into AI tools or to otherwise distribute the materials to external parties.
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 5th, 2024. 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 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 website 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.
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/fall2024/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/lxijpepsgg31fo/
To score your first assignment points, please answer the question below.
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 2nd, 2024, is an introduction to O1 and the tools we’ll use for programming.
On December 9th, 2024, 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
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 Joel Toppinen, Kaisa Ek, Ilona Ma, and Onni Komulainen
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.
Teaching assistants
Our many teaching assistants (TAs) will help you at the lab sessions. They are: Mohammed Anwar, Maksim Bukharenko, Anton Chakhovich, Tue Dinh, Kaisa Ek, Esa Elo, Joose Eronen, Hannes Fant, Rasmus Fyhrqvist, Hilkka Gröhn, Edris Hakimi, Valtteri Kanstren, Basant Khattab, Onni Komulainen, Noora Kuosa, Elmeri Lankinen, Minh Ha Le, Tommy Le, Eemil Lehtikangas, Ilona Ma, Onni Miettinen, Konsta Mikkola, Shubham Mondal, Jaakko Nakaza, Hiep Nguyen, Nam Nguyen, Tuomo Ohvo, Karoliina Oksanen, Kerttu Peura, Anton Podlozny, Ishtiaque Rahman, Kaappo Raivio, Robin Runne, Filippa Sandberg, Onni Tammi, Tilda Toivanen, Joel Toppinen, Linh Tran, Olli Ullgren, and Aarno Veitola.
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.
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ä (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, Onni Komulainen, Niklas Kröger, Kalle Laitinen, Teemu Lehtinen, Mikael Lenander, Ilona Ma, Jaakko Nakaza, Strasdosky Otewa, Timi Seppälä, Teemu Sirkiä, 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.