• Databases are core, if largely invisible, components of modern computing architectures in both commercial and scientific contexts. The management of data has evolved from application-specific management of myriad files to organisation-wide approaches that see data as one of the most important assets of modern organisations and, as such, a key factor in their ability to compete and thrive. At this organisation-wide scale, database management systems (DBMSs) are the crucial piece of software infrastructure needed to achieve the desired results with consistent quality and robust efficiency. A modern DBMS is a thing of wonder and embodies in its internal construction and in its wide usability many advances in algorithms and data structures, programming language theory, conceptual modelling, concurrency theory, and distributed computing. This makes the study of databases a data-centric traversal of many of the most exciting topics in modern computing. This course unit introduces the students to the fundamental concepts and techniques that underlie modern DBMSs.





  • Learning resources for the first semester of COMP23420.





  • Resources for tutors and TAs for Software Engineering
  • This Course Unit introduces students to the theory and practice of Interactive Computer Graphics. Its principal aim is to teach the fundamental principles of two- and three-dimensional Interactive Computer Graphics. OpenGL is used as the platform for practical C programming exercises, and as an example of a system which incorporates many of the fundamental ideas and algorithms of modern computer graphics.

  • Many of the most important and visible uses of computer technology rely on distributed computing. This course unit aims to build on the course unit in the first year (COMP10052) which introduced students to the principles of distributed computing, and it focuses on techniques and methods in sufficient breadth and depth to provide a foundation for the exploration of specific topics in more advanced course units. The course unit assumes that students have already a solid understanding of the main principles of computing within a single machine, have a rudimentary understanding of the issues related to machine communication and networking, and have been introduced to the area of distributed computing.




  • This course aims to give insights into important issues concerned with mobile systems.  It focuses on smartphone technology,  mobile communications, data storage on mobile devices, application development and maximising battery life.  We study issues that differentiate mobile from “tethered” (wired) systems, and gain a working knowledge of speech, music and video codecs.   We also gain an understanding of the basics of wireless communications and the  holistic nature of power efficient mobile system design.