of Computer Science
I supervise various subjects for Trinity College, and lecture on Artificial Intelligence and Machine Learning and Bayesian Inference.
I also regularly speak in the wider media.
Supervisions in 2021/22
The following timetable summarizes the supervision preparation work for the Michaelmas Term 2021 for Foundations of Computer Science and Programming in C and C++. Please complete this work before attending the supervision for the relevant week and bring it to the supervision with you.
In the following, Week 1 starts on Monday 11th October.
Past exam papers can be found here. They are identified below using the format year-paper-question, so for example 2011-1-2 denotes Paper 1, Question 2 from 2011.
A small amount of web searching will no doubt lead to the discovery that solution notes for past exam questions are available. DO NOT READ THESE until AFTER the work is covered in supervisions. If you read them beforehand, then I reserve the right to (a) get VERY cross and (b) make you redo the question using a fiendish alternative approach of my own choosing. Why? My reasons are explained on the right-hand side of this page.
Foundations of Computer Science
An important note...
A few years ago the language used to teach Foundations of Computer Science was changed from ML to OCaml. (Don't ask me why - I'm not sure I've heard a convincing reason!) While these languages are very closely related, and for the purposes of this course the change is essentially one of minor elements of syntax, it does present a problem: we have many years of past exam questions devoted to ML. I am promised that these have been edited to use OCaml, so I hope that by the time you get started the changes will be in place, so it should not be a problem. If it is then please let me know.
Everyone: start attempting the questions in the handout for Foundations of Computer Science. You should continue with these question throughout the term.
Exam questions 1999-1-1, 2006-1-1, 2008-1-1.
Exam questions 2002-1-1, 2005-1-1, 1996-1-2.
I suggest you also start to take a look at 97-1-5. This is generally regarded as challenging, and it may take a few supervisions for you to finish it, but you should definitely aim to do so before the term ends.
Exam questions 2003-1-5, 2004-1-5, 2005-1-6.
Exam questions 2016-1-2, 2010-1-1, 2010-1-2.
Exam questions 2017-1-2, 2019-1-1, 2019-1-2,
Programming in C and C++
As usual, please attempt any questions in the lecture handouts, and any lab exercises that have been set. You are welcome to discuss these in supervisions.
In addition, please attempt exam questions according to the following timetable.
Counting Week 1 as starting on Monday 11th October, we will start supervisions in Week 2:
We will focus on the initial problems and practicals.
Exam questions 2019-4-1, 2017-3-1.
Exam questions 2018-4-2, 2017-3-2, 2015-3-1.
Exam questions 2015-3-2, 2016-3-2, 2019-4-2.
Solution notes are EVIL!!!
Solution notes seem like a good idea, but this is deceptive. Why?
First and foremost, there is the temptation to look at them without having first attempted the problem. This is an extremely bad idea, as once you've peeked, most of the educational benefit that you would have attained by attempting (and possibly getting stuck with) the question is irrevocably lost. Some of the problems we set are hard. That is deliberate, and in computer science many of the problems you meet in the future will be hard as well. The difference is that in the future you will not have access to hints of this kind.
"But!" I hear you protest. "Right now we have them and it helps to get a hint." Fine, but remember this: at some point, the oily, sickly fear of the exam hall will induce cold beads of sweat to trickle down your neck, and at that precise moment, you will thank me for emphasizing the need to be able to complete exam questions when solution notes are not available to you.
Second: solution notes are NOT model answers. They were never written with the aim of serving as model answers; in fact the only purpose they have is as a guide to examiners, not students. There is, at this level, no such thing as a model answer - there are most likely many answers to a given problem, of greater or lesser quality - and the time to accept this is right now.
Third: the supervision system is there for you to use. Solution notes give a hint at one way a question might be done. I can usually provide you with several different ways, the trade-offs between them, and an explanation as to their relative merits. Which do you think is more useful?