Software Design and Modelling

Welcome to the OLD SDM home page.

The new page is on Learn (with public access). I'm leaving this one here for the benefit of anyone who wants to see the previous version, e.g., to read ahead on the Schedule page, into material I haven't updated for this year yet. Be careful though: I updated this front page for 2018, before I committed to Learn, but many of the links point to the old versions.

This course has a cap of 100 students, because that is the capacity of the lab we will use. Priority will be given to students for whom it is compulsory. Other than that it will be first-come, first-served (but I think we are unlikely to hit the cap in any case).

The course is available to third and fourth year undergraduates, and to MSc students, who have the appropriate background (fluency in Java or a closely related language; basic knowledge of software engineering including UML).

Based on the feedback last year, I think you're most likely to enjoy this course if you:

News and announcements

Official course descriptor

Here is the official course descriptor for SDM.

(Emerging) Frequently Asked Questions

  1. Q: I've never learned any UML, should I do this course?
    A: No, I don't recommend it.
  2. Q: I've never learned any Java, should I do this course?
    A: If you are thoroughly fluent in a closely related language such as C++ or C#, you may; otherwise, no, I don't recommend it.
  3. Q: Isn't there any coursework?
    A: There will be no for-credit coursework apart from the assessment in the week 6 lab, see under Assessment below.

Lecture and lab schedule

The course begins with the lecture at 17.10 on Tuesday of Week 1, 18/9/18: the lab will begin in Week 2.

There are usually two lectures each week (Tuesdays and Fridays at 17:10 in S1, 7 George Square), and one guided lab session (Tuesdays 9:00-10:50, Appleton Tower Lab 6.06, starting in Week 2). All of these are compulsory: note in particular that, unlike in some other courses, the lab session is something you must attend. It is just as important as lectures.

However, as (a) we have more lecture slots than the course has lectures (b) I have some travel commitments, it will sometimes happen that a lecture slot won't be used for a lecture. I may give you something specific to do instead, or it may just be a chance to catch up and/or work independently. I already know that there will be no lecture on Friday of Week 1 (I'll give you some self-assessment material and some pointers to how you can fill in any gaps), and no lectures in Week 5 as I'll be away. (I expect that there will be a consolidation lab, run by my TA, i.e. no new material but a chance to sort out anything you need to before the Week 6 lab assessment.)

The detailed material of the course will be revised as we go, but for people who like to read ahead, the material from the last presentation of the course is all available at the Schedule page. Provisional topic plan:

Week Topic
1 Introduction to design and modelling
2 Relating (Java) code and (UML) models
3 From requirements to models
4 Whence and whither UML? Big picture and history
5 Consolidation
6 Lab assessment. Design principles and patterns
7 Principles of dynamic design
8 Domain specific languages
9 Model driven development
10 The future of software engineering
11 Consolidation
I hope that there will also be at least one guest lecture: date to be worked out.

Communications and feedback

There is a Piazza group for this course: (sign-up link) you are strongly encouraged to join it and contribute. This is the best place to ask questions and discuss matters relating to the course. If your question relates only to you personally, please email me.


The lab session in week 6 will be devoted to an individual exercise, worth 50% of the course credit. This will focus on the first three learning outcomes (see official course descriptor for SDM). This aims is to ensure that everyone is competent with these key skills on which the rest of the course depends. The questions will be similar to questions covered in the labs beforehand. It will be "closed book" and you will not be allowed to access the Internet; however, you will be given access to a copy of the UML standard (and possibly other material: if anything would be particularly useful, let me know). Sample instructions and question types.

There will also be a written exam, worth the other 50% of the course credit. It will focus on the last two learning outcomes (plus the "on paper" part of LO2). Note that the exam will take place in the December diet. The format will be a compulsory question 1 comprising a number of short parts, followed by a choice between two other questions. Here is a sample paper and a few notes on it.

You can get the actual paper for the 2016 version of this course from the university's exam paper site. Here are a few notes on how it was done. However, since it's the only real exam paper that exists for this new course, you may well find it useful to avoid looking at that until you come to do your revision, at which point you might like to do it as a practice paper.

This page is maintained by Perdita Stevens (

Home : Teaching : Courses 

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