The exam results came back and the first year is finally over, therefore I have decided to share my impressions about the individual lectures in the first two semesters. Hopefully it will help someone to choose one subject over another, not to make the same mistakes when preparing for the exams that I did, or simply to get the taste of the first year in college. Please bear in mind that all what is written below represents only my personal, highly subjective opinion.

Professor: Philip Wadler

**Functional Programming**Professor: Philip Wadler

*Lectures:* a wonderful introduction to the functional programming. Amazing teaching skills and professor's authority in the classroom - from ripping a T-shirt to reveal a big superman-lambda, to being one of the principal engineers and designers of the Haskell programming language - 10 out of 10.

*Exam:* Final grade is made by a programming class test (10%) and a final exam (90%). The programming class test is pretty straightforward - three simple tasks to test one's basic knowledge of Haskell (things you need to know are the syntax, because it's done on paper, list comprehension, recursion and simple library functions). The final exam is done in front of computer with plenty of time (2 hours) for three simple tasks (e.g. take a list of integers and return the sum of the cubes of the positive numbers in that list). The only catch is that the same problem has to be solved in a couple of different ways: using basic functions, using list comprehension, using recursion and using the higher-order functions, however... at the end of the day - it's still the same problem.

My advice in succeding in this subject: participate in the class' programming competition (see this years competition and my entry). If you'll manage to get something done - you won't need to spend any more time to prepare for the final exam, and I can hardly imagine how you'd get less than an A (my personal result - 99).

**Computation and Logic**

Professor: Dave Robertson

Lectures: a basic introduction to reasoning - propositional logic, concepts of satisfiability, validity and proof, regular expressions, finite state transducers/acceptors, HMMs and probabilistic finite state machines. However, the professor seems to be a little distracted by his other responsibilities (being the Head of School of Informatics) so the lectures aren't as involving as they could be. Be careful about the tutorial exercises as well - many of them contain mistakes, and some of the TA's (master and PhD students) seem to have already forgotten the material quite a bit.

*Exam: *a 2-hour rush through all of material - I remember writing eight A4 pages (that leaves 15 mins per page) on truth tables - inconsistencies, contingencies, tautologies, proving that formulas are equivalent, proof trees (including the negation rules), resolution - normal and clausal forms, transducer/acceptor FSMs, and their equivalence with regular expressions (Kleene's Theorem); HMMs and probabilistic FSMs.

I'm afraid that there's no easy way here - you just have to work your way through the bunch of tutorial exercises and past papers (I managed to drudge away to 89). The good thing is that exams don't change too much and you will know what's expected from you.

**Mathematics for Informatics 1**

Professors: John Byatt-Smith, Antony Maciocia

*Lectures:* a semester-long review of a high school material trying to get everyone up to the same speed. It includes revision of real functions, integers, rationals, real numbers, number bases; differentiation: limits, tangent to a curve, stationary points, inverse functions; exponentials, logs, integral definition, integration methods and the Fundamental Theorem of Calculus; general algebra background: sets, functions, relations, mathematical induction; number theory: GCD, the extended Euclid's algorithm, residues and equations, RSA; counting: permutations, binomial theorem, Pascal's triangle; basic probability: discrete spaces, random variables, expectation, variance, Bernoulli trials, binomial and geometric distributions; entropy, Shannon's source coding theorem and Huffman coding.

It may sound like a lot, but it's more to the breadth than to the depth, really. Plus the lecturers will make all this material quite easy to grasp - just make sure to do your hand-in assignments (15% of the final grade) and do your fair share of the work in the tutorials (that includes asking the questions).

*Exam: *two and a half hours of the hand-in assignment problems. If you've done those and went through a couple of the past years exams (you can find most of them here) you won't have any trouble getting an A (my result - 96).

**Logic 1**

Professor: Paul Schweizer

*Lectures: *with deep regret - incredibly boring. Professor Paul Schweizer doesn't seem to be bothered too much about anything happening in the audience - noises, non-working microphones, or half of the students playing online poker. This is partially caused by Logic 1 being a compulsory course for many School of Philosophy, Psychology and Language Sciences students - and being way over their heads.

It's extremely dissapointing because it could become a very good grounding course in logic (if anyone would pay at least some attention) - starting with the propositional logic and basic concepts, moving on to sematic tableaux, equivalence and adequacy, predicate logic, binary and identity relations and finally touching some of the theories of thruth and non-classical logic.

*Exam: *another two hour rush through all the material - make sure to do as many of the previous year exams against the clock as you can!

I'm afraid that there are no shortcuts here - you'll have to work a lot on your own if you haven't done any logic courses before (my result in the exam - 98. Yes, I have done logic courses before). Do as many exercises as you can find, ask your tutor the right questions and the golden rule - don't leave anything unclear: look it up on the internet, ask your friends or the professor after the lecture. If you'll attend the lecture. You probably won't.