Working Practices
Learn by Doing
Programming is easiest to understand when you actively run and test code, and try to predict what it will do.
Reading about an if statement, a loop, or a function is useful, but most of the learning happens when you run a small program, predict what it will do, check the output, and adjust. The same is true for tracing: a program becomes much clearer once you walk through it line by line with a specific input in mind.
When possible:
- predict what a program will print before running it,
- run the programs,
- and modify one line at a time and see how the output changes.
It is usually more effective to work on each course part multiple days than to try to finish everything in one sitting. Programming concepts often become much clearer after a pause and a second pass.
Keep Notes on Structure
It is helpful to keep lightweight notes while studying. For example, you might note:
- the main ideas of a chapter,
- a small trace table for a program you found tricky,
- the inputs and outputs of a new function,
- the edge cases you decided mattered for a piece of code,
- or what you found confusing about a concept and which part of the course or external resource clarified it.
These notes do not need to be polished. The point is to make your own thinking more visible.
When you are trying to understand how a program runs, what a loop does at each iteration, or where a bug might be hiding, it is often more effective to sketch it on paper than to keep it all in your head or to type it out. A trace table written by hand, or a quick arrow diagram of which variable depends on which, can make the structure much clearer.
Did you know, by the way, that taking notes by hand can help you learn better than typing them on a laptop? It is not just about the drawing. The physical act of writing can help your brain process and remember information more deeply. The research evidence on this is mixed, but many find it helpful. If you have the option, try taking notes by hand for a while and see if it helps you understand the material better.
Coursework and Academic Integrity
The coursework is meant to support your own learning. You may discuss ideas with others, but your submitted work must reflect your own understanding.
Do not publish your solutions publicly or store them in places where other learners can access them directly. This includes finished exercise solutions, project code, and graded reflections.
If you use outside help, the responsibility for the final submitted work still remains yours.
Use of Generative AI
This course takes generative AI seriously. AI coding assistants are now a normal part of writing software, and the course assumes you will sometimes use them. It does not ask you to avoid them, and it does not assume they will write good code for you. Instead, it teaches a set of skills for working with them well.
When using generative AI to support your own studying:
- verify every piece of generated code by reading it and tracing what it does,
- run generated code on more than the obvious input — including edge cases — before trusting it,
- do not submit copied AI-generated solutions as your own work,
- use AI as a study partner, asking it to explain, summarize, or suggest, rather than as a replacement for practice.
If you find that you are relying heavily on generative AI, beware the illusion of competence: producing correct results with AI help is not the same as understanding the material yourself. If your understanding is not keeping up, it may be a good idea to slow down and focus on the core materials and exercises without AI support for a while.
As an Aalto student, you will also have an exam where you do not have access to generative AI. The exam is designed to test your own understanding and that you can work with code without AI support.