COMP61511: Software Engineering Concepts In Practice

This is the web page where you will find news and more information about COMP61511.


The course is led by Bijan Parsia (personal page) and co-taught by Christos Kotselidis (personal page). Bijan's office is 2.88a (you have to go through the outer door to get to the inner door which is what you should knock on) and Christos's is 2.26. Bijan's Skype id is @bparsia.

Coursework and Timing:

The course starts on Thursday, Sep 28, 2017, at 9:00 in room 2.19 with lectures and labs.

The deadline for handing in non-lab based coursework is usually 9:00 am on the Thursday after it was assigned. Thus work assigned on Sep 28, would be due Oct 5, 9:00am.

Some work will be collected and assessed in labs. You will always be informed of these.

Coursework, announcements, feedback, and discussions will be handled either in person or via Blackboard. Be sure to subscribe to the discussion forum.

Late coursework:

If you have mitigating circumstances (either for lateness or for any other issue), you should fill at the mitigating circumstances form and hand it in to the student support office. The instructors and teaching assistants do not grant extensions or resits for coursework directly: You need to go through the mitigating circumstances committee. (Feel free to come talk to us about problems you are having as early as possible. We will help you navigate the system. But we will adhere to the system.) If you do not have mitigating circumstances (or an official arragnment for, say, a disability), then the policy is that you will receive 0 marks for work handed in late, regardless of the reason.

Concerning Literature:

Please note that all books and papers used for this course are available in the resource center or online. If you prefer to buy the books, please note that

Schedule and materials:

Please note that this course unit is only in its third year! We have dropped a substantial number of topics, and added other topics, so please do not rely too heavily on exams, tales, or additional material from previous years!

In general, we will always strive to give you specific support for this class. So, for example, instead of past papers, we give you a practice exam and a revision session. Exams are supposed to change from year to year even if the course doesn't, so are unreliable anyway.

Week Date Topic(s) Resources/Reading Slides & Labs
1 Sep. 28, 2017 Specific topics: Quiz 1 (Q1), Short Essay 1 (SE1) and the first assignment (CW1) are on Blackboard. CW1 has associated lab pages.
Steve McConnell, Code Complete: A Practical Handbook of Software Construction
You should read Part 1 and Chapter 20 (to consolidate the lecture) and Chapter 22. Developer Testing for next week.
Slides (PDF—5.5MB)
2 Oct. 5, 2017 Specific topics: You should read Code Complete, 3.5. Architecture Prerequisite and Chapter 5 Design in Construction. And Making Software, Chapter 10, Architecting: How Much and When? (Lightly! It's tough going. Try to get the gist.) And Understanding Technical Debt. Slides (PDF—5.9MB)
3 Oct. 12, 2017 Specific topics:
You should read Code Complete, Part II Creating High Quality Code and Part V, Code Improvements. Most of the rest of the parts are intimately about code construction and you should read them at your leisure. They are highly opinionated so might not be a fit for you. But as a starting point or default they are very good. E.g., the chapter on documentation (32). And Making Software, Chapter 8, Beyond Lines of Code: Do We Need More Complexity Metrics.
Slides (PDF— 5MB)
Technical Debt Case Study Slides (PDF; <1MB)
4 Oct. 18, 2017 Specific topics: You should read Code Complete, 28. Managing Construction and Chapter 33 Personal Character. Again, these can be read at your leisure.
You should also read Making Software Chapter 26, "Novice Professionals: Recent Graduates in a First Software Engineering Job"
Slides (PDF 1.6MB)
5 Oct. 26, 2017 Specific topics: There are a number of important article linked from the slides this week. Be sure to read them! Slides (PDF 2MB)

Python resources

If you don't know Python it will really help to learn a bit before class starts! We generally prefer Python 3 (3.5 or 3.6 esp). On lab machines, this is available in Linux via the command python3 (plain python gets you a Python 2.x flavour).

There are a ton of online and off line resources for learning Python, including the official Python Tutorial. Think Python: How to think like a computer scientist is also quite good (skip over the UI programming bits) as is A Byte of Python (which is more like a longer tutorial).

There are also video courses, online course, etc. etc. We aren't going to be doing super complicated programming, so you don't really need much more than the official Python tutorial.