• Working successfully in a team is vital to the software design and implementation process. In this course unit, students learn effective communication skills as they work with team members to produce a new software system.

  • This course introduces digital logic and its application in computer organisation and design. 

    The major emphasis is on practical design work and, in the laboratory, state-of-the-art computer-aided design tools are used to support the design of digital hardware systems. Students' designs are simulated and then implemented using electrically reconfigurable gate arrays. 

    The lectures initially support the laboratories but progress to a wider overview of the design and interaction of computer hardware systems. Ultimately a complete - if simple - computer is described as constructed from simple gates.
  • Distributed systems take many forms, and many of the best known and most widely used computer systems are as prevalent as they are because of their distributed nature. This course unit introduces some of the essential concepts underlying distributed systems. In this course, unit, students are guided into an exploration of exemplar distributed applications (such as the web, email, file sharing and multi-user gaming) and, through these exemplars, are introduced to the basic concepts that underpin modern distributed computing. Recurring themes will include how distributed systems offer transparencies of various kinds and how they must contend with a range of complex issues to achieve that. The course unit also looks at how massive distribution enables high-performance computing, how service abstractions in the web enable business-to-business integration and how the web of hyperlinked documents is changing into a richer web of data.