David Kendall

Senior Lecturer in Computer Science

Introduction

My main areas of interest are embedded systems, real-time, networking and formal methods.

The key requirement for doing a project with me is that you should be committed to developing a piece of software. If you’re trying to avoid programming as much as possible, you should probably talk to someone else.

The next section gives a list of particular topics that I have in mind for this year. Any one of them could form the basis of an interesting project. If one or more of these topics grabs your interest, do some googling to get a rough idea of what might be involved and then speak to me to develop your ideas further. If you don’t like any of these ideas but you think you’d like to do something in a related area, speak to me about it.

Project ideas

  • Quadcopter The Crazyflie Nano Quadcopter is a new open-source development that offers many opportunities for interesting projects, e.g. developing firmware for the heading and altitude sensors, interfacing a tiny camera, working on algorithms for autonomous flight etc. If you’re interested in these projects, you’d need to be prepared to purchase a kit yourself… and build it!

  • Online privacy and anonymity Online privacy and anonymity are currently hot topics following Edward Snowden’s revelations about the extent of government surveillance of electronic communications. The PRISM / BREAK organisation is already giving advice about what steps users can take to enhance their online privacy. You could use your project as an opportunity to find out more about some of the technical issues involved. For example, you could
    • design and run some experiments using the Shadow simulator to investigate aspects of the Tor anonymity network,
    • develop a prototype P2P anonymity network using Python and its network event engine Twisted, or
    • investigate the use of a probabilistic model-checker for the analysis of anonymity protocols, e.g. see work by Shmatikov.
  • Software-defined networking Software-defined networking is a new approach to networking in which the control and data planes are clearly separated. This enables a more modular approach to the provision of network services than has been possible so far. Scott Shenker gave a nice presentation on the main ideas and advantages a couple of years ago. A project in this area could use Mininet to
    • recreate networking experiments from the literature and compare your results, see, for example, REPRODUCING NETWORK RESEARCH, or
    • build your own network controller to implement a new security policy, for example.
  • Quantum Leaps: event-driven programming for embedded systems The Quantum Leaps software provides a family of lightweight, RTOS-like frameworks for event-driven programming of embedded systems. A project in this area would involve deploying QP on the FRDM-K64F, implementing a small control system using two different approaches, one using QP and another using a more traditional OS such as uC/OS-II, and comparing the approaches, considering performance of the code, ease of development, maintainability etc.

  • Internet of Things The Internet of Things refers to a world where a large number of physical objects are addressable via the Internet. The reference above will give you some idea of what can be done. Your project can tackle some similar problems but you will use the FRDM-K64F as your target device. You will need to integrate a WiFi module with this board, develop a simple sensor application and then use the HTML5 Websockets framework to monitor and/or control the application from the Internet.

The ideas below could also form the basis of a good project. Get in touch if you’d like to discuss any of them with me.

  • Deploy and compare FreeRTOS and uC/OS-III on ARM platform
  • Add support for FAT filesystem to embedded OS. Analyse performance
  • Interface a communications module (e.g. Bluetooth, Zigbee, GSM, GPS, ...) to embedded system development board. Design and implement drivers and API. Test and analyse performance.
  • Develop Controller Area Network (CAN) driver and high-level API
  • Investigate a real-time communications protocol, e.g. Flexray, TTA, TT-Ethernet, MILCAN
  • Design, implement and test 802.15.4 to CAN gateway
  • Implement and analyse performance of 6LoWPAN
  • Develop application and analyse performance of accelerometer module
  • Investigate tightness of bounds of WCET analyser
  • Apply model checking to analysis of security properties of a communciation protocol
  • Develop a tool to generate automatically correct ACLs from a specification of required security properties
  • Investigate automatic code generation for CAN-based, time-triggered embedded systems with multiple tick rates derived from a shared clock.
  • Investigate the use of the precision time protocol IEEE 1588 in distributed embedded systems.

Writing your dissertation

Content and Presentation

Some of your content will be based on your literature review. This will involve reading some literature. Unless you have a plan, your reading will be inefficient. How to read a research paper is an excellent guide to forming a plan for reading a paper. Follow its advice.

Writing for Computer Science is a good general text book about effective communication in Computer Science.

If you don't want to splash out on a text book, there are several sites with links to a variety of advice about how to write clearly. Not all of the advice is directly relevant to writing a B.Sc. or M.Sc. dissertation in Computing or Engineering. The advice may not even be consistent. However, it is well worth reading, as you begin to form your own ideas about how to write a good dissertation. The sites that I find most useful are:

However, before rushing to devour all of the hints and tips available from these pages, you should remember that the most valuable document for you is the project handbook for the module that you are studying. You should pay particular attention to the marking guidelines and ensure that, for each part of your dissertation, you have addressed all of the requirements of the marking scheme. And when the project handbook requires an approach that differs from that suggested by some other document, it is the project handbook that you should follow. All of the general writing guidelines in the world are of little benefit if you do not adhere strictly to the specific requirements of the organization to which you intend to submit your document.

Once you're clear about the advice in your project handbook, you may find the following helpful for parts of your dissertation. Remember that much of the advice below is written for academics intending to submit a journal or conference paper. You'll need to interpret it carefully to make it fit the requirements of a dissertation.

Abstract

Main report body

  • How to organize your thesis: intended mainly for Ph.D. dissertations - but if you disregard the references to the need to demonstrate an original contribution to knowledge, this works for M.Sc. and B.Sc. dissertations too.
  • How to write a great research paper: you can guess this is advice about writing a paper, not a dissertation - but if you ignore the advice about length of each section, almost everything else applies to writing a dissertation as well.

Bibliography, references, citations

Style

Tools

Writing
It's hard to imagine why anyone would write a Computing or Engineering project dissertation using anything other than LaTeX. Its key benefit is that it allows you to concentrate on the content of your writing rather than its layout. Also, it handles automatically the production of lists of contents, tables and figures, and, using BibTeX, it makes it easy to produce a bibliography and to manage citations. It also enables you to construct more beautiful documents.

I’ve made available some resources that show you how to use this tool to produce a dissertation. The Not so short introduction to LaTeX should be used to answer your general LaTeX queries. There’s also a useful LaTeX Wikibook that is worth a look.

Download LaTeX resources, including a sample dissertation.



Version control
Writing a dissertation takes quite a long time. During this time you will produce many versions of your dissertation. Occasionally, you will be disappointed to discover that the latest version of your dissertation is not entirely your best. You will be even more disappointed if you cannot recover those parts from an earlier version that you now realise were better than your latest version. You can avoid this disappointment by using a version control system to maintain all of your dissertation sources. There are several good, modern version control systems that are freely available, including If you are not already using one of these tools, you should begin at once. Git is currently the most popular - start with it.