Search our site
Search our site

Computing Systems

  • Module code: CI5250
  • Year: 2018/9
  • Level: 5
  • Credits: 30
  • Pre-requisites: None
  • Co-requisites: None

Summary

The module aims to enhance students' understanding of how modern computer systems are implemented from the perspectives of architecture, networking, operating system, parallel programming and algorithm complexity. Students will explore the essential features and operations of modern computer architectures and acquire both theoretical and practical knowledge of the principles and major functions of modern operating systems. They will also develop knowledge of parallel programming and algorithm complexity so that they will be able to make use of new parallel computer architectures. Physical networks and their associated address schemes will also be explored.

Aims

  • To familiarise students with the essential features and operations of modern computer systems
  • To enable students to develop code taking advantage of functionality of modern operating systems and computer architectures
  • To develop a theoretical and practical understanding of parallel programming and algorithm complexity
  • To design physical networks and their associated IP addressing schemes

Learning outcomes

On successful completion of the module, students will be able to:

  • Describe the architecture, the essential features and operations of modern computer systems
  • Explore the functionality and interfaces of modern operating systems
  • Understand and apply multi-processing techniques, concurrent programming and synchronisation principles
  • Estimate the time and space complexity of the algorithms they design
  • Design physical networks and their associated IP addressing schemes

Curriculum content

  • Architectures:

o   Von Neumann model, Flynn's classification, parallel architectures including multi-core processors, GPUs, games consoles and clouds, instruction set architectures

o   Pipelining, memory hierarchies, instruction level parallelism

  • Operating systems:

o   Process management, memory management, file management, input/output management

o   Examples of  operating systems, eg. Linux and Windows

o   System, process and data security

  • Parallel programming and communications:

o   Amdahl's law, processes, threads, race conditions, synchronisation, mutex lock, semaphores, load balancing

o   Communication models: shared memory, eg. OpenMP, and message passing, eg. MPI

  • Algorithm complexity

o   floating-point operations and fundamental instructions

o   time and space complexity, limiting behaviour, big O notation, recursive algorithms, optimisation

  • Networking

o   Layering principles (encapsulation, multiplexing)

o   Roles of the different layers (application, transport, network, datalink, physical)

o   Routing and switching, and IP Addressing

o   Network specific threats and attack types, and the use of cryptography for data and network security

Teaching and learning strategy

This module is timetabled for two 2h classroom-based sessions each week and will make use of a problem-centric approach to learning. Typical classroom sessions will start with an accessible problem to be solved, explicitly linked to a learning outcome or assessment question. Students will work together to attempt to find a solution strategy, facilitated by the lecturer, comparing and contrasting ideas. Identified gaps in knowledge will be filled through short bursts of lecturer-delivered active instruction, making use of the "study guide" (which is given to all students at the start of term). Outcomes of these activities will be published on Canvas for later reference. Students then work on similar problems, facilitated by the lecturer, which feed-forward to the eventual assessment tasks.

The practical, discussion-based nature of the class makes it essential that everyone engages regularly - whilst the starter problems, exercises, study guide and other resources will be on Canvas the bulk of the learning happens between students.

Breakdown of Teaching and Learning Hours

Definitive UNISTATS Category Indicative Description Hours
Scheduled learning and teaching Lectures, tutorials, workshops, case studies, exercises, discussion groups, and practice work. 100
Guided independent study 200
Total (number of credits x 10) 300

Assessment strategy

Assessment will be by means of an examination contributing 40% of the final module mark and two coursework assignments contributing 30% each. Students will be expected to submit a coursework assignment at the end of each teaching block. They will be supported by a weekly two-hour workshop programme, which will provide opportunity for formative feedback on topics related to their assignments. Typically, the first coursework assignment will focus on architectures and networking, while the second coursework assignment will concentrate on operating systems, parallel programming, algorithms and complexity. The final examination will be of 2 hours. Exam revision will be supported by a series of Revision Workshops.

Mapping of Learning Outcomes to Assessment Strategy (Indicative)

Learning Outcome Assessment Strategy
Describe the architecture, essential features and operations of modern computer systems Written Exam Coursework1
Explore the functionality and interfaces of modern operating systems Written Exam Coursework2
Understand and apply multi-processing techniques, concurrent programming and synchronisation principles Written Exam Coursework2
Estimate the time and space complexity of algorithms Written Exam Coursework2
Design physical networks and their associated IP addressing schemes Written Exam Coursework1

Elements of Assessment

Description of Assessment Definitive UNISTATS Categories Percentage
Coursework1 Coursework 30%
Coursework2 Coursework 30%
Written Exam Written Exam 40%
Total (to equal 100%) 100%

Achieving a pass

It IS NOT a requirement that any major element of assessment is passed separately in order to achieve an overall pass for the module.

Bibliography core texts

Patterson, Hennessy (2011), Computer Organization and Design; The Hardware-Software Interface, (4th Edition), ISBN-13: 978-0123747501

William Stallings (2014), Operating Systems: Internals and Design Principles, Global Edition 8th Edition, Publisher: Pearson Education 8 edition, ISBN-10:  1292061359 ISBN-13: 978-1292061351

Andrew S. Tanenbaum and David J. Wetherall (2014), "Computer Networks", Prentice-Hall, Fifth Edition

Gerassimos Barlas (2014), Multicore and GPU Programming: An Integrated Approach, Morgan Kaufmann, ISBN-10: 0124171370, ISBN-13: 978-0124171374

Bibliography recommended reading

Andrew S. Tanenbaum (2014), Modern Operating Systems, 4th Edition, Publisher: Pearson; 4 edition, ISBN-10: 1292061421 ISBN-13: 978-1292061429

Robert Cook, A (2017) Introduction to Parallel Programming with OpenMP, PThreads and MPI (Cook's Books Book 6), ASIN: B004I6D6BM

Richard Neapolitan (2015), Foundations of algorithms, Burlington, MA : Jones & Bartlett Learning, ISBN9781284049190

Find a course

Course finder

Find a course
>