Read first








It actually takes ten years to become a really competent programmer. What we're doing is making you basically able to be taught.
- a harsh but fair tutor








AWESOME FEATURES GREAT JOB:
  • Absolutely entry-level: the only prerequisites are high-school maths.
  • Large 24-hour computer lab exclusively for postgrads./li>
  • The core languages are Java, Assembly, and SQL.


You should by now know that a course's teacher is far more important than the topic’s apparent appeal. All things can be made to reflect on all things. (This is the upshot of human pareidolia.)

No Winter exams: all of your 11 courses are examined in May. Also, the programme grading is heavily weighted towards these exams. This makes semester 1 very easy, if you’re one of the ~10% of people who just slot into programming with ease.


********************************************************************

SEMESTER 1





SEMESTER 2



********************************************************************



Excellent teachers I was taught by:

  • Alessandro Vinciarelli (Introduction to Programming): funny, charismatic, analogical. Take any course he gives. Not actually a computer scientist - an analytical social scientist of the highest order.
  • Lewis Mackenzie (Systems and Networks): Earnest, literate. Gave a philosophically and scientifically sophisticated treatment of the low-level side (the processor).
  • Simon Rogers (Advanced Programming): extremely able and intolerant of waffle.
  • Karen Renaud (Human-Centred Security): An enjoyable psychology course. Lectures frequently involve non-traditional engagement and expert guests.
  • Chris W Johnson (Safety-Critical Systems): Extremely competent alumn of NASA and the MoD; was several times called away to e.g. rescue European aviation.
  • Leif Azzopardi (Internet Technology): hyperactive, scathing, scatological. Really not for everyone.


Wednesday 13 May 2015

Semester 2


    Advanced Programming

    (required course for Software Development)
    Really just ‘More programming’. Concurrency, distributed systems, couple of design patterns, Git, boom. Zooms out from single Java classes into design and interaction. Good hearty stuff.

    Instructor: Engaging, competent, approachable.
    Inherent interest: Medium
    Slides: Good, digressive.
    Assessments: Midterm exam, but with questions detailed a week beforehand. 30%
    Marking: Easy



    Algorithms and Data Structures

    (required course for Software Development)
    There is something profound going on here. Sadly not much is asked of us.

    Instructor: Wry, competent. Was handed responsibility for it one week before term.
    Inherent interest: Medium
    Slides: Exhaustive, thus repetitive.
    Assessments: Two small pieces of brain-tickling code: a spell checker and an abstract heterogeneous Relation. 30%
    Marking: Medium.


    + Elective: Cyber Security


    Lectures are poor and the maths not well-developed. But content is of a remarkable variety and tastiness: we cover all the traditional ciphers, ENIGMA, information theory, modular and polynomial arithmetic, pseudo-randoms, Feistel’s DES and AES, public key infrastructure including RSA and Diffie-Helman (with a tiny detour into NP-completeness), the death of Chip-and-PIN, basic web architecture, Kerberos, why anti-piracy fails, Bell-LaPadula secrecy. Pretty up-to-date, too, with Heartbleed, SHA-3, and DUAL_EC_DBRG, PRISM.

    Instructor: Phoned-in.
    Inherent interest: High
    Slides: Long but not self-sufficient.
    Assessments: get to brute force and time-memory trade-off attack some shiz. (mine was a Calvin and Hobbes quotation). 2: cursory essay on security standards. 20%
    Marking: Fair (by which I mean strict)


    + Elective: Human-Computer Interaction


    Chose it because it had no exam.

    Instructor: Imperious, jolly, worrying.
    Inherent interest:Low
    Slides: None. None needed.
    Assessments: Whole course is one pretend-to-be-an academic exercise involving GUI design. 100%
    Marking: Fair (by which I mean strict)



    Requisite: Software Engineering


    Once again, the courses with 'engineering' in the title offer the least rigour and the least intellectual content. (This is a judgment on the department, not on engineers.) Only set text in the programme that you actually need to read, and it’s a good’un: Mythical Man-Month.
    Instructor: Cheery, nervous, ok.
    Inherent interest:Low
    Slides: Detailed enough.
    Assessments: Nice variety – UML, a blogpost. 30%
    Marking: Fair (by which I mean strict)




    + Elective: Safety Critical Systems


    A lot of work but possibly the best course. See here.




Safety-Critical Systems



(Danish plane at rest in a Danish minefield)


A genuine insight into the operation of the world. Really an intro to engineering course, or an extremely applied law course, but thoughtful to boot. (“Why does regulation fail?”, “What is error?”)

Security is about preventing humans trolling you; safety is the more universal attempt of holding off Sod’s Law. Talebian. The field is highly legalistic and militaristic; basically all of the literature is unreadably constipated. Combined with the .

This makes this instructor’s humour and irreverence a godsend. An all-rounder, cynical, funny, and hyper-competent. He spent a week away unexpectedly, saving European aviation from a cybersecurity crisis.

There’s not much maths, and surprisingly little software engineering. It is nevertheless a hard course: you’re in with 4th year undergrads, the slides are intentionally terse and lacklustre, and both coursework and exam require a bunch of outside reading and synthesising thought (guesswork). There’s a lot of material, mostly indigestible.



So long, Ariane.

Instructor: Omni-competent, sarcastic.
Inherent interest: High (subject), very low (safety discourse)
Slides: Terrible.
Assessments: Very challenging ex nihilo safety tool development with minimal guidance. Lots of work for 20%
Marking: Fair (by which I mean strict)


BIG LESSONS
  • No-one knows how to write absolutely safe code.
  • And even if they did, they wouldn't be given the budget to pull it off; lives are only worth a million quid.
  • Even if they did, the environment would still produce unsafe behaviour.
  • Testing is inductive and cannot assure.
  • 10 years to approve new aviation software. Planes stay in the air because of all the money thrown at them.
  • Updating software generally increases the risk of failure.


  • **************************************************************************

    The world is a scary place. Every modern car has two separate computer networks, FlexRay and CAN, which link up an average of 40 devices, made by perhaps 20 different manufacturers. To brake, my foot’s pressure has to trigger an actuator, translate that into binary, pass the signal through the CAN network, translate it back and only then activate the brake pads. Note that police reporting forms have no box for “crash due to network failure”. I don’t drive anymore.

    If you’re ever at a job interview and the manager tells you that they can measure software risk in their business, leave. Leave, or you will end up in jail.

    What happens to the regulator if their stupid decision kills people? Nothing at all. They are the Crown.

    Remember that NASA – the only people qualified to evaluate SpaceX’s safety cases – are in competition with SpaceX. So SpaceX refuse to disclose their docking code.

    Exception-handling code is an admission of guilt. Build it better!

    Safety standards are written by old washed-up people who have given up on everything else.

    As an engineer, one is quite happy with a total system failure; it’s easier to do forensics on.

    Consider this: when a British judge puts on a wig, this is to signify that they are carrying out their judgment on behalf of the Crown – and, given the divine mandate, ultimately literally on behalf of God. This is the mindset that engineers must deal with.

    *indicating his own slides, which are quoting IEC 61508* Ach, this is just language, though.

    Regulators get paid about 40% less than their corporate counterparts; this means that the general ability of regulators is sub-par, so you get a permanent state of regulatory lag.

    The industry that lies the most – by far – are the railway operators.


Semester 1


    ‘Programming’ (Introduction to Java)


    From the very top (‘how to assign values to variables’ and all that). Even so, this made me feel like a child for the first time in a decade, by which I mean ‘utterly incompetent, scared, and without the means to redress either of these things’. Teaching is extremely up to the task, though.

    Topics: the basics, Object-orientation, inheritance, GUIs, recursion.

    Instructor: Funny, charming, slightly ridiculous.
    Inherent interest: Medium.
    Assessments: 50%
    Marking: Easy.



    Information Systems and Databases


    Absolutely essential stuff, but dulll. A misnomer, too: the first third is basic web development (HTML, CSS, XML, tiny dab of PHP too). There’s not a lot to it – my exam notes came to four A4 pages overall – but the key bricks of it ERD, SQL, normalisation are frustrating enough to pad it out. Databasing actually has some intellectual interest – how does one cope with dozens of people read and changing the same data at once? – but not as presented here.

    Instructor: Competent. Sympathetic (as students are to other students).
    Inherent interest: Low.
    Slides: Long but far from self-sufficient. There are cat photos.
    Assessments: Linked series of assessments where you design a website with an associated database. Lots of freedom, lots of painful uncertainty. 30%
    Marking: Fair (by which I mean strict)




    Systems and Networks

    ‘In reality (in the processor)…’

    Circuit diagrams, binary arithmetic, the hardware architectures, : the reality that all the other courses talk two to five levels of abstraction from. Lewis Mackenzie was a physicist, and this raw contact with the reality of the thing shines through – at one point he calculated the distance travelled by light in a nanosecond in order to demonstrate why miniaturisation has been the driving factor in processor improvement, etc, etc, etc.

    Instructor: Inspiring, earnest.
    Inherent interest: Medium
    Slides: Everything’s there. No extra reading.
    Assessments: Have to do two assessments in Assembler, which is still not quite a mere history lesson. 6811. 20%.
    Marking: Fair (by which I mean strict)




    Requirements Engineering


    The dreary managerial and practical side: you will code for dullards all your career, here is how to talk to them. Some flashes of spirit: “Developers are the nodes that do the work. Managers are the nodes that collect the money”. Skippable.

    Instructor: Two, both phoned-in.
    Inherent interest: Very low
    Slides: Fairly detailed.
    Assessments: Pair of very tiresome corporate documentation simulations. 30%
    Marking: Fair (by which I mean strict)




    + Elective: Human-Centred Security


    The psychology and sociology of security, rather than the high applied mathematics of it.

    Instructor: Inspiring
    Inherent interest: High
    Slides: Mostly just images and Final Thoughts.
    Assessments: One large and contrived human psychology experiment. 40%
    Marking: Fair (by which I mean strict)


A Selection of Courses and Lecturers




It actually takes ten years to become a really competent programmer. What we're doing is making you basically able to be taught.
- a harsh but fair tutor



AWESOME FEATURES GREAT JOB:
  • Absolutely entry-level: the only prerequisites are high-school maths.
  • Large 24-hour computer lab exclusively for postgrads.
  • The core languages are Java, Assembly, and SQL.


You should by now know that a course's teacher is far more important than the topic’s apparent appeal. All things can be made to reflect on all things. (This is the upshot of human pareidolia.)

No Winter exams: all of your 11 courses are examined in May. Also, the programme grading is heavily weighted towards these exams. This makes semester 1 very easy, if you’re one of the ~10% of people who just slot into programming with ease.


********************************************************************

SEMESTER 1




SEMESTER 2


********************************************************************



Excellent teachers I was taught by:

  • Alessandro Vinciarelli (Introduction to Programming): funny, charismatic, analogical. Take any course he gives. Not actually a computer scientist - an analytical social scientist of the highest order.
  • Lewis Mackenzie (Systems and Networks): Earnest, literate. Gave a philosophically and scientifically sophisticated treatment of the low-level side (the processor).
  • Simon Rogers (Advanced Programming): extremely able and intolerant of waffle.
  • Karen Renaud (Human-Centred Security): An enjoyable psychology course. Lectures frequently involve non-traditional engagement and expert guests.
  • Chris W Johnson (Safety-Critical Systems): Extremely competent alumn of NASA and the MoD; was several times called away to e.g. rescue European aviation.
  • Leif Azzopardi (Internet Technology): hyperactive, scathing, scatological. Really not for everyone.