This website is a work in progress

Browse Brian’s Bookshelf

Please put the books back where you found them and switch the light off when you’re done

  • Projects General Information

    Preliminary Contact from Propective Students

    During the project selection process, there is an online form for prospective students to complete. Please use the form instead of emailing. If you are interested please study this ‘book’ carefully and please do as it asks. Put ‘I 😍 📧’ in the Test question of the contact form.

    Me as your supervisor:
    You can expect (many) (usually long) emails. I like writing. I also like being interested in your project — expect (long) emails about this. I like attention to detail — expect (long) emails about that too. I was brought up with ‘if it’s worth doing, it’s worth doing properly’ so I am always seeking ways to make improvements. I will make more suggestions for enhancements to your project than you can fit in the time available because that is what my project supervisors did to me — and I am all the better for it.

    Fictitious yet somehow entirely plausible quotes from imaginary former students:

    He taught me an engaging writing style. Paige Turner He gave me plenty of momentum throughout my project. Stan Still He helped us overcome obstacles and produce a project that opened doors. Barb Dwyer & Dawn Hobbs As an NLP expert, he knows a lot about trees. Tim Burr He does have a sense of humour but he wasn't kidding about the emails. Jo King

    You as my project student:
    You need to enjoy reading emails and feel comfortable writing regular replies with honest updates including problems and mistakes. I expect you to use plain text for information, version control for everything, and LaTeX on Overleaf for your report (shared with me). Text file manipulation skills, especially from the command-line, are always handy. You need to (learn to) use appropriate tools properly especially an editor or IDE. You must also look constantly for improvements, expansions, and increased usability.

    Early on you need a reasonable idea how you will define and evaluate ‘success’ in your project. Ideally you should use an end-to-end approach instead of top-down or bottom-up. You need contingencies for when things go better (or worse) than expected and you find yourself expanding (or shrinking) your goals.

    When initiating contact, please include information on how much (or little) the project fits your existing skills, experience, and knowledge. There’s no need to be shy about gaps in your knowledge or be embarrassed about any courses you’ve struggled with: this is all about learning and improving. It’s less about how good you are now and more about how much better you can be. Please tell me what you expect to learn and improve from undertaking your project including any transferrable skills.

    To demonstrate you have these instructions, click the fifth word in this paragraph to reveal a code to include in your communications with me otherwise I might consider you unsuitable for my projects.

    Other Advice

    Two of the costliest mistakes students make with projects are spending (far) too much time writing code yet (far) too little time writing the report. You should assume that only the parts of your practical work described clearly in your report will gain marks.

    A typical major mistake with the report is not telling us what you have done — it is hard for examiners to give marks to something they don’t know you’ve done. Another mistake is telling us what you have done but not what you have learnt. It doesn’t matter that parts of your project did not work: what really matters is showing what you’ve learnt from those problems.¹ Mistakes make the best teachers.

    ¹ Note that I am ‘allergic’ to the term ‘issue(s)’ in this context so please call a problem ‘a problem.’

    As a minimum, I expect my project students to do or attempt the following:

    1. The use of engineering requirements
    2. Finding and following excellent guidelines for designing interfaces, like these
    3. Suitable contrast in any GUI for users with low-vision
    4. Any interface to be suitable for users with colour vision deficiency (colour blindness)
    5. The carbon footprint of your end product
    6. Test for statistically significant results where appropriate
    7. Build using an end-to-end approach (tip 68) and make a minimal working example (MWE) as soon as possible
    8. Design one or more overview diagrams of the project as soon as possible
    9. Conduct a usability study (if appropriate)

    I urge you to write the user guide before you code your interface; then code the interface to match the instructions. This greatly increases the usability of the final software.

    Another trap is trying to solve every problem you encounter, so stick to the project’s main aims. While you will meet problems head-on and defeat them, be prepared to circumvent or simplify some problems. You might even need to adjust the project’s goals.

    Do your best to have lots of small goals with short deadlines. Build a contingency of about two weeks into your timetable to allow for unexpected yet entirely predictable problems: distractions, anxiety, tiredness, and illness. Never forget: ‘simple’ software simply never is, tools rarely integrate smoothly, and there’s always one more bug.

    Turn your presentations into PDFs so you can be more confident that they will display as you intend on another computer. Use more graphics and less text in your slides. Read and follow advice from Edward Tufte and Michael Alley.

    Choose professionally designed fonts that were intended for the exact purpose you want. Check professionally written reviews of fonts by other font designers. If you don’t believe that is important then read the short story by Mark Twain How I Edited an Agricultural Paper Once — it will help if you have a very basic knowledge of agriculture and farming.

    Learn about colour theory to enhance your designs. Use websites, like those by paint manufacturers, to help create colour-matched designs. Check your results on WebAIM and colour-blindness simulators.

    Ensure you make multiple regular backups and keep them physically separate in case of flood, fire, or theft. Be careful about putting your work on public-facing websites: assume cloud storage is public.

    If you are intending to use your own computer for a computationally intensive project or running a virtual machine, it’s worth replacing the thermal paste on the CPU and GPU. I have had 3 previous project students whose own laptops were damaged or destroyed by overheating running experiments that took days or even weeks to complete. Try free software to monitor computer temperatures. If the temperatures don’t drop rapidly when the computer is idle, you probably need new thermal paste.

    💻🔥 💻🔥 💻🔥
    (artist’s impression)

    Requirements and advice for projects.

    Student Projects

    Read Me First

  • 2023 List of MSc Projects

    First read my ‘book’ Read Me First.

    Project details on these pages supersede information on the official DPMT pages because those versions cannot be updated.

    List of projects:

    1. Interactive browser-based guide map of a university building
    2. Gaming the system: make an educational game about life with disabilities

    Because the many design elements in these projects will take considerable time, you must have substantial programming experience. You must either have an undergraduate degree in Computer Science or be able to demonstrate ample experience in browser-based programming. You will need to be comfortable setting up a virtual machine with web server. Ideally you will already know ECMAScript, CSS, and HTML but if you’re a good programmer, that’s not essential. Ideally you should try to make as much use of CSS as possible. A retro 8-bit design like Gather Town is cool or something isometric.

    You can choose which disabilities you want to accommodate and that can include hidden disabilities. The map should work in any modern browser — not just Chrome. It definitely needs to work in Firefox. You can persuade me about running it some other way as long as it’s extremely easy to install and doesn’t require a million other things installing as well.

    People with additional needs should be the first not the last to be considered when designing something for general use. “When we design something that can be used by those with disabilities, we make it better for everyone.” [attributed to Don Norman] By making a computerised map which is easy for those with disabilities to use, you will be making it easy for everyone to use. If it’s easy to use, people will use it.

    You might not have not any disabilities but you are very probably a “temporarily able-bodied people” [Hale Zukas]. As former World Health Organization Director-General Dr Margaret Chan says: “Almost every one of us will be permanently or temporarily disabled at some point in life.” Whenever you’ve been unable to do something you normally can because of an injury or illness: that’s a disability.

    1 Interactive browser-based guide map of a university building

    Produce a configurable, intuitive, easy-to-install tool that helps people with and without disabilities navigate round one or more University of Edinburgh buildings. This map is to help people with disabilities find a suitable path to their destination.

    2 Gaming the system: make an educational game about life with disabilities

    Make an educational game showing the problems, and potential solutions, faced by someone with one or more differing disabilities as they try to navigate one or more aspects of everyday life. The focus could be on accessing facilities specifically at the University of Edinburgh or about navigating between home and university. You are welcome to suggest and develop other scenarios.

    My list of MSc projects.

    MSc Projects


  • Software & Reading Worth Considering

    Software choice is personal. To be a productive Computer Scientist you should be highly fluent with at least one fully configurable editor, at least one IDE, and at least one shell or command-line language. Learn how to use command-line interfaces and learn virtual machines and containerisation.

    Explore plugins and skins for software to increase functionality. Learn its short-cut keys to increase productivity. Prefer software that respects privacy.

    If you’re doing web programming then WebStorm and The Mozilla Developers Network are your new best friends. For CSS look at Tailwind, Flexbox Froggy, and Grid Garden.

    Learn how to undelete files and how to avoiding deleting files in the first place. Also learn how to take proper backups of your work and use version control. Use a file compressor that handles modern archives.

    Write your documents in LaTeX so they look altogether more professional. Investigate high quality free fonts specifically designed for the type of task you want to use them for — see what the creator says. Use proper advice for how to pair fonts. Turn your presentations into PDFs so they are more reliably displayed on someone else’s computer.

    If you only ever read one Computer Science book, then make it The Pragmatic Programmer by Andrew Hunt and David Thomas.

    ISBN 978-0-135-95705-9 (2019).

    At the very least, find an online list of their tips and put some into practice, for example:

    Tip 25 Keep knowledge in plain text
    Tip 68 Build end-to-end not top-down or bottom-up.

    Don’t Make Me Think by Steve Krug. Essential reading for designing interfaces.

    ISBN 978-0-321-96551-6 (2014).

    The Design of Everyday Things by Donald Norman. Essential reading for designing.

    ISBN 978-0-465-06710-7 (1988).

    The Craft of Scientific Presentations by Michael Alley.

    ISBN 978-1-4419-8279-7 (2013).

    Publications on analytical design and visualisation by Edward Tufte.

    Machine Learning by Tom Mitchell (no relation) is excellent for learning essential concepts.

    ISBN 978-0-071-15467-3 (2013).

    Practical Statistics for Medical Research by Douglas G Altman is the perfect guide to learning applied statistics even if you are not using them in medicine. The book is brilliant for learning tests of statistical significance.

    ISBN 978-1-584-88039-4 (2020).

    The Mythical Man Month by FP Brooks is a classic for anyone in project management.

    ISBN 0-201-83595-9 (1995).

    Some books are worth reading.

    Software & Reading

  • English Language Advice

    This book is still being written.

    Don’t worry if you don’t understand every word in a lecture: just keep going. It shouldn’t be necessary to watch a recording of an entire lecture more than once although you will sometimes need to watch small parts of a lecture multiple times.

    You can improve your long listening skill by watching English-language films. Watch each film all the way through without stopping. You can use subtitles but they must be in English otherwise you will reading instead of listening. You will probably need to have watched 10–12 films before you really notice an improvement in your long listening ability.

    Tips for improving your English.

    English Language Advice

  • Teaching Duties 2022–22

    Semester 1: Inf1A
    Semester 2: Inf1B and IPP

    My teaching duties for the academic year.



  • Website Acknowledgements

    If you wish to make an apple pie from scratch, you must first invent the universe. Carl Sagan

    This is my justification for building this website (v 22.1.31, layout by Siqi Su, a former NLP project student) from others’ components, notably:

    Animated books by Mary Lou
    Shelf by Tobias Bleckert
    Lightbulb by Jon Kantner

    I am still working on this website when I have time — not just the content but also functionality, platforms it works on, realism, and accessibility, all while keeping it intuitive and interesting. I want to make it CSS only but it looks like some JS is inevitable for the books.

    Suggestions, improvements, and bug-fixes welcome.


    Archivo Narrow by Omnibus Type

    Arvo by Anton Koovit

    Iosevka by Belleve Invis

    Merriweather by Sorkin Type

    Montserrat by Julieta Ulanovsky

    Raleway by Matt McInerney

    Rosario by Omnibus Type

    Acknowledging the others’ work which has been used on this website



  • My Little Black Book Open Envelope Chat Phone Brian Mitchell

    I am a University Teacher, mainly providing support teaching and behind-the-scenes technical magic.


    I am a Birmingham University inclusive educator

    I am an Inclusive Educator certified by The University of Birmingham.

    If you use traditional British classifications, I am a ‘working class’ academic, a Northerner, and from the 93% of UK university graduates who went to a state school. Both my schools struggled with underfunding but some of my teachers were excellent, inspiring me to be the best teacher I can.

    I feel truly at home now I’m at Edinburgh University but getting here wasn’t easy. I suffered 7 years of bullying at school for being ‘clever’ and from imposter syndrome as a postgrad for not feeling clever enough, even though I was and I earned my place. After an awful start to my undergrad studies, the rest was great and my only regret that I realised far too late there’s so much more to university than just the studying. My ERASMUS placement was a dream come true. It gave me the utmost respect for anyone studying abroad, especially in a foreign language.

    My background and skills include:

    ├─Computer Science
    │ ├─Artificial Intelligence
    │ │ ├─Applied Machine Learning
    │ │ └─Natural Language Processing
    │ │   ├─Computational Linguistics
    │ │   │ └─Ambiguity Resolution
    │ │   ├─Language Engineering
    │ │   │ └─Named Entity Classification
    │ │   └─Parsing
    │ ├─Programming
    │ ├─Tools
    │ └─User Interfaces
    │ ├─Grammar
    │ ├─Modern Languages
    │ └─Technical Writing
      ├─Academic English and Study Skills
      └─Computer Aided Learning

    Brian’s address book


    Brian Mitchell