Working Practices
Learn by Doing
Use the following routine when working through a runnable example:
- predict what the program will print before running it,
- run it and compare the output with your prediction,
- and modify one line, predict the effect, and run it again.
To trace a program, walk through it line by line with a specific input and record how the variable values change.
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.
Try sketching a trace table or a name-to-value diagram while working through a program. For a loop, record the variable values after each iteration. For a list shared by two names, draw both names pointing to the same list.
You can make these notes on paper or in a text editor. Compare your trace with the program’s output.
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
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.