Pre-assessment notes

OO concepts and terminology

This year, in contrast with some SEOC years, most people knew the term "statically typed": one correct answer is "the type of a variable is known at compile time". One reason for asking is that this can be confused with the concept, occurring in both Java and UML, of a static method or attribute, which is one associated with a class rather than with a specific object of the class. There's no connection between these ideas, they just happen both to involve the word "static"! It's also not really to do with a variable not being able to change type (although that's also, typically, the case).

"Encapsulation": one right answer is "Hiding the details and just providing the interfaces.". E.g., when you use a private attribute in a Java class, you prevent that attribute being mentioned outside the class's code, and so you prevent code outside this class from depending on it. The result is that as the developer of this class, you can change or delete that attribute, and code outside the class won't have to change; this eases maintenance. It also means that if the value of a private attribute ends up wrong, you only have a limited amount of code you have to check to find out how it ended up wrong. This makes it easier to debug problems, again, easing both development and maintenance. Hence encapsulation is a Good Thing. Make details available only on a need to know basis. We'll have more to say about this kind of design principle later.

Advantages and disadvantages of making a subclass: I got lots of answers that made it clear that you understood what a subclass was (which is good!) but the software engineering implications didn't seem to be so well understood. The key thing is that the motivation for subclassing is not about saving effort for the subclass implementer: it's about enabling existing client code that works with the superclass to work, unaltered, with the new subclass. And that is polymorphism (I had few answers to that question and most of them were wrong: see here for a bit more on that). For that to make sense, it needs to be the case that every instance of the subclass can be regarded as an instance of the superclass: the "is a" test that many of you remembered.

I wrote some longer notes on these things in response to last year's SEOC pre-assessment, so rather than repeat myself let me link: see here.

Basic UML

Most people seemed to remember the basics of use case and class diagrams pretty well, and hopefully if you didn't, you've now been able to remind yourself from the revision reading.

The biggest project you've been involved with

Here's the data from this year's answers, for interest. 22 people responded, but not everyone answered every question.

As expected, there are people with a wide variety of previous experience on this course. The most striking thing (yes, it strikes me every year :-) was that experience of working with many people was even rarer than experience of working with a large codebase, or even working with the same project over a number of years. Very few people had worked with a team of more than 15 people: this means you are likely to see the context in which agile methodologies were developed as familiar, and the context in which higher ceremony processes like the Unified Process were developed as strange. Just bear it in mind.

About you

Everyone who answered the question agrees or strongly agrees that you are expecting to be involved in development as your careers. Only one person disagreed that they were looking forward to the course - I hope that was nothing worse than that they expect it may be a bit chaotic, and that I can win them round. Most people feel well-prepared, but aren't expecting the course to be easy, which is a good state to be in. Most of you claim to be well-organised when it comes to work, and show signs (in my crude questioning) of having a growth mindset, attributing your success at least as much to working hard as than to being clever. I just hope I can match up!
This page is maintained by Perdita Stevens (perdita@inf.ed.ac.uk)


Home : Teaching : Courses : Sdm : Preassessment 

Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail: school-office@inf.ed.ac.uk
Please contact our webadmin with any comments or corrections. Logging and Cookies
Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh