Teemu Kerola


The operation of computer system and its operating system, mostly from the viewpoint of one program in execution.

This course introduces, how computer programs are executed in hardware, the components of a computer system and what they do, and what is the program execution environment created by hardware and operating system.

This course is based on lectures, home works, and practice sessions. It also includes hands on practice on assembly language programming using Titokone-simulator. The course has four mini exams during lectures, and one of them covers assembly language programming. This course in completely in English.

Similar course in Autumn 2020 is in Finnish and it is based on MOOC-materials in Finnish.

Preliminary course: Introduction to Programming.

Text book: Stallings W., Computer Organization and Architecture (10th ed.), Pearson, 2016.



Teemu Kerola's picture

Teemu Kerola

Published, 22.3.2020 at 19:27

We have new info on adjusting to current coronavirus situation.

1) Today (16.3.2020) lecture is in A111, and will be streamed via YouTube, as described in the schedule page. All later lectures, starting from Wed 18.3.2020, will be done with Zoom. More instructions will follow in the schedule page. Zoom is already installed in newer departmental laptops. More information on Zoom is found in https://helpdesk.it.helsinki.fi/en/help/10890.

2) All practice session will be run online by Harri Kähkönen with Zoom. More instructions will follow in the schedule page.

3) You need to return the solutions for your homeworks in advance in Moodle. You need to give a list of solved problems (e.g., "1, 2, 3, and 6") and one pdf containing all solutions. More instructions will follow.

4) All mini exams will be online exams in Moodle. There is already one practice exam available. The actual mini exams will be given at certain Wednesdays at 14:15-15:15. There is more time available, because you need to type in your answers. Moodle is already available in this course info page (see link above).

We have now completed changing this course to an online course. I am sorry for the extra trouble all these arrangements will cause, but they are unfortunately unavoidable.

If you have any questions, please consult your peers in course telegram group, or contact me via email.

Teemu Kerola's picture

Teemu Kerola

Published, 13.3.2020 at 9:42

Because of world-wide coronavirus epidemic, we have some changes to this lecture course.

1. All remaining lectures (starting Monday 16.3.2020) will be in A111. They will all be streamed and also saved in UniTube for viewing later on. UniTube instructions are in the course schedule page. You can still attend the lectures in person, if you so wish. It will be very easy to keep proper distance to your neighbour in A111!

2. Practice sessions are arranged normally, but course grading will be adjusted so that your grade is computed with practice sessions points and without them. Higher grade wins. So, if you feel ill (or worried) at all, you can stay home and skip practice session attendance. However, you still need to do the home works, because that is where learning happens! If you can not participate to some practice session, please read model solutions carefully and compare them to your own answers with self reflection.

3. Mini exams are organized as planned. It will be very easy to keep proper distance to your neighbour in A111! However, if you are ill, do not attend!

UPDATE (13.3.2020): It is possible that mini exams will be changed to online Moodle-exams.

These arrangements have all been done as a precaution only. Currently there is no information on any of the students or staff relating to this course being infected with COVID-19.

If you have any questions, please ask via email or during the lectures.

Teemu Kerola's picture

Teemu Kerola

Published, 6.3.2020 at 10:13

Practice session groups 1 (Tue 10-12) and 4 (Fri 10-12) are cancelled.

Teemu Kerola's picture

Teemu Kerola

Published, 27.2.2020 at 16:12

Please notice that due to small course attendance the Monday lectures have been moved to D122 (Exactum). Wednesday lectures are still in A111 (Exactum).

Teemu Kerola's picture

Teemu Kerola

Published, 25.2.2020 at 12:54

There are surprisingly few students enrolled to course Computer Organization I so far (25.2.2020). The reason might be that students in Bachelor's Programme in Computer Science (in Finnish) have not realized that this course is the same as Tietokoneen toiminta (Computer Organization I, in Finnish). On previous years, there has been over 200 registered students for the course "Tietokoneen toiminta" in this same time slot.

Once the course begins, we will cancel practice session (exercise) groups with very few students. Currently the practice session groups 1 (Tue 10-12) and 4 (Fri 10-12) are in danger of being cancelled. Groups 2 (Wed 12-14) and 3 (Thu 12-16) are safe so far.

Teemu Kerola's picture

Teemu Kerola

Published, 12.12.2019 at 15:02

All notices to students during the course are given in this forum. Exact schedule with links to lecture notes and home works is given in separate Course schedule page (see "Material" section below).


Course Telegram group is tkt_tito

It is intended for peer support for students, though course instructors may also follow the discussion. Please do not give direct answers to home works here, as that would take away good learning opportunities from your peer students.


Here is the course’s teaching schedule. Check the description for possible other schedules.

Mon 9.3.2020
14:15 - 16:00
Wed 11.3.2020
14:15 - 16:00
Mon 16.3.2020
14:15 - 16:00
Wed 18.3.2020
14:15 - 16:00
Mon 23.3.2020
14:15 - 16:00
Wed 25.3.2020
14:15 - 16:00
Mon 30.3.2020
14:15 - 16:00
Wed 1.4.2020
14:15 - 16:00
Mon 6.4.2020
14:15 - 16:00
Wed 8.4.2020
14:15 - 16:00
Mon 20.4.2020
14:15 - 16:00
Wed 22.4.2020
14:15 - 16:00
Mon 27.4.2020
14:15 - 16:00
Wed 29.4.2020
14:15 - 16:00

Other teaching

17.03. - 07.04.2020 Tue 10.15-12.00
21.04. - 28.04.2020 Tue 10.15-12.00
Santtu Lempinen
Teaching language: English
18.03. - 08.04.2020 Wed 12.15-14.00
22.04. - 29.04.2020 Wed 12.15-14.00
Santtu Lempinen
Teaching language: English
19.03. - 02.04.2020 Thu 14.15-16.00
16.04. - 30.04.2020 Thu 14.15-16.00
Harri Kähkönen
Teaching language: English
20.03. - 03.04.2020 Fri 10.15-12.00
17.04. - 24.04.2020 Fri 10.15-12.00
Harri Kähkönen
Teaching language: English



William Stallings, Computer Organization and Architecture (10th ed.), Prentice Hall, 2016.

Titokone: Programming environment, where you can compile and execute symbolic machine language programs developed for hypothetical ttk-91 computer system. The environment is designed for educational purposes only. It includes assembly language compiler, software development environment, execution simulator, and execution animator.

TitoTrainer: System that automatically checks the correctness of the answers for given Titokone programming problems. It also keeps track of problems solved for each student.

Telegram-group tkt-tito. This is intended for student peer support. Please do not give homework solutions there.

Web Lectures are old (from 2004-2005), but they are still usable. Only web lectures 1-4 are (also) in English. You do not need to use these, if you attend the lectures.

MOOC-materials are new, but they are only in Finnish. You do not need to use these, because you have lectures and the text book.


Conduct of the course


Basic topics are also covered in lectures. There is good text book (Stallings).

Course week 1 has no practice sessions. There will be also Ttk-91-workshops for assembly language programming in some course weeks.


Home works can be done alone or with some friends.

In homework sessions all problems are first discussed in each table. In this discussion you may assume that all students are familiar with problems and have at least tried to solve them. If you are not familiar with the problems in advance, you will not gain so much in the practice session as there is no time to cover each problem at that detail. The instructor present will consult each table as needed.

At the end of the practice session the instruction will give out model solutions, and there can be common discussion one some or all homework solutions. The model solutions will be collected back, but they will be available in the web the next week.

It is very helpful for your own learning to discuss and explain homework solutions to some other student, who has also worked on the same problem. Usually the student explaining the solution learns more than the student receiving help. However, please do not give other students your complete answer directly. They do not learn much from that. Good learning is achieved by alternating (a) your own studying, (b) solving practice problems, and (c) discussing problems and their various solutions with other students.

The goal of the home works is learning, not just getting points to pass the course or to get a better grade. Learning happens best when think about the problem, try to solve it your self, and then discuss your solution with other students. There are plenty of similar examples in lectures and text books. Using a homework problem solution only as readable example is a waste of good learning opportunity and a waste of a homework problem.

You will gain home work points from the practice session, but only for the problems you have done and only if you are present. You gain home work points (hwp) from the home works, based on how much work they involve. Those hwp's are then mapped to course points affecting your grade, so that some 5/6 (83%) of maximum hwp's gives you maximum points towards your grade.


Course is done by participating actively the lectures (or web lectures), reading the text book, doing home works and discussing them in the practice sessions, and learning ttk-91 programming in workshops and independently. You need to show own initiative and scheduling, so that your learning happens according to the weekly schedule.

During the lectures there are four small (45 min, 12 p) mini exams. All mini exam can be redone in the replacement exam, which is the 1st separate exam following this course. Basic principle is, that each exam can be taken twice and the best result is used.

Students practice (symbolic) machine language programming in home works, ttk-91 workshops and independently with Titokone simulator system and TitoTrainer programming environment. Mini exam 3 covers assembly language programming.

Course grade is based on mini exams (48 p) and homework sessions participation in course weeks 2-7 (12 p). To pass, you need at least 24/48 points from the exams, and at least 30/60 points overall.

Course bookkeeping (Tikli) has a place for six homework sessions (Exercises), four mini exams (Exams 1-4), and fours replacement exams (Exams 5-8). Please check every now and then, that your points are correctly marked.


Bachelor's programme in Science

Basic studies in Computer and Data Science

Compulsory course in Computer and Data Science study track in Bachelor 's Programme in Science.

Course is available to students in other programmes, including students in Bachelor's Programme in Computer Science (in Finnish).

Students should be able to write programs in some high level programming language. Any programming course will do.

Computer Organization II, Introduction to Data Communication and Operating Systems.

After successful completion of the course, the student will be able to:

  • Explain large speed differences between hardware components in the system, and how they affect the overall system.
  • Explain, how the processor works while executing machine instructions (fetch-execute cycle).
  • Explain basic ideas in bus and memory hierarchy.
  • Explain basic operation of cache and virtual memory.
  • Explain different processor execution modes, and especially the purpose of privileged execution mode.
  • Explain, when and how processor execution mode changes.
  • Explain the meaning and implementation of interrupts at instruction execution level.
  • Explain, how different types of interrupts differ from each other.
  • Explain interrupt processing in the operating system with interrupt handlers.
  • Implement with symbolic assembly language global variables, constants, records, 1- and 2-dimensional arrays. Explain, how these data structures are allocated space during compilation, linking and/or loading.
  • Implement with symbolic assembly language branching and iterative control structures, and subroutine calls.
  • Explain integer and floating point representations, and basic principles of character and string representations.
  • Explain in principle, how (moving) images and sounds are represented in the system.
  • Explain, how changes in floating point accuracy must be taken care of in computations.
  • Explain two ways of storing multi-byte data.
  • Change integer representations between number systems in base 2, 10 and 16.
  • Implement memory allocation of records, objects and multidimensional arrays (stored in various ways), and references to them.
  • Explain differences in memory allocation of and references to global and local data structures.
  • Use activation records and activation records stack in implementing (recursive) subroutines.
  • Explain the basic methods (parity, Hamming code) for data integrity.
  • Explain the process concept, and its representation in the system.
  • Explain different process states and and state transitions.
  • Explain, when and how the process in execution is changed.
  • Explain the basic components of an operating system (process, memory, file, device and network management)
  • Explain basic ideas in (symbolic assembly language) compilation, linking, and loading.
  • Explain the goals and basic operations of an operating systems, from the user's and system manager's viewpoint.
  • Explain, how operating system is implemented with various (privileged) service routines and processes.
  • Explain the advantages and disadvantages of static and dynamic linking.
  • Explain the operating system device interface implementation with device drivers and interrupt handlers.
  • Explain the basic ideas of file server and file cache.
  • Explain the structure of a hard disk drive, and compute access time for a file in hard disk.
  • Explain different I/O implementation types.
  • Explain different ways to execute Java programs, and how those ways differ from each other.
  • Explain the basic structure and operation of Java Virtual Machine (JVM), and select the most suitable one for given application.
  • Explain the basic idea of Just-in-Time (JIT) compilation.

First year of studies, after the course Introduction to Programming.

Organized in Spring semesters as a normal lecture course in period 4.

Computer system overall structure. Processor structure.
Machine language programming, subroutine implementation (with ttk-91 computer system).
Processor and bus, data representation, data integrity, memory implementation.
Implementation of program and operating system.
External memory and I/O implementation.
Compilation, linking, and loading.
Interpretation and emulation.

Weekly lectures and exercises, four mini exams during lectures. Attendance to exercise sessions is required to get points towards your grade.

Alternatively, the course can be taken as independent self study using the text book and on-line materials. Grading is based on one final exam.

Recommended: William Stallings, Computer Organization and Architecture, 10th ed., Pearson, 2016.

Student: lectures with small group discussions, working on the homework independently, discussing homework problem solutions in practice sessions, workshop guidance for programming with Titokone, independent programming practice with TitoTrainer, participation to the exams.

Instructor and teaching assistants: creating the lecture material, lectures, supervising mini exams, homework problems and solutions, supervising practice sessions, creating exam questions and model solutions for them, supervising exams, grading the exams, supervising teaching assistants, updating course information in web, bookkeeping for the course, student grading.

Assessment is based on the exams and exercises.

Successful completion requires 50% of maximal points, including at least 50% from the exam maximal points.

Grading 1-5.

Every year in the Spring semester, period IV (in English). Student proficient in Finnish can also take the same course offered every year in Autumn semester, period II (in Finnish, with practice sessions in English).

Teemu Kerola