carview.php?tsp=

KU RNO: The results of 2018

In the chart above you can see the results of this year’s practical in RNO. Unfortunately, more than the half of the registered students started the course without being determined to finish it off. 56 students only handed in assignment 0, and another 26 only handed in assignments 0 and 1. All students who handed in all assignments (0, 1, 2, and 3) passed the course.

Let me compare this years edition of RNO with last year’s. In 2017, the difficulty of the practical was on the tough side. In 2018, I tried to make it easier; and, yes, it got a lot easier. In terms of grades, the outcome of the practical in 2018 was by far better than in 2017. You might want to check out the results of 2017 in one of the previous blogs.

It appears that the simplicity of the practical in 2018 is partially “responsible” for the relatively weak outcome of the exam in June 2018. This year we see a failure rate of 44% in comparison to 36% in 2017. Moreover, in 2018, we only have 13% with “Sehr gut”, whereas in 2017 we had 24% with “Sehr gut”. What can be learned from this: It seems to pay off to ask for a tough practical.

I would like to thank the excellent teaching assistants Vanessa, Florian, and Arwin for holding the practical with superior quality. I am sure that you also agree to this.

IMG_2160

Please, use the opportunity to give us feedback. You can do this anytime; however, the gates for the feedback form on the online system of TU Graz are still open for a couple of days. Please, help to improve the quality of the course.

I wish you a pleasant summer.

 KC Posch

carview.php?tsp=

RNO exam result (June 2018)

Above you can see the distribution of the exam grades of last week’s final exam. 106 student took the exam. This is 50% more than in last year’s June/July exam.

There were 3 groups. You can find all exam questions on the RNO course web. Check out the distribution of the grades depending on the group in the chart below.

RNO_Vorlesungsnoten_nachGruppen_Juni2018

In case you think that you had it tougher in your group than your colleagues in some other group: There is no intention from my side to have tougher and simpler exam questions per group.

In the chart below you can see this year’s results next to the results from previous years.

RNO_Vorlesungsnoten_2014bis_2018

In case you would want to check out the exact points you got on each problem, come to my office. But, please, only after August 8th. Until then I will be out of office.

Before I wish you relaxing summer holidays, let me remind you of the opportunity to evaluate the course: both, lecture and practical, are still open for a couple of days to get evaluated.

I really like to learn about your opinion. Please, go ahead an evaluate. Thank you.

I wish you a pleasant summer time.

Karl C Posch

carview.php?tsp=

KU RNO: The 2017 results

In the chart above you can see the results of this year’s practical in RNO. Unfortunately, more than the half of the registered students started the course without being determined to finish it off. 86 students only handed in assignment 0, and another 50 only handed in assignments 0 and 1. All students who handed in all assignments (0, 1, 2, and 3) passed the course.

Extending the deadline for handing in assignment 1 by 10 days — we called it the “Easter Special” — did not help much either to substantially raise the outcome. Apparently, assignment 1 was a huge challenge for many of the students. I still wonder why assignment 1 was considered such a huge problem. From my point of view, its difficulty was similar to the difficulty of the assignments from the past years. As a kind of proof, I have published my quick-and-dirty initial shot at the problem on the course web. Check it out here. The problem statement can be found in this document. You might also want to re-read my little fairy tale in this blog sphere (“Thinking like a computer program”) that I have published in the beginning of the semester; back then I thought that this short text might guide some of you in their thinking about the problem of assignment 1.

I would like to thank the excellent teaching assistants Florian, Arwin, and Vanessa for holding the practical with superior quality. I am sure that you also agree to this.

michelic-1roubalsereinig

Please, use the opportunity to give us feedback. You can do this anytime; however, the gates for the feedback form on the online system of TU Graz are still open for a couple of days. Please, help to improve the quality of the course.

I wish you a pleasant summer.

 KC Posch

carview.php?tsp=

RNO: Results of the exams (29 June, 3 July)

Above you can see the distribution of the exam grades of last week’s final exam. 75 student took the exam. This is approximately the same number as last year.

There were 4 groups: Group A on June 29th, and groups B, C, and D on July 3rd. You can find all exam questions on the RNO course web. Check out the distribution of the grades in the chart below.

rno_exam_results_2017_2

In case you think that you had it tougher in your group than your colleagues in some other group: There is no intention from my side to have tougher and simpler exam questions per group. I always pack 3 known exam questions with 1 new question.

In the chart below you can see this year’s results next to the results from 2015 and 2016. For three consecutive years, the result have been improving.

rno_exam_results_2017_3

In case you would want to check out the exact points you got on each problem, come to my office. But, please, only after August 9th. Until then I will be out of office.

Before I wish you relaxing summer holidays, let me remind you of the opportunity to evaluate the course: both, lecture and practical, are still open for a couple of days to get evaluated.

I really like to learn about your opinion. Please, go ahead an evaluate. Thank you.

I wish you a pleasant summer time.

Karl C Posch

carview.php?tsp=

Crazy TOY Programming

Hope you all had a good start into the semester. Did you get your TOY going?

Recently, I did an experiment with the students in the sister course “Rechnerorganisation”. I gave them a little TOY machine program and asked them to figure out what this (essentially) 1-instruction program does. I also offered to have coffee with the first 6 students who hand in correct answers. The experiment got a HUGE success: Out of 455 registered students, 11 students responded. This is 2%. I wonder whether the students registered in RNO are behaving differently.

Above you see your little “mysterious” code example. On the left you see the machine program. After the semicolon, each line has the corresponding assembly-language statement. You might see that none of the instructions modifies the contents of the CPU register R6. However, if you run the code on Visual X-TOY, you find the value 0x0001 in R6. Why?

I am going to invite the first 6 students who send to me an email with the correct answer for coffee with cake on Friday, March 17th,  14:00, before the afternoon class.

Anyway, I consider it as useful to reason about this tiny machine program. It probably gives you a new insight into the relationship between code and data. See you in class on Wednesday.

carview.php?tsp=

Thinking like a computer program

OK. Let’s start. Before I get going with the real task, I might as well get me a 1 in register R1. This is quite handy since we quite often need the constant 1. Think only of incrementing or decrementing some value. Right? I am supposed to get a value from standard input. Get one. What is it? Does it already mark the end of the input data? No. Good. Is it the end of a line? No. Good. Is it a blank character? Yes? Yes! Then we just ignore it. We don’t consider blank characters as useful information at the moment. We are currently waiting for something else to appear. What’s the next value? Again a lousy blank character. What’s next? Another Wow! Now we got an “A”. Actually, it is the number 0x41, i.e. the equivalent of an “A”. Well, to be honest, it’s not even 0x41, but rather the bit pattern 0000 0000 0100 0001. But for convenience, we denote it in hexadecimal notation and say “hex four one”. In decimal this corresponds to 4*16+1 = 49, i.e. fourtynine. Let’s store this “A” at the first location in my buffer. Well, I have not told you, but I have allocated 3 consecutive words in main memory and call it “buffer”. I use this buffer to collect important stuff I am getting from the standard input. The first location of this buffer has the index 0. Computer people like to start counting from 0. Therefore we should rather be precise and say that we put the “A” at the “zero-eth” position of the buffer. OK. On to the next value from standard input. It’s the ASCII-equivalent of the character D: 0x43. I copy it into the buffer next to the “A”. On to the next value from standard input. We’re getting another “D”. Copy it next to the two other characters in the buffer. We now have “A”, “D”, and “D” in the buffer. On to the next value from standard input. It is a blank character. Well, it seems that we got the first “word” finished. Let’s call it the first “token”. Let’s hope that I can identify this token. What I have not told you yet is that I have prepared a list of 7 3-letter tokens inside main memory. These are “HLT”, “ADD”, “SUB”, “AND”, “XOR”, “SHL”, and “SHR”. Actually, I have stored the ASCII equivalents of these tokens; and since I know that each token consists of three characters, I just put them next to each other inside main memory. In main memory I thus have “HLTADDSUBANDXORSHLSHR”. OK, what was I up to? Oh yes, I wanted to figure out whether the contents of the buffer can be found in my list of known tokens. I start by comparing the first character in the buffer with the first character in my list of tokens. Is “A” equal to “H”? No, definitely not. Apparently, the comparison with “HLT” is wrong. Let’s try with the next token in the token list. Its first character starts at location 3 (when starting to count with 0). I compare my “A” from the buffer with the character at location 3 in the token list. “A” equals “A”. Starts nicely, doesn’t it? Let’s compare the first “D” from the buffer with the character at location 4 in the token list: “D” equals “D”. Wow. No on to the third character of the buffer, the second “D”. We need to compare it with the character at location 5 in the token list. Super – with this third comparison we now know that the token in the buffer can be found in the token list. In fact it is the second token in the token list. But since we have numbered the tokens in the token list with 0, 1, 2, …, 6, we call it the token with index 1. The translation of this token into TOY machine language starts with a 1. Thus, we already know that the machine command looks something like 0x1???. Whenever I identify a token other than HLT, I know that I have to continue with reading the standard input for finding the rest of the machine instruction. What’s the next character from standard input. Its another lousy blank. Forget it. Forget it. But here comes the long awaited “R”. Let’s store it in the buffer at location 0. Read one more. Its the value 0x31. This is the ASCII equivalent of 1. Into the buffer at location 1. Read one more: a blank character. Seems that we got another token finished. We know that it is something like R0, R1, R2,…, RA, …, RF. We check the buffer. The first letter at location 0 is in fact an R. Perfect. If this were not the case, we would have stopped our activity of scanning the standard input and trying to translate the input to TOY machine language. We just would  have … what should we have done in this case? Maybe we output 0xFFFF and quit. This is not a very sophisticated error message, but anyway. TOY is only a toy. However, we have an “R” at location 0 in the buffer. What’s next to it? It’s a 1. With this we now know two hex digits of the machine instruction: 11??. Let’s go on with reading words from standard input. I a getting rather tired from telling you this story. Can you continue yourself without my help? I am sure you can. Think in terms of for-loops, while-loops, if-statements, simple assignments, additions, subtractions, shifts, or logic expressions. Write down your thoughts in detail. Learn to code your ideas in the language C. Compile this code and try it out. Test with simple test data first. Later with more complex ones. Start early to make the deadline of handing in your assignment.

I wish you all the successes you deserve with your work on assignment 1.

carview.php?tsp=

10 secrets to be best in RNO 2017.

Welcome to this semester’s edition of “Rechnernetze und -Organisation” (RNO).

RNO is a compulsory course for bachelor students studying the degree programs
“Software Development and Business Management”. 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 3 teaching assistants Florian Michelic,
Arwin Roubal, Vanessa Sereinig, and myself, Karl C. Posch.

michelic-1roubalsereinig

The course web page can be found at https://teaching.iaik.tugraz.at/rno/start.
There you can find all course material.

On the course web page you can also find all the meeting dates. We start on Wednesday,
March 8th, in lecture hall i12.

In this blog, you can find postings related to the course.  I have started this blog about three years 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.

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

I welcome you all to this course.

10 secrets for smart studying

(1)
Don’t miss the start of the course.

(2)
Be critical to yourself if your brain tells you that you already know the course’s material.

(3)
Start early searching for group members that fit your personality, are trustworthy, and interesting to work with.

(4)
Get your calendar and make a reservation for all the weekly meetings of the course.

(5)
Even if the deadline seems to be far away: Start working on the practical now. In particular, if you have no idea about how much time it will take you to do the exercise.

(6)
Consider to start reading the course’s text early. Best would be, if you read the text before the teacher talks about it in class. With such a behavior you would be at least one step closer to professionalism.

(7)
Whenever you come across some technical detail in the course material which puzzles you, you should promise to yourself to act on this. Ask. Talk with someone about it. Work on this issue. Don’t let the problem live long. Kill it.

(8)
Even if you think in the beginning that the course is hard, keep up trying. You will most likely soon notice that the initial hurdles will transform into something which is called “getting into the flow”.

(9)
Never ever think that you should treat lecture and practical as two separate work units. Always consider them as two sides of the same medal. You should work on both, lecture and practical, simultaneously.

(10)
Experiment, experiment, experiment. Make many errors. Learn from your mistakes.

carview.php?tsp=

KU RNO: The results of the class of 2016

Check out this year’s result of the “Konstruktionsübung Rechnernetze und -Organisation”. Above you can see the chart with the grades of all students who have made it all the way to the final presentation. We believe that this is an excellent result. Congratulations!

199 students have registered for the course. Out of these, 41 showed no response at all. This leaves us with 158 students who get a grade.In the chart below you can see the relative size of the various performance groups.

rno_ku_results_july2016_1

Thank you for your engagement in the course. I think, as a group, we did a good job. Especially, I would like to thank the excellent teaching assistants Martin and Rene for handling the course with superior quality. I am sure that you also agree to this.
rene_and_martin

I wish you a pleasant summer.

 KC Posch

carview.php?tsp=

Results of the final exam 2016

Above you can see the distribution of the exam grades of last week’s final exam.

Many of the 2nd-semester students took the chance to finish the course right at the end of the semester. We would like to congratulate you for this decision; I consider it as good habit to give it a try right away. And as it turns out, many of you were successful.

In addition, we had also some other students, more seasoned. All in all, 70 student took the exam. This is the same number es last year.

There were 2 groups: Group A on Thursday, and group B on Friday. You can find the exam questions on the course web page and also here: Group A, Group B. Check out the distribution of grades in the chart below.

rno_exam_results_july2016_2

Apparently, it seems that the students in group B had it harder than those in group A. I have been thinking about the rather high amount of bad grades in group B.  I could identify a significant reason in the fact that many students chose to learn from a bad and incorrect template answer provided by some source like the “Prüfungsbeispielesammlung” or the like. Although I try to warn students from merely uncritically copying other people’s suggested answers, this warning does not seem to have enough impact.

It seems that the only cure for this problem is to have new questions for each exam. Then the desire to just look at other student’s suggested answers will drop; at the same time, the need for checking out the teacher’s suggested material will increase. Let me explain with an example: Despite the fact that I have tried to prepare all students participating in the exam in class during the last two weeks, less than half of the 70 students who took the exam showed up in the classroom. Isn’t this embarrassing?

In the picture below you can see the average points (out of a maximum of 25 points) students got in total:

rno_exam_results_july2016_4

You can see that, for instance, question 2 in group B was considered a hard question. In contrast, I thought that giving a question clearly related to the exercise 2 of the practical might be easy for many of the students.

The answers to question 4 of group B did also not score high. The average was just 11 points out of 25. An analysis of the wrong answers to this question shows that many of the students apparently have used a template answer which was wrong. Thus, unfortunately, many students gave a wrong answer to the nature of an “interrupt” and how the CPU deals with an interrupt in the context of the “fetch/execute/check_for_interrupt loop”.

Below I show you a final chart with the results of students who are in the second semester of their bachelor program. Apparently, this sub-group of students performed considerably better than the total group:

rno_exam_results_july2016_3
In case you would want to check out the exact points you got on each problem, come to my office. But, please, only after August 9th. Until then I will be rather busy and also out of office.

Before I wish you relaxing summer holidays, let me remind you of the opportunity to evaluate the course: both, lecture and  practical, are still open for a couple of days to get evaluated.

We really like to learn about your opinion. So, please, go ahead an evaluate. Thank you.

I wish you all a pleasant summer time.

Karl C Posch

carview.php?tsp=

KU RNO 2016: First statistics and some comparisons

Many of you have been working hard within the first couple of weeks of RNO. In this
posting I would like to give you a statistical overview of the submissions to exercise 0 and exercise 1. In case you want an interpretation of the graph above, read the text towards the end of this posting.

All in all, we have 199 students registered for the practical. This is slightly less than the 220 students registered for the lecture.

In the picture below you can see the distribution according to the immatriculation number. The largest group are the students in their 2nd semester.

ku_rno_2016_1

We got 158 submission to assignment 0 or assignment 1. These students will get a grade.

41 students did not submit anything. I dared to remind all students without submissions right after the submission deadline for assignment 0 by sending them a letter. In this letter I kindly asked them not to forget to submit; I also asked them for reasons in case they  do not have the intention to submit at all.

9 students replied and explained their reasons for not submitting. I wonder and worry about the remaining 32 students who did not react at all; after all, this group amounts to 16% of all registered students.

133 students submitted assignment 1. Check out the submission rate sorted by the immatriculation year below.

ku_rno_2016_2

I have automatically tested all submissions to assignment 1 with the test described in the specification. Below you can see the success rate for this simple test in relation to all submitted solutions. In this test I have only checked the output of the TOY machine code.

ku_rno_2016_3

If we look at the success rate based on all registered students, we get a rather disappointing picture. See below.

ku_rno_2016_4

For instance, less than 20% of all registered 6th-semester students have mastered  assignment 1; considering the fact that assignment 1 has been very similar throughout the last 4 years, this is really disappointing.

Let us have a look at some details. In the pie chart below you can see that 75 submissions have passed the basic test. 58 submissions did not pass the basic test.

ku_rno_2016_5

The bulk of the student population of RNO consists of students of “Software Development and Business”. These are 146 students. 46 students study one of the teacher’s training programmes.

ku_rno_2016_7

In the following, I compare the performance of students of “Software Development and Business”only. From the picture below you can see that the 2nd semester students perform best: more than 50% of the submissions passed the standard test.

ku_rno_2016_6

Let me finally make a somewhat delicate comparison. I was curious how the students of “Information and Computer Engineering” (ICE), “Computer Science” (CS), and “Software Development and Business” (SWD-BM) in their 2nd semester perform relatively. All these students had a 1st assignment based on the same idea: Start with a relatively simple problem, code it as a C-program, compile this C-code manually to TOY assembly language, and test the code on Visual X-TOY. The students of ICE and CS do this assignment within the course “Rechnerorganisation”. Their deadline for handing in assignment 1 was already on 21st of March. The deadline for assignment 1 for the students of RNO (“Rechnernetze und -Organisation”) was on 15th of April, i.e. roughly 4 weeks later.

In the graph below you can see the relative performance of the three groups.

ku_rno_2016_8
Make your own conclusions about this comparison, or about the outcome of this comparison.

So much for all that jazz. I hope that you are keen to work on assignment 2.

Some tips: Start early. Don’t give up. Try out all the examples you find in the course material before you dive into this year’s assignment problem. I want you to understand the full beauty of x86 assembly language.