Category Archives: computer organization

A reminder on the rules

I would like to make sure that we have a common understanding of the rules in the course RO:

There are two parts, the lecture and the practical. You get two individual grades and also two certificates.

To get a grade for the lecture, you need to participate in one of the written exams. We are offering written exams typically 6 times a year. Your first option is the exam by the end of this semester. The duration of a written exam is 90 minutes.

The practical is different. By handing in your work on the exercises, you are entitled to get a grade, and you will get a grade. To get a positive grade, you must fulfill several requirements:

  1. You must hand in all exercises.
  2. You need to show serious attempts to solve each exercise.
  3. You need to reach at least 51 out of 100 points.

The amount of points you can get for each exercise depends on

  1. the quality of your solution,
  2. your knowledge about the topic in the interview, and
  3. the time of delivery.

Use your grace period of 3 times 24 hours with caution. Use it only in exceptional cases in order to not lose points.

In case you cannot make a deadline due to exceptional circumstances, it is best to talk to the teacher or the teaching assistant before the deadline.

Read more details on the rules in the document “Aufgabenstellung” in detail. You find them in the beginning of the document, and some more towards the end of the document. I suggest that you read the section “Huch, es geht sich mit der Zeit nicht aus” NOW. For your convenience, I have put this text also below.

I hope you all have started well into the course. Now it is up to you, to keep your energy and pace also during the all too long Easter break.

Huch, es geht sich mit der Zeit nicht aus

Ein wesentlicher Aspekt auf dem Weg zum Profi ist der richtige Umgang mit dem Faktor „Zeit“. Jedes Projekt hat einen Liefertermin. Das ist der spätestens mögliche Liefertermin. Wenn du einmal verstanden hat, dass du ja auch früher liefern darfst, dann hast du bereits viel gewonnen. Du darfst also in deinem eigenen Kalender durchaus einen „Privatliefertermin“ eintragen, welcher zum Beispiel eine Woche früher als der vom Lehrer geforderte Termin ist. Die zweite wichtige Komponente ist der „Plan“. Dazu musst du die Arbeit eines Projektes anfänglich abschätzen, einen bestimmten Risikofaktor einberechnen, und dann die geplanten Arbeitszeiten in deinem Kalender festlegen.

Nimm als Beispiel die Arbeit an Aufgabe 1. Du liest die Aufgabenstellung durch und findest heraus, dass du „keine Ahnung“ hast, wie lange die Arbeit daran werden wird. „Keine Ahnung“ bedeutet zweierlei: (1) Du setzt dich rasch – man nennt dies „as soon as possible“ (ASAP) – hin, um eine „Ahnung“ zu kriegen. (2) Je weniger „Ahnung“, desto höher musst du den „Risikofaktor“ setzen. Daraus folgt für mich die wichtigste Grundregel: Bei „wenig bis gar keine Ahnung“ muss ich mich „sofort“ (= ASAP) darum kümmern, wenn es mir wichtig ist, zeitgerecht liefern zu können. Du könntest also zum Beispiel 5 Stunden investieren um eine „Ahnung“ zu bekommen, wie viel Aufwand sich hinter Aufgabe 1 verbirgt.

Nehmen wir ein zweites Beispiel: Du hast schon mal auf Assemblerebene programmiert und hast also bereits „ein bisschen Ahnung“ von Aufgabe 1. Du schätzt, dass es wohl in etwa 3 Tage Arbeit sein wird, doch so richtig sicher bist du dir dabei nicht. Ich würde in einem solchen Fall das Risiko bewerten und statt der 3 Tage vermutlich sicherheitshalber 9 Tage planen.  Auf jeden Fall würde ich die 9 Tage Arbeit in meinem Kalender einplanen. Im „Hinterkopf“ kannst du ja behalten, dass – wenn du gut drauf bist – ein Teil dieser 9 Tage nicht gebraucht wird.

Je öfter du das Spiel mit „geplanten Zeitaufwand im Voraus schätzen“, „tatsächlichen Zeitaufwand messen“ und schließlich „aus dem Vergleich zwischen Schätzung und Messung lernen“ machst, desto besser lernst du schätzen und planen. Die Fähigkeit zu planen wirst du dein ganzes Leben lang brauchen können.

Die obige Vorgangsweise führt mit großer Wahrscheinlichkeit zur erfolgreichen, rechtzeitigen Fertigstellung von Arbeiten und damit zur fristgerechten Lieferung.

Das Eintreffen unerwarteter Ereignisse kann jedoch auch einen guten Plan ins Wanken bringen. Wenn dies (hoffentlich selten) der Fall sein sollte, dann solltest du folgende Punkte beachten: Ein Agieren vor dem Liefertermin ist viel besser als ein Agieren nach dem verpassten Liefertermin.  Ein Brief an den Lehrer vor dem Abgabetermin ist wesentlich effizienter also ein Brief danach. Eventuell ist ein persönliches Vorsprechen sogar noch am besten; damit vermeidest du den Eindruck von „so wichtig ist mir das aber nicht“. Professionell ist, wenn man vorbereitet ist, einen Ersatzliefertermin anzubieten; diesen muss man dann aber auch wirklich einhalten.

Nehmen wir also an, du bist mit dem Projekt zu Aufgabe 1 „on track“, doch zum Abgabetermin fehlt noch „ein bisschen“. Dann kannst du bei dieser Lehrveranstaltung dein Lieferverzögerungskonto (insgesamt maximal 3 Tage für die gesamte KU) anzapfen.  Solltest du dies machen, dann solltest du gleichzeitig auch analysieren, wie es dazu kommen konnte. Daraus kannst du für die Zukunft lernen. Vielleicht bist du dem „20-80-Problem“ auf dem Leim gegangen. Es kommt oft vor, dass man für die ersten 80% eines Projektes lediglich 20% der zu Verfügung stehenden Zeit braucht; doch die verbleibenden 20% des Projekts verbrauchen 80% der Zeit. Wie gesagt: Lerne, dieses Problem in den Griff zu kriegen.

OK. Du hast geliefert. Doch kurz danach, jedoch noch vor dem Abgabegespräch, kommst du drauf, dass deine Lieferung fehlerhaft bzw. ungenügend ist. In diesem Fall würde ich „proaktiv“ handeln: Ausbessern bzw. nachbessern und – egal, wie spät – nochmals in verbesserter Form abgeben. Damit hast du klar zum Ausdruck gebracht, dass du „auf Draht“ bist. Mag sein, dass du für die verbesserte, nachträgliche Abgabe keine Extrapunkte kriegst; auf jeden Fall kannst du jedoch für das Abgabegespräch selbst mit deinem „verbesserten Wissen“ „punkten“. Ich kenne keine Situation, in welcher ein solcher „proaktiver“ Ansatz nicht geholfen hätte.

Jetzt hast du das Abgabegespräch mit der Tutorin gemacht und hast unglücklicherweise knapp das Punkteminimum verfehlt. Und dies trotz deiner Extraabgabe nach Abgabefrist. In diesem besonderen Fall solltest du bereit sein, durch geeignete, nachträgliche „Zusatzlieferung“ über das Limit zu kommen. Du könntest der Tutorin zum Beispiel vorschlagen, innerhalb von ein paar Tagen noch „jede Menge auf die Waage zu legen“. Deine Tutorin wird auch in diesem Fall kooperativ sein.

Kommen wir zum unerwünschten Fall: Du bist jung und willst die Grenzen ausloten. Die Abgabefrist verstreicht und du möchtest wissen, was passiert, wenn du einfach „durchtauchst“. In der Schule gab es ja auch immer wieder eine Lösung; egal, wie weit weg du vom Soll warst. Na ja, in diesem Fall haben wir es einfach: Solltest du nie liefern, dann kriegst du keine Note. Solltest du zumindest einmal geliefert haben, dann kriegst du eine negative Note.

I admit, I didn’t tell you the truth about Turing’s invention

We have talked a lot about truth tables recently. This is why I would like to tell you the full
truth about finite state machines now.

In last week’s lecture, I told you that Alan Turing invented finite state machines when he was trying to figure out what the Austrian mathematician Kurt Gödel has published in 1931. At an age of only 26, Kurt Gödel shook the whole mathematics community with his paper on the “incompleteness theorem”: “Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme” (https://en.wikipedia.org/wiki/G%C3%B6del’s_incompleteness_theorems).

Gödel’s paper on the “incompleteness theorem” belongs to the most important publications in mathematics.

When Alan Tuing studied Gödel’s paper at age 24, he invented a tool which he called the “computing machine”. This is now known as the “Turing Machine”.

Turing published the idea of the “computing machine” in his paper “On Computable numbers with an application on the Entscheidungsproblem” (https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf). This paper also became one of the most important pubplications in what we now call “computer science”.

Turing did not build the “Turing Machine”; it was only a mental model. A Turing Machine can be constructed to simulate any algorithm. To do this, it has a tape on which it can store symbols, like 0 and 1 for instance. The tape has an unlimited length. The notion of “unlimited” is important.

With finite state machines we only have “finite” many places to store information. Thus, a Turing Machine is more powerful than a finite state machine.

This is where I lied to you in class. The mental model “Turing Machine” is more powerful than the mental model of a finite state machine.

If one wants to build a Turing Machine physically, the tape must be of finite length. There is no tape with infinite length in this cosmos. Thus, an implementation of the Turing Machine becomes naturally less powerful than the mental model of the Turing Machine.

Since we are looking in the class “computer organization” at computers which can exist in reality — whatever this is — I dared to lie to you without getting red in the face.

If you want to see an implementation of the Turing Machine, check out this web page: http://aturingmachine.com/
Or just watch this video: https://www.youtube.com/watch?v=E3keLeMwfHY

A nice tutorial on Turing Machines can be found here: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/one.html

If you have more time and got curious, then check out this:

Click to access rosen-fsm.pdf

Or this:

Click to access turing_machines.pdf

If you are interested in Gödel’s paper, try this: http://www.research.ibm.com/people/h/hirzel/papers/canon00-goedel.pdf

Explore the world; don’t get afraid of your ideas; you might just as well shake the world with your ideas.

 

Cardinal mistakes one should avoid in Computer Organization

Have you looked at the cumulative grading over the years above? The chart shows the distribution of grades throughout the study years since 2011. Each column shows the grade distribution for a particular year starting with the first exam in July of this year and ending with the exam in May of the following year.

I would like to help you to prevent to be part of the “top crowd” in this chart. I would like to help you to prevent to be part of the club of “Nicht genügends”. Here are some cardinal mistakes you should avoid:

(1) Starting course with skipping going to lectures.

I advise you to go to all lectures and tutorials during the first weeks. Only by attending all meetings you can slowly develop your own opinion whether you should continue attending or not. Even if you have already mastered parts of the course, e.g. only the written exam or only the practical part in one of the previous years, I advise you you do the whole course again.

(2) Considering lectures and practicals as independent units.

Attend both parts of the course, i.e. lectures and practicals, together. Even if you have already mastered parts of the course, e.g. only the written exam or only the practical part in one of the previous years, I advise you you do the whole course again.

(3) Starting with the opinion that you have heard all before in school.

Some of you come from technical colleges and have been exposed to similar topics as found in this course. Please, still start attending all lectures and tutorials during the first weeks. You might quickly find out that there is still something new to be learned. I think that to most of you the “methodology” of approaching computer organization is new.

(4) Thinking that you can learn the course material in one intensive preparation session before the exam.

Computer organization is to some extent like a language course. You need to learn a whole lot of new words and need to learn to use these words in a new context. Like language, the material from computer organization cannot be learned in an overnight intensive session..

(5) Skipping trying out the code examples.

Understanding computer organization is not only knowledge, but a lot more the skill to build digital systems. In order to master this, you need to make many experiments with code. You start by trying out sample code provided by the teacher, and then embark to try out your own code.

(6) Thinking that it is sufficient to watch the video material.

Same answer here: Understanding computer organization is not only knowledge about
computers, but a lot more the skill to be able to build digital systems. In order to master this, you need to make many experiments with code. You start by trying out sample code provided by the teacher, and then embark to try out your own code.

As your teacher, I would be happy if I could convince you to have a strong start into the semester by being “attentive” (“aufmerksam”) and thus “attend” (“besuchen”) the course by showing up in the lecture room.

Feedback wanted. Feed back your thoughts.

As some of you might already have noticed, I have prepared a new course text for “Rechnerorganisation”. I would love to see reactions from readers of this text. At the same time I would like to encourage students of Rechnerorganisation to start reading early.

Here comes my offer: I am giving away 10 pre-Easter bunnies for those who work through chapter 1 of the course text and reply to me with their opinion on the course material. All types or reactions are welcome. There is no specific deadline for responses; however, I will select the winners for the pre-Easter bunnies at the latest by 5th of March.

Thus, you have one week. In my head it would be really cool if I could encourage some of you to just use the last weekend in February, i.e. the weekend ahead,  to get going. Download chapter 1 (“Introduction to TOY”) from the course web (https://teaching.iaik.tugraz.at/ro/start) and get going.

You can either post your reactions as a reply to this blog or also email me your ideas.

Welcome to “Rechnerorganisation 2016”

“Rechnerorganisation” (“Computer organization”) is a course at Graz University of Technology, Austria. It is a compulsory course for bachelor students studying the degree programs “Computer Science” (“Informatik”) or “Information and Computer Engineering” (formerly known as “Telematik”). The course is offered in the 2nd semester and consists of lecture (“Vorlesung”) and lab (“Konstruktionsübung”).

This year’s team for the course consists of 5 teaching assistants and myself, Karl C. Posch.

(Karl C Posch, Alexander Weinrauch, Andrea Ulbel,
Martin Schwarzl, Rene Hölbling, Vedad Hadzic)

In this blog, you can find postings related to the course.  I have started this blog about two year ago, and it seems to me that my blog postings were quite useful. I intend to publish postings whenever I feel like it.

A simple way to get informed about new postings is Twitter: Follow me on Twitter under the name kcposch.

The course web page can be found at https://teaching.iaik.tugraz.at/ro/start. There you can find all course material. I have recently updated the course web with fresh material.
Next semester’s exercises for the “Konstruktionsübungen” are also ready for download.
I offer them currently as a draft version.

On the course web, you can also find all the meeting dates. We start on Tuesday, March 1st, in lecture hall i13.

We also entertain a newsgroup for questions and answers. Go to news://tu-graz.lv.rechnerorganisation.

I welcome you all to this course. Your first steps into the course could be the following ones:

  • Register for the lecture on TUGRAZonline
  • Register for the practical (“Konstruktionsübungen”) on TUGRAZonline. You need to choose one of the groups. Watch out: They have different times.
  • Mark in your calendar the day and time of your first tutorium. It is compulsory to visit it.
  • Check out the course web. You can find the link above.
  • Watch this blog. I will publish a blogpost in the next days with hints how to start.
  • If you want to get informed about any news, follow me on Twitter (“kcposch”) or follow the Twitter hashtag “#iaikRO”.

Once again: Welcome. I hope you are going to like the course.

How to roll your own grace period in order to hit the single trail

Many of you have expressed positive feelings about the “grace period” of 3 days you all got. All of you can consume this “grace period” freely and hand in your assignments later without losing any points.

Where did we find this time?

It was rather easy. Originally, we had in mind to ask you to hand in all your assignments by a certain Tuesday, 14:00. Then, we changed this deadlines to Monday, 14:00 — and, voila — got 4 days. Three of these 4 days we generously gave you back as grace period.

Since you know the trick now, you can “roll your own”.

Get another day of “private” grace period in a similar way: Mark “Sunday, 14:00” for the deadline to hand in some assignment in your calendar, and you got one day of grace period for free. Or, even better: Mark “Saturday, 14:00” in your calendar, and you win another day of grace period.

It’s a trick. A lousy trick. A really, really, lousy trick.

Tricking yourself into thinking of an earlier deadline for handing in your 3rd or 4th assignment might even buy you an extra weekend in order to hit your favorite single trail with your bike.

About other business:

I hope you liked today’s “city of tiny lights”. Download the material from here:
https://bigfiles.iaik.tugraz.at/get/6daaf8b1f015fda5766a143603048b0e

This was my inspiration: https://www.youtube.com/watch?v=QH-rR42jeI0

Der Winter ist Schnee von gestern

Have you noticed?
Winter was yesterday.
I think that this time of the year is the best.

Today we talked about “finite state machines” in class. I think that this is a rather cool topic. Alan Turing must have had at least as much fun as I still have today when I teach this concept in class. I hope, you also can feel some of the exitement, Alan must have had when he figured all this out. After all, he was the first one to write it down. 1936. Check out his seminal paper
http://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf.

Alan Turing was 24 years old at that time. And with this paper he started a whole science — computer science. What a thing!

By the way: Alan invented all this when he studied the “Entscheidungsproblem”. He studied a paper written by the Austrian mathematician Kurt Gödel. Gödel published in 1931 a paper on what he called the “Unvollständigkeitssatz”. The title of the paper is “Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme, I”. Kurt was only 25 years old, when he rocked the whole mathematical world with his results. Check out this paper here: http://www.w-k-essler.de/pdfs/goedel.pdf

Still interested in my posting here? Or have you already dived into the world-famous papers of Gödel and Turing?

If you are still with me, here is another good news for Rechnerorganisation:

I have compiled 2 tutorials on TOY which you might like.

TOY Tutorial 1:
https://bigfiles.iaik.tugraz.at/get/bf5bf92e7fde5f42b384036280342464

In “TOY Tutorial 1” I show the principles of TOY by using a Python TOY simulator. Download the ZIP-file, open it and start reading the file “toy_tutorial1” with a simple text editor. I have produced this material in order to help students who have difficulties with graphical user interfaces.

TOY Tutorial 2:
https://bigfiles.iaik.tugraz.at/get/310d7b7641654318d2f5b067ae1be3af

In “TOY Tutorial 2” I have solved last year’s assignment #1 or the practical in Rechnerorganisation. It also uses the Python TOY simulator.

In case you find this material useful, let me know.

So much for this week’s posting on “What’s new in Rechnerorganisation?”

A final note:
I dislike very much to have to teach in a lecture room two floors below ground zero. No windows. No sun. No fresh air. No nothing. Farmers would not dare to keep cattle down there.

Week #2 in Rechnerorganisation, issue 2015

I hope that you all had a good start into  the course. From what I can see, the smart ones of you have already been digging into assignment 1. Some of you have even handed in result for assignment #1.

As you might have figured out, our goal is to encourage you all to start early. If you start acting now, you could still consider yourself as an early starter. Next week is too late for an early start. By “starting” I mean that you act by making first experiments with TOY.

If you need incentives to get started: Going to class and to the tutorials is probably a very wise decision.

By the way: Have you met your teaching assistant? By “meeting” I mean: Have you talked to him? He is just a student as you and I. We all work in order to  make this university a place we can enjoy. “Student” comes from the Latin word studiōsus or studiōsa and means “eager” (= “eifrig” in German).

OK. In Tuesday’s class this week we will study “number representations”. In particular, we will check out nitty-gritty details so that you can avoid nasty pitfalls with assignment #1. As you will learn, TOY is a rather special animal.

On Wednesday we will have a short look at “logic functions” and then dive into “finite state machines”. Finite state machines are one of the most powerful concepts in computer science. If you open up the hood of TOY, you find a finite state machine. In fact, we could say that each and every digital system can be described as a finite state machine.

As usual, the material we will cover in class can be downloaded from the course web.

Begin the begin

To begin with, I wish you all quick feet and busy toes:  https://www.youtube.com/watch?v=37XhIuqsWVk

In Rechnerorganisation, we will not waste time. This is what I promised you in my previous posting. Lecture, practical, and the tutorial groups will all start at the earliest possible date. With this, I would like to do my part of lowering the usual stress at the end of the semester.

I assume that your registration on TUGRAZonline included your intention to visit the course “in real life”. The course consists of the lecture and the practical.

The practical includes the offer to work with the teaching assistants in groups. In order to organize the groups, all registered participants need to visit “Tutorium 0”. The main task in this “Tutorium 0” is to decide whether you want to attend the weekly sessions with your teaching assistant — or not.

These are the dates for “Tutorium 0”:

  • Monday, March 2nd, 8:00: Group Dobaj, IAIK Seminar Room, Inffeldgasse 16a, ground floor.
  • Monday, March 2nd, 9:00: Group Link, IAIK Seminar Room, Inffeldgasse 16a, ground floor.
  • Tuesday March 3rd, 8:00: Group Fressl, IAIK Seminar Room, Inffeldgasse 16a, ground floor.
  • Tuesday March 3rd, 8:00: Group Thaller, Franz-Leberl Seminar Room, Inffeldgasse 16, 2nd floor.
  • Wednesday March 4th, 9:00: Group Niedermayr, IAIK Seminar Room, Inffeldgasse 16a, ground floor.

In order to be able to organize a productive environment within the weekly tutoriums, we want you to decide to participate or not participate. With this decision, we want to avoid to get students who only occasionally visit in the tutoriums and then tend to disrupt the tutorial sessions.

On Tuesday, 9:00, I will start working on this year’s practical. The document with the 5 problems has been available for quite some time now; so most of you might have had a look at it. If not, check it out. You can find it on the course web: http://www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnerorganisation/practicals/downloads/

On Tuesday, I will start by introducing “Aufgabe 1” and quickly dive into our main tool: The TOY computer. I will use presentation slides which you also can find on  the course web (see link above). We will dive “Von C zu Assemblerprogramm zu Maschinencode”. Check it out.

On Wednesdy, 10:30, I will continue working on this introduction to TOY, to assembler language, and machine language.

In order to get “into the mood”, you might want to check out the first 4 video lessons which come as “part 1”. You can find them here: http://www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnerorganisation/downloads/

If you are more “a reading type of person” then you might also like my manuscript to TOY which is part of the lecture material for this course’s sister course “Rechnernetze und -Organisation”. You can download it here: https://bigfiles.iaik.tugraz.at/get/5ea6e89c5267283463924ba682a0df0c

If you think that this is already “more than a mouthful”, let me explain:

  1. As a student, I always hated the boring starts of lectures. Nothing happened during the first weeks, and at the end of the semester, the teacher always produced stress since he (yes, always male) could not get through his program. I want to do lectures differently.
  2. To my mind, a semester break lasting for 4 weeks, is far too long, anyway. Meanwhile, most of you have been waiting for the start eagerly.
  3. The semester lasts for 15 weeks. Other universities offer semesters with up to 19 weeks. Thus, there is no time to waste.

Let’s get going. The teaching assistants and I promise you a lot of new insights you were eager to get anyway.

What’s new in Rechnerorganisation 2015?

New:
The access to the 20+ hours of video lessons is now open without user-id and password. Check out http://www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnerorganisation/downloads/.

New:
In order to help the students to get used to English in class, I plan to do the first half of each
class in English.

New:
I have reorganized the web. It should now be easier to find your way through all the material.

New:
Due to the increasing lack of understanding the problem of plagiarism, I have added an “assignment 0” to the practical (“Konstruktionsübung”). In this assignment, students get the opportunity to refresh and/or improve their knowledge on plagiarism.

New:
I intend to emphasize the “quick-start” philosophy. Thus, the first weeks will be rather intensive. Come to all classes and all tutorials, you will not get bored. I promise.

New:
I intend to increase to stress the symbiosis between lecture and practical. To my mind, it does not make sense at all to just do one without the other.

New:
I will change my “laissez-faire” attitude with regard to students not going to class regularily. Even though there is a lot of material online, this material is not a substitute for going to class.

New:
I will ask students to work through available material before we deal with it in class. This should enable a better basis for a dialogue between the teacher and the students in class. I want to move towards a “flipped classroom”. Check out http://en.wikipedia.org/wiki/Flipped_classroom.

New:
I will actively invite individual students to visit me during office hours. For a chat. For a coffee. For getting to know each other. For talking about studying. And, of course, also for talking about “Rechnerorganisation”.

New:
At my desk, I keep a print-out with all the suggestions I got from students who evaluated last year’s instantiation of “Rechnerorganisation”. This will hopefully help me to avoid some of the shortcomings of my teaching style.

I am looking forward to the semester about to start.