I'm in charge of a number of programming and cybersecurity modules and I have a few ideas for cybersecurity projects. Hopefully, you'll never meet me in this context but I'm also in charge of investigating plagiarism cases (so that we can protect the value of our qualifications) and mitigating circumstances. The latter exists because we believe in giving you the best possible chance to achieve what you can regardless of illness or personal problems.
- Advanced Software Engineering: how can we make sure that software is built correctly? In this module, you will learn a language called B for specifying exactly what software should do, built on the concepts of sets, relations, functions and logic. You will then learn a technique for deriving correct programs based solely on a specification in logic.
- Secure Programming: you will learn about the fiendish tricks that hackers use to hijack software and gain control of computer systems and then make sure that all the software you work on is free from vulnerabilites. This is an exciting fast evolving field in which there are revelations about new exploits every month. You will learn about many subtleties within C/C++ and the security aspects of, for example, web programming, cryptography, networks, and operating systems including concurrency and access control.
- Paradigms of Programming: you will end up writing five programs in five different languages. This is the module where you get to analyse and make up your own mind (with reasons!) about the programming languages you will be using in your everyday working life. You will also learn about the functional and logic paradigms, both of which will almost certainly have a profound effect on the way you think about programming.