## Classes

The most important part of this subject is clearly the programming
you will be doing on your own at home – programming is one of those
skills that you can only learn by doing. Group classes clearly
aren't a substitute for that, but they can still be useful in a
couple of ways:

 1. we will analyse problems which you have encountered while
    working on your own and discuss their solutions,
 2. there will be space for some team work (with the tutor, in a
    pair, in a larger group) and, among other things, get a feeling
    how other people deal with programming problems.

The class is split into two approximately equal segments, each
addressing one of the above points. The first part works as follows:

 • the tutor picks those of your practice exercise solutions that
   are interesting for one reason or another (positive or negative),
   
   ◦ these solutions will be «anonymously» shown on the beamer and
     their pros and cons will be discussed by the group,
   ◦ your task is to actively take part in this discussion (you can
     ask why is something right or wrong and how to do it better,
     you can express your opinion, and of course you should answer
     the questions raised by the tutor),
   ◦ you may claim authorship and explain why you did things the way
     you did them, or even dispute any criticism (of course, this is
     entirely optional),
   
 • in a similar manner, the tutor will select peer reviews written
   in the previous week and discuss them with the audience briefly
   (the structure of the review, which comments are good and which
   are not, whether some comments are missing, and so on) – again,
   you are expected to take part,
 • upon a request, unsuccessful solutions can be likewise discussed
   in a like manner (both practice exercises and exercises from sets
   which are no longer active).

The second part of the class is more variable, but will always
relate to activity points (each week you can score at most 3
activity points).

In the fourth, eighth and twelfth weeks, midterm programming tests
will take place in this space – in those classes, you will work out
an assigned exercise from this collection, without the help of the
internet (just like at the final test); each successful solution
(one that passes the verity test) will be awarded those 3 activity
points for the week.

In the remaining weeks, the second segment will combine activities
based on ‹r›-type exercises from the corresponding chapter (which
particular exercises will be done is up to the tutor, but they may
of course consider your preferences):

 1. You can volunteer to solve an exercises on the beamer,
    where it is primarily your responsibility to figure out and
    write down the solution, though the audience and/or the tutor
    may help you along if you get stuck. You should also explain
    what and why you are doing along the way, and answer any
    questions the audience asks. With shorter exercises, you may be
    also asked to improve test coverage as you go on.
 2. The tutor may assign an exercises for you to solve in pairs –
    the first pair to have a working solution then gets to show
    their solution to the rest of the class, explain how and why it
    works, answer audience questions and perhaps correct mistakes
    that come to light. The 3 activity points will be evenly split
    among the members of the winning team.
 3. Finally, you may solve an exercise together as a group – the
    tutor will write down the code that you come up with; in this
    case, however, no activity points are awarded.
