Computing and Communications

The following modules are available to incoming Study Abroad students interested in Computing and Communications.

Alternatively you may return to the complete list of Study Abroad Subject Areas.

SCC.110: Software Development

  • Terms Taught: Full Year course.
  • US Credits: 5 semester credits
  • ECTS Credits: 10 ECTS
  • Pre-requisites: No pre-requisites.

Course Description

Computer programming is a highly practical skill, that fosters the development of a range of transferrable skills. This module aims to instil the knowledge, understanding and skills expected of a principled computer programmer. More specifically:

  • To develop specific skills in writing, analysing, debugging, testing and documentation of computer programs
  • To instil best practice of the day to day techniques associated with principled software development.
  • To develop a practical understanding of the software development cycle and an awareness of the challenges faced by software developers in addressing scalability and complexity in computer software.

Educational Aims

At the end of the course the students should be able to demonstrate subject specific knowledge, understanding and skills and have the ability to:

  • Work independently to develop moderately complex, robust computer programs.
  • Apply a principled approach to the development of a software program.
  • Perform effective testing of computer programs.
  • Undertake reasoned analysis of alternative designs for moderately complex computer programs.
  • Analyse and debug computer programs.
  • Understand the need for a structured approach to the software development process.

Outline Syllabus

  • Programming languages and their role, evolution and context.
  • Common classifications of languages.
  • Procedural programming.
  • Basic types and the use of constants and variables.
  • Control flow, and making decisions through the use of conditionals.
  • Repeating actions through iteration and recursion.
  • Functions and procedures.
  • Parameter passing, formal and actual parameters pass by reference and pass by value, return types.
  • Scoping of variables, and procedures using namespaces.
  • Exceptions and exception handling.
  • Compound data types including arrays, lists and structures.
  • Linked data structures. 
  • Modularity in programs: Scoping of variables and code through code blocks and namespaces.
  • Use of well defined APIs and libraries in promoting scalable and reusable code.
  • Principles of loose coupling and high cohesion.
  • Introduction to OO programming.
  • Objects, classes and inheritance.
  • Principles of best practice in software development, including the software development cycle, problem analysis, design formulation and the evaluation of design alternatives, literate programming and programming conventions, software commenting and documentation, testing and test case design, debugging techniques and regimen, version control.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.120: Fundamentals of Computer Science

  • Terms Taught: Full Year course.
  • US Credits: 5 semester credits
  • ECTS Credits: 10 ECTS
  • Pre-requisites: No pre-requisites.

Course Description

This module aims to instil the knowledge and understanding required to enable students to analyse and characterise the efficiency of computer programs, and to make the correct design choice when implementing computer programs to optimise efficiency for given design parameters.  More specifically this module aims to:

  • Provide an insight into the importance and relevance of the fundamental principles of Computer Science.
  • Develop specific skills analysing the efficiency of algorithms and computer programs.
  • Instil fundamental knowledge and understanding of the role and characteristics of data structures.
  • Convey the continuing importance of search and sort algorithms, along with the detailed operation and characteristics of commonly used algorithms.

Educational Aims

At the end of the course the students should be able to demonstrate subject specific knowledge, understanding and skills and have gained:

  • an appreciation of the general nature of program efficiency, including both ad hoc efficiency (good habits) and formal approaches
  • an understanding of the concept of algorithmic efficiency, including the importance of worst case efficiency and average case efficiency
  • an ability to analyse the efficiency characteristics of an algorithm, and to deduce its complexity class
  • an understanding of commonly used data structures, and an ability to design algorithms for performing key operations on these storage structures, with special reference to the insertion, deletion, searching and sorting of items and traversal of data structures.
  • an understanding of the fundamental search and sort algorithms and the efficiency characteristics.
  • an understanding of the role of logic and discrete mathematics as a foundation for the Computer Science discipline

Outline Syllabus

  • The concept of abstract data type (ADT) and the distinction between ADTs and storage facilities.
  • Data types and their limitations including primitive data types, discrete types and compound data types.
  • The concept of references and linked data items.
  • Fundamental linear data structures and their implementation, including lists, stacks, queues and priority queues.
  • Single and doubly linked linear data structures.
  • Multi-level lists, hashing and hash based data structures.
  • Equality and equivalence, shallow and deep copying.
  • Branching data structures including trees and digraphs.
  • Algorithms for accessing and manipulating data structures, including insertions, removals and traversals.
  • Algorithmic efficiency.
  • Temporal complexity, spatial complexity and the big-O function.
  • Approaches to analysis.
  • Worst cases and primary / secondary efficiency.
  • Effect iteration and nested iteration on complexity.
  •  Lower bound efficiency, average case efficiency. 
  • Algorithm types: incremental, multi-stage algorithms, divide and conquer, dynamic, exhaustive.
  • Exponential, logarithmic and linear solutions.
  • Unreasonable algorithms. 
  • Profiling, performance measurement and analysis of computer programs.
  • The importance of searching and sorting algorithms.
  • Linear search, binary search, indexed retrieval, collisions and hashing and their respective complexity.
  • Sorting and its efficiency: insertion sort, Shell sort, quick-sort, merge-sort.
  • Tree-based sorting: sorting and retrieval using a binary tree.
  • Heap-sort. 
  • The essential fundamentals of logic, computation and computability.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.130: Information Systems

  • Terms Taught: Full Year course.
  • US Credits: 5 semester credits
  • ECTS Credits: 10 ECTS
  • Pre-requisites: No pre-requisites.

Course Description

This module aims to develop a basic competence in fundamental information and data handling technologies, together with their applications in social and business contexts.  It will also develop awareness of social aspects of computing, develop skills in essay writing, discussion, human centred system design and system scale problem solving. 

Educational Aims

By the end of the course the students should be able to:

  • construct a simple database,
  • query the database in correct SQL,
  • validate the data,
  • describe the functions and architecture of basic management information systems,
  • discuss social issues associated with digital technology and information systems,
  • demonstrate awareness of legal and professional issues affecting software development,
  • design information solutions (that recognise social and ethical constraints and make effective use of basic data handling technologies)

Outline Syllabus

  • Introduction to databases.
  • Fundamentals of databases and the relational model, integrity, comparison with file structures and excel, basic data mining.
  • Basic SQL, including common commands and functions,  constructing and testing valid queries, embedding queries, use of queries for database maintenance. 
  • Introduction to Information systems, common applications in business, data handling in information systems, data collection, validation, verification and error handling, data presentation. 
  • Computers and society.
  • Censorship, malware and spam, privacy and surveillance, Internet operations and governance, living and working in a wired world, Green IT, legal and ethical frameworks, professional issues in computing, IT and health, patents, copyright and concepts of DRM. 
  • Systems analysis and design.
  • Handling Multiple constraints (e.g. Green and productive), working with people and machines, system thinking, top down vs bottom up design, basic cost/benefit analysis.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.140: Creative Technology

  • Terms Taught: Full Year course.
  • US Credits: 5 semester credits
  • ECTS Credits: 10 ECTS
  • Pre-requisites: No pre-requisites.

Course Description

The creative industries are often concerned with providing an experience to a user through a product or service. This course will provide and introduction to how user experience design can and should be incorporated within the software product life cycle. In particular it will present the different stages of the process.

Educational Aims

The aim of the course is to introduce the students to an experience design driven software development process as might be applied within the creative industries. Awareness and basic understanding of contemporary platforms for user centred application

Outline Syllabus

  • Creating Prototypes (profiling the user and the context of use relative to a particular platform, the role of the prototype, paper, software (e.g. Flowella), hardware (e.g. Arduino)),
  • Interaction Design (e.g. its role, affordances, wire framing),
  • Graphical Design (Colours, Icons, Typography, information visualisation),
  • Evaluation (quick and dirty, heuristics, ethnography).
  • The course will provide practicals and projects that will develop these skills alongside the learning how they would be contemporary platforms for applications. Examples of these platforms include PC, tablets, mobiles, etc). These practical’s will initial provide the core web development skills (html, CSS, javascript and Flash) and then apply these on a cross platform design.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.150: Digital Systems

  • Terms Taught: Full Year course.
  • US Credits: 5 semester credits
  • ECTS Credits: 10 ECTS
  • Pre-requisites: No pre-requisites.

Course Description

This module provides strong insight into the fundamental operation of all digital technology. Through this module, students will learn about the fundamental building blocks, mechanisms and concepts found in all digital systems. Furthermore,this module will teach students how to program digital systems. Particular focus is on programming close to the hardware.

Educational Aims

At the end of this course, students should have an understanding of the key features and components of digital systems, including low level components such as registers and adders and how these can be controlled through the use of programming techniques. They should also have appropriate skill to work with different logic constructs and number systems, and in particular binary. Students should also understand the relationship between applications software, systems software and hardware. Students should have basic understanding of the c programming language. Furthermore, students should be able to write and execute basic c-programs directly on computer hardware without the need for an operating system.

Outline Syllabus

  • The transistor, logic gates, flip-flops, transition diagrams, binary counters. Data and Program Representation. 
  • The relationship between digital logic and abstraction, bits and bytes, binary arithmetic, hexadecimal notation, character sets, integers, floating Point.

Processors.

  • Definition and conceptual structure of processors, the Von Neumann architecture, arithmetic logic unit, stored programs, the fetch-execute cycle. Instruction Sets.
  • Opcodes, operands, and results, programming with registers, execution pipeline, program counter, subroutine calls, operand addressing and instruction representation.

Assembly and C.

  • Assembly syntax and opcodes, registers, operands, the relationship between assembler and C.
  • C Language preliminaries.
  • The C character set, identifiers and keywords, data types, declarations, expressions, statements and symbolic constants. 

Preparing and running a complete C program.

  • Compilation, development environment, debugging.
  • Operators and expressions.
  • Arithmetic, unary, logical, bit-wise, assignment and conditional operators.
  • Control statements.
  • While, do-while, for statements, nested loops, if else, switch, break, continue, and goto  statements. Functions.
  • Defining and accessing, passing arguments, function prototypes, library functions, static functions.
  • Arrays Pointers and Structures: definition and processing, passing to functions.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.160: Fundamentals of Communication Systems

  • Terms Taught: Full Year course.
  • US Credits: 5 semester credits
  • ECTS Credits: 10 ECTS
  • Pre-requisites: No pre-requisites

Course Description

The course will introduce you to fundamental theories and applications of communication systems and signal processing techniques.  It will:

  • Enable you to understand the mathematics behind information and signal manipulation.
  • Familiarise you with practical implementations (e.g., in mobile communications) and common applications (e.g., in speech, image and video processing).
  • Provide you with a broad range of knowledge and skills necessary for a career in communication engineering at a professional level

Educational Aims

On successful completion of this module students will be able to: 

  • Demonstrate a fundamental knowledge of concepts, mathematical tools and theories related to communications and signal processing.
  • Discuss applications and provide examples of practical implementations, for example, in mobile communications.
  • Describe techniques, related to speech, image and video processing, that are widely used in real-world communication devices.

Outline Syllabus

  • analogue and digital processing, including sampling, quantisation and coding, will be covered;
  • analogue and digital modulation methods will be introduced and compared;
  • trade-offs among bandwidth, data rate and signal power will be discussed;
  • time and frequency domain representations will be explained;
  • basic signal processing concepts and methods that are closely related to communication systems will also be extensively studied;
  • topics that encompass a broad range of modern day applications will also be covered. Examples include but are not limited to mobile communications and communication devices that employ speech, image and video processing techniques

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.201: Databases

  • Terms Taught: Lent / Summer terms only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 110 Software Development, SCC 120 Fundamentals of Computer Science, SCC 130 Information Systems.

Course Description

This course provides a theoretical background to the design, implementation and use of database management systems, both for data designers and application developers. It consists of a number of related sections, which range from single lectures to multi-lecture streams, depending on the required depth of coverage. Covered topics normally include: database design; the relational model; accessing relational DBMS via Java; the physical model; transaction processing and concurrency control; XML and object-oriented databases; data warehousing; data mining.

Educational Aims

This course aims to:

  •  Instruct students in the ways of analysing data requirements and producing a model which captures those requirements. Further, to transform that model into one suitable for use in a Relational DBMS.
  •  Introduce students to the physical layout of data and associated access methods to allow efficient response to data requests.
  •  Instruct students in the theory and practice of the World’s de facto standard, the Relational Model and Relational DBMS.
  •  Introduce students to the problems raised by transaction processing and concurrency control, and the solutions.
  •  Provide students with a broad range of knowledge and skills necessary for a career in data and database engineering at a professional level.

Outline Syllabus

This module builds upon knowledge gained in Part I by providing a theoretical background to the design and implementation and use of database management systems, both for data designers and application developers. The course consists of a number of related sections, which range from single lectures to multi-lecture streams, depending on the required depth of coverage. The sections are as follows.

  • Introduction : we begin with a brief history of how the need for database management systems (DBMS) grew over time and how they are applied in day to day scenarios.
  • Database Design : before making use of a DBMS, we must capture our requirements : what data do we actually wish to model? We make use of the Extended Entity-Relationship (EER) model which is both a technique and a notation for designing the data in a DBMS independent way.
  • The Relational Model : now the de-facto standard for DBMS, this was a revolutionary step taken in 1970. We extensively examine the Model, looking at relational database systems, the model itself and the normalisation process, the relational algebra (the mathematical theory that underpins the model), the three schema architecture and schema definition in SQL. Finally, we look at how we can map the EER model into an equivalent Relational Model.
  • Accessing relational DBMS via Java : we explore the facilities of the JDBC and show how we can write applications in Java which connect with a relational DBMS (in practice, MySQL).
  • The Physical Model : as Computer Scientists, our students need an awareness of the techniques that allow rapid access to stored data. In this section, we examine the physical data organisation and associated access methods. We show under what circumstances the organisations can be applied, and we look at how queries can be optimised.
  • Transaction processing and concurrency control : a huge part of DBMS in practice is the need to support transactions and concurrency, allowing huge numbers of users to access the DBMS at any one time while still ensuring the consistency of the data. This stream examines the problems and solutions in depth.
  • XML and Object-Oriented Databases : while object-oriented databases are not prevalent, the OO model is a powerful one for modelling data (and the EER model allows for this). They can also provide a useful way in to looking at XML and XML databases, a growing area of importance.
  • Data Warehousing : an important use of data is in informing management decisions. Warehousing allows a company to take a company-wide view of their data and to query and search the data in powerful ways to support decision making.
  • Data Mining : in some ways related to warehousing, data mining applies various techniques from different disciplines in an effort to extract valuable nuggets of information from mountains of data. Here, we look at a number of techniques and illustrate them through worked examples.

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.202: Human-Computer Interaction

  • Terms Taught: Michaelmas Term only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: No pre-requisites

Course Description

This module aims to provide theoretical and practical knowledge about the design, implementation and evaluation of interactive systems. More specifically:

  • To provide students with knowledge of human factors needed to be considered when designing interactive systems, and skills of applying them in specific scenarios
  • To provide students with knowledge of the methods of collecting and analysing user data within the design process
  • To sensitise students to the importance of human aspects of system design and values
  • To supplement this with practical applications of the principles learnt in small but real system design
  • Familiarise students with practical implementations in HCI

Educational Aims

At the end of the course the students should be able to:

  • Understand why it is important to take account of user needs during all aspects of system design;
  • Understand basic aspects of human perception and cognition in order to apply them to interactive systems design;
  • Understand techniques to uncover user needs and to incorporate these into system design;
  • Understand the use of appropriate design techniques including scenarios and prototyping.;
  • Understand the relevance of effective evaluation and techniques to approach this at different stages in the design process;
  • Understand how internal system design impacts on external user interface behaviour.  
  • Understand the importance of accessibility to make systems available for all kinds of users regardless of different abilities, age, gender, cultural background, expertise;
  • Possess working knowledge of a range of systems and understand the theoretical and practical interface design issues experienced during their implementation.

Outline Syllabus

The course consists of 30 hours of lectures covering theoretical and practical topics in human computer interaction.  Some topics will be dealt with through assigned directed reading to free lecture time for dealing  with motivating examples and practical case studies.  Laboratory work will reinforce lessons learnt during lectures giving students hands-on experience of design, implementation and evaluation of interactive systems.

Key Topics (lectures and directed reading) include

  • psychological underpinnings of human perception and cognition, i.e. different forms of perception, forms and processes of memory, motivation theories and their implications for design
  • requirements elicitation, e.g. qualitative methods such as interviews, observation, ethnography, cultural  probes, and quantitative methods such as surveys and questionnaires
  • qualitative data analysis, e.g. grounded-theory
  • quantitative data analysis, including descriptive and inferential statistics
  • user-centred design and participatory design processes
  • evaluation design, e.g. planning user studies involving a range of methods such as field study, lab study, etc.
  • practical issues in prototyping and implementation, including consideration of different fidelity of prototypes ranging form low fidelity and Wizard of Oz techniques to high fidelity prototype design
  • advanced topics and case studies, i.e. advanced mobile HCI, interaction with situated displays, etc.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.203: Computer Networks

  • Terms Taught: Lent Term only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 110 Software Development.

Course Description

This course aims to introduce the fundamental concepts underpinning present day telecommunications networks and the internet using example applications such as electronic mail, file transfer, etc. The content is divided into a number of specific areas: fundamentals of data communications; routing; data transmission; and network programming (socket programming, basic protocol implementation, application level protocols such HTTP, SMTP, etc, with a focus on email as an example).

Educational Aims

The module aims to:

  • Provide students with a detailed understanding of data transmission techniques in computer networks
  • Introduce students to the key features of network protocols, and the steps and relevant protocols needed for establishing and maintaining reliable data communication between network endpoints
  • Enable students to understand the key building blocks that the Internet is built on
  • Familiarise students with the practical elements of programming required to support network communication, from both a network protocol and application level perspective

Outline Syllabus

  • Fundamentals: this will introduce students to the fundamentals of data communications. It will focus on the key ideas of protocol stacks and layering: the need for individual layers to serve the layer above, providing functionality of its own, whilst then being served by the layer beneath. With specific emphasis on the network and transport layers, the module will then look at the base internet communication protocols, including IPv4, IPv6, TCP and UDP. The concepts of IP addressing and sub-netting will also be covered.
  • Routing: the second area will introduce the protocols used to support the routing of IP packets across the Internet; such protocols include BGP and RIP. Also covered at this point will be the concept of bootstrapping networked systems, looking at techniques to support network address discovery and allocation.
  • Data transmission: this area focuses on link layer issues around data transmission, including controlling signal transmission in networks, token vs. carrier sense based systems, and Ethernet. It will also look at home networking technologies such as ADSL, IPoA, and IPoE.
  • Network programming: to ensure a practical element to the module, this fourth area looks at techniques for programming network systems, socket programming, and basic protocol implementation. Application level protocols are also considered, HTTP, SMTP, etc… with a focus on Email as an example.

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.204: Software Design

  • Terms Taught: Michaelmas Term only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 110 Software Development and SCC 120 Fundamentals of Computer Science.

Course Description

This course introduces the fundamentals of software design and its role in developing software systems. The first part of the course will explain that a software design is the description of a) the structure of the software to be implemented, b) the data which is part of the system, c) the interfaces between system components and, d) sometimes the algorithms to be used. Topics on software architecture will be covered, including business processes and organisational models, their relationship to detailed design and implementation (coding), and the importance of aligning them.

Educational Aims

This module aims to introduce students to the principles of software design and common software design processes. At the end of the course, students should be able to:

  •  Understand the importance of software architecture design and architecture styles (e.g., pipe-and-filer, client-server, layered, etc.);
  • Understand the meaning of quality attributes (e.g., maintainability, performance, scalability, etc.) for software architecture design;
  • Understand architectural models for specific classes of application software systems and understand the main quality attributes for deciding the classes;
  • Interpret and construct UML models(e.g. use cases, class diagrams, sequence diagrams, state diagrams, etc.) of software
  • Implement a design expressed as a UML model and understand how to use various design patterns to address certain problems.

Outline Syllabus

This module introduces the fundamentals of software design, and its role for developing software systems. The first part of the module will explain that a software design is the description of

  • 1) the structure of the software to be implemented,
  • 2) the data which is part of the system,
  • 3) the interfaces between system components, and
  • 4) sometimes the algorithms to be used.

The topics of software architecture will be covered, including business processes and organisational models, their relationship to detailed design and implementation (coding), and the importance of aligning them.

The second part of the module will introduce various software design methods. It provides some ad-hoc ways of software design (e.g., starting from requirements (often natural language), preparing an informal design, coding commences and the design is modified as the system is implemented, etc) and their consequences. Then it explains systematic approaches to developing a software design using a set of graphical models (e.g., object model, sequence model, state transition model, structural model, data-flow model, etc.). Also, the design process involved in developing several models of the system at different levels of abstraction is explained.

The third part of the module will introduce object oriented design with UML. The four aims of modeling (visualisation of the expected system, specification of the system’s structure and/or behaviour, provision of a template for constructing the system, documentation of the decisions that have been made) are explained and design principles (e.g., information hiding) are explored. Finally, UML models along with object oriented design process are provided.

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.205: Social, Ethical and Professional Issues in Computing

  • Terms Taught: Lent / Summer terms only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: No pre-requisites

Course Description

This course aims to equip you with fundamental skills and knowledge, which will help you operate within the professional, legal and ethical framework of your profession. More specifically, the course will cover the following topics: career planning and development, project planning and time management, research methods, data analysis, scientific writing, presentation skills, professional ethics, legal awareness.

Educational Aims

The course aims to:

  • Improve students’ awareness of employment opportunities in their field and allow them to gain an appreciation of the general competences and subject-specific skills that employers often look for in candidates.
  • Develop the basic science skills required for tackling problems and providing solutions.
  • Assist students in developing skills in academic writing and technical presentation, commensurate with a practising professional in Computing and Communications.
  • Familiarise students with ethical, legal and professional issues associated with their profession.
  • Support students in the preparation of their final year project proposal.

Outline Syllabus

  • Career planning and development(6 hours): Aspects of strategic planning, which are often used in business environments at both individual and organisational levels, will be introduced. Students will apply these rules to assess themselves, identify their strengths and weaknesses, and recognise opportunities and threats. Based on their self-evaluation, students will compose CVs and covering letters in order to effectively present and promote their knowledge, skills and interests to target employers. Students will also be taught about the need to prepare properly and research the interviewing organisation before an interview.
  • Project planning and time management(3 hours): Techniques for breaking down a project into smaller manageable parts will be explored, and methods for efficiently allocating time and other resources among the various interdependent parts will be discussed.
  • Research methods(3 hours): This session will provide a basic understanding of the skills and methods required to pursue scientific inquiry, ranging from the development of hypotheses and the use of reasoning to the design of reliable experiments.
  • Data analysis(3 hours): Fundamental concepts and tools for the statistical analysis of measured data will be explained. Common techniques to represent data in graphical form to facilitate their interpretation will also be discussed.
  • Scientific writing(6 hours): Students will be given exemplars and detailed guidelines on how to produce concise and structured scientific reports while correctly citing sources that support their statements.
  • Presentation skills(3 hours): Tips and required skills for developing and delivering oral presentations, which  provide a clear outline of a project, summarise key points and highlight important results, while keeping the audience interested, will be covered.
  • Professional ethics(3 hours): Successful professional and social conduct requires adherence to a code of ethics, including but not limited to integrity, honesty, mutual trust and sharing of ideas. The importance of ethics in professions related to Computing and Communications will be emphasized in this part of the module.
  • Legal awareness(3 hours): Students will become familiar with fundamental legal aspects related to their profession, including intellectual property rights and patent law.

Assessment Proportions

  • Coursework: 100%

SCC.210: Computer Science Group Project

  • Terms Taught: Full Year course.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites:
    • Prerequisites:  SCC 110 Software Developments,
    • Corequisites:  Software Design SCC204 and Professional Issues Research Methods SCC 205

Course Description

This module aims to provide students with knowledge in the application of software engineering, system development, and application programming principles and concepts. This includes software design, JAVA programming, and mobile applications.  It will enable students to further develop their IT and software development related project management and planning skills alongside their technical skills (i.e. software and application design and programming) within a project and group context.  It will also familiarise students with co-ordination and development skills as required in a group development context.

Educational Aims

At the end of the course the students will be able to work together in teams in order to tackle technical problems in a large scale (group) project context, including analysing, planning, managing, designing, implementing, testing and fully documenting an IT system. They will have the knowledge and skills to be able to analyse a complex problem and design and develop a suitable software solution.

Students will develop new skills for coping with and managing parallel implementation tasks, and in integrating third party components. After this module, the students will be able to produce documents to describe the design of a system and be able to critique those produced by others.

Outline Syllabus

 The group project’s overall goal is threefold,

i.) to give students the experience to execute a large scale project through all stages (from requirements analysis to the presentation of the results,

ii.) to work in groups to the demands of a client (or supervisor),

iii.) to apply knowledge being gained in other courses within a project context.

By the end of the module, students will have experience with a large-scale, concrete, group development project covering all aspects and being executed in a real-world environment.

In particular the student will learn and apply their knowledge about project planning, management and execution, requirements analysis, systems design (using appropriate methods such as UML and design patterns) and testing strategies will all be applied. Further, part of a large scale system will be implemented by the group and integrated with existing system components.

As part of the project, teams will deliver reports, code, and demonstrated a working system. They will also present certain elements of their work in written, graphical and verbal forms through the production of materials which may include reports, a website, poster and presentation.

Assessment Proportions

  • Coursework: 100%

SCC.211: Operating Systems

  • Terms Taught: Michaelmas term only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: No pre-requisites

Course Description

The module aims to:

  • Introduce the role of an operating system and the functions it provides.
  • Give a detailed understanding of the components of a modern operating system and common operating system architectures.
  • Explain how operating systems structure and manage memory
  • Identify ways in which I/O and other system events can be managed and efficiently handled, including the used of device drivers, and interrupt management.
  • Describe typical file system structures.
  • Highlight different approaches to process and task scheduling. Provide an overview of approaches and techniques for concurrent programming.

Educational Aims

On completing the course, students will have a solid appreciation of fundamental operating system concepts and concurrency. They will be aware of the various design options commonly available in operating systems and concurrent systems.

They will have experience selecting appropriate solutions and applying these to develop key operating system components within defined constraints. They will develop understanding through hands-on experience of programming the internals of operating systems and concurrent systems.

Outline Syllabus

This module introduces students to the theory and practical application of operating system concepts, and to concurrent systems in general.

The course includes the following topics:

  • Internal OS structure;
  • File and I/O management; interrupt handling and device drivers;
  • Memory management structures and techniques;
  • Process management: scheduling and threads; support for multiprocessors.
  • OS development: cross compilation; run-time support; and APIs
  • Concurrency: mutual exclusion and condition synchronisation; alternative primitives (including semaphores, spin-locks, monitors, and message passing).

The module takes a practical, hands on, approach to these topics which helps students assimilate abstract concepts by presenting concrete examples from suitable operating systems and by having the students carry out relevant programming exercises.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.212: Advanced Programming

  • Terms Taught: Michaelmas Term only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC110 Software Development, SCC120 Fundamentals of Computer Science.

Course Description

This module is intended for students with some prior experience of programming (it is not introductory level). It is intended to build students’ confidence with learning and adapting to the features and constraints of new programming languages to i) promote adaptability when faced with new tools and technologies in the future, and ii) develop an appreciation of the importance of selecting a good programming tool for a given problem. The module will introduce a number of programming languages drawn from different programming language families. It will also reinforce and build on good practice established in year 1, including problem decomposition, debugging techniques and fault finding, and continue to encourage good coding practices (e.g. commenting, literate programming).

More specifically, through this course, students will:

  • understand important advanced programming concepts, including object-orientation, inheritance, polymorphism, generics, iterators, classes, templates and objects, recursion, lambda functions, list comprehensions, delegates, guards, etc.
  • gain practical experience with a number of modern programming languages, thereby increasing the ability to learn new programming languages and be adaptable/ transfer their skills in the future
  • learn to appreciate the history and diversity of ideas in programming languages, understand the various key types of programming languages and understand their domains of application
  • learn to think more broadly about programming, and how common programming idioms map between programming language types
  • build their programming experience and confidence, reinforce good practice including good code layout, use of whitespace, commenting, self-documenting and literate programming

Educational Aims

Following the course, students should be able to:

  • Appreciate the principal programming language concepts and the way they are dealt with in the imperative, object-oriented, functional and logic language paradigms
  • Factor out common principles in computer language design and appreciate how common programming idioms translate across languages
  • Appreciate the importance of data structures in programming language design and the efficiency trade offs endemic in their integration into the language
  • Understand the basic properties of each language including, but not limited to, type safety, correctness, compile time, vs. runtime properties
  • Understand the runtime execution of a programming language and how this maps to storage allocation: scopes, encapsulation, run-time stack, heap storage and garbage collection, and the implications on memory footprint, performance and application domain
  • Demonstrate a working understanding of object orientation, classes vs. object instances, inheritance and dynamic binding, and polymorphism and how this should impact software design
  • Evaluate the features of a programming language, place it within a family of related languages, and understand in broad terms its domain of application
  • Demonstrate a reasonable understanding of the compromises that have to be made in a standard specification of a language in relation to machine independence, performance and efficiency

Outline Syllabus

This module serves two purposes i) extending and reinforcing knowledge of object-oriented concepts and practice using Java (building on year 1), and ii) provides broader exposure to advanced programming concepts and alternative programming language paradigms so that students gain an appreciation of the application domain and relative strengths, weaknesses and performance of each type of language and their domain of application.

The lectures will introduce and compare a range of programming languages (5 languages will be given detailed consideration) and show how common tasks and idioms can be mapped between different paradigms. 

The module will cover advanced programming constructs, including object-oriented programming (in Java), e.g. inheritance, generics, polymorphism, iterators and recursion and show how these map to:

  • a logic language (Prolog)
  • a functional style (Scala)
  • a list style (Scheme)
  • a dynamic/ scripting language (Python)
  • a 'concurrent' language (Erlang)
  • languages based on separation of concerns, e.g. Aspect-J

Programming practice is essential to Computer Science and to reinforcement of learning in this type of course: it is therefore taught using a mixture of theory and practice (lectures + lab work), where the lab work specifically reinforces the learning provided in the lectures. Given that mastery of all the languages indicated above in unfeasible, students will complete practical work in 3, picking from a range of alternative exercise options.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.240: IT for Creative Industries Innovation Challenge Group Project

  • Terms Taught: Full Year course.
  • US Credits: 4 semester credits
  • Pre-requisites:
    • Pre-requisite: SCC110 Software Development, SCC140 Creative Technology, DES101 Introduction into Design 
    • Corequisites:  SCC 204 Software Design, SCC205 Professional Issues Research Methods.

Course Description

IT for Creative Industries Innovation Challenge Group Project enables the students to apply the knowledge and skills they acquired in their first year courses. The emphasis is on the design of interactive applications, which will include the user interface, usability requirements and usability testing of such systems and in some cases their software developments.

Educational Aims

This module aims to: provide students with:

  • Knowledge in the application design principles, user profiling, and user evaluation.

This includes the design and development of interactive applications enable students to further develop their project management and planning skills alongside their technical skills (i.e. software and application design and programming) within a project and group context.

  •  Familiarise students with co-ordination and development skills as required in a group development context

Outline Syllabus

Working in groups, the students will be applying knowledge gained in SCC110 Software developments and also through Design 101 (LICA) (DES101) and Creative Technology (SCC140). In particular, project planning, management and execution, user profiling, user emphasis is on the design of interactive applications, which will include the user interface, usability requirements and usability testing of such systems and in some cases their software developments. Each team will present certain elements of their work in written, graphical and verbal forms through the production of materials which may include reports, a website, poster and presentation.

Assessment Proportions

  • Coursework: 100%

SCC.241: Introduction to Computer Graphics

  • Terms Taught: Lent / Summer terms only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 140 Creative Technology.

Course Description

This course introduces you to the fundamental principles of graphics processing in 2D and 3D environments and then extends these in relation to the techniques used in animation and modelling. You will develop and evaluate simple animations and apply your programming skills to produce your own renderings, 3D shapes, and/or animations.

Educational Aims

After completing this module, students will be able to:

  • understand the basic aspects of 2D image representations and transformations
  • describe the rendering pipeline, basic camera model, and ray casting method
  • explain different methods of digitally representing 3D models
  • discuss the traditional principles of animation that can be applied to computer animation
  • describe different methods for creating and capturing animations
  • implement their own graphics applications in OpenGL

Outline Syllabus

In this module you will cover:

  • Imaging: colour models, image representation, image sampling, image warping;
  • Rendering: rendering pipeline (rasterisation, clipping, hidden surface removal, transformations, scene graphs), Illumination and shading, texture mapping;
  • Modelling: curves and surfaces, constructive solid geometry, boundary representation, spatial partition methods, subdivision surfaces, procedural modelling;
  • Animation: principles of traditional animation, keyframing, kinematics, and dynamics, motion capture, physical simulation, particle system, face animation, motion planning, crowd behaviours

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.306: Internet Applications Engineering

  • Terms Taught: Lent/Summer Terms only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 110 Software Development.

Course Description

This course will introduce you to the ecosystem surrounding the development of web and mobile applications. More specifically, this course will cover the architecture, standards, implementation and business aspects of web application development and the design, implementation and constraints of mobile application development and an overview of topical platforms and technologies in both areas. It has a strong practical focus, designed to equip you with the knowledge and skills required to successfully develop web or mobile-based applications.

Educational Aims

This course is designed to provide students with a wide range of knowledge and sensitivities concerning the design, development, commissioning and deployment of Internet scale web based systems. Specific knowledge includes

  • barriers to high performance, heuristics for achieving the best web site performance (optimising page load and of page resources);
  • caching, locality, use of content delivery networks and cloud service hosting;
  • metrics and use of analytics;
  • A/B and multivariate testing;
  • programming toolkits;
  • story tagging, content aggregation, XML stores, linked data and RDF, semantic querying;
  • security and common attack vectors and preventions;
  • Software Engineering and Development Processes in Collaborative Teams;
  • SCRUM and Agile methods;
  • Engineering Excellence;
  • internationalization, design for accessibility;
  • responsive web design; design for mobile devices, tablets and touch interaction.

On successful completion of this module students will be able to:

  • Understand web architectures, standards and business practises
  • Empirically assess the performance of a web site
  • Understand and alleviate potential performance bottlenecks
  • Address issues and limitations of scale
  • Accessibility and Internationalisation
  • Design for Heterogeneous platforms (Responsive web design)
  • Establish a quality process for web sites
  • Security threats and hardening of web sites

Outline Syllabus

This module is designed to sensitise students to the wide range of issues surrounding the structure, design, commissioning and deployment of contemporary, large scale and high performance web based services and infrastructures.

The module is structured into a set of topics, each offering insight into the advanced internet systems from a different perspective.  Namely:

  • Web Architecture, Scale  Performance
  • Web Analytics
  • Programming the Web (introduction to contemporary web frameworks)
  • Linked data semantics
  • Security and the Web
  • Engineering and the Software Lifecycle
  • Web site accessibility
  • Designing for mobile / Responsive web design
  • Data driven web / storage

Weekly experimental lab tasks complement and reinforce the lecture material.

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.311: Distributed Systems

  • Terms Taught: Michaelmas Term only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 203 Computer Networks and SCC 211 Operating Systems.

Course Description

This module aims to provide an understanding of the fundamental principles underpinning modern distributed systems including the client-server model, RPC/ RMI, clock synchronisation, and supplement this with studies of practical tools and techniques currently available in distributed programming, focusing in particular Java RMI and associated Java-based software. It also aims to introduce and discuss key non-functional properties such as scalability, dependability and security, and provide an insight into current research issues in the distributed systems community.

Educational Aims

At the end of the course the students should:

  • have a strong understanding of what is meant by a distributed system, why people are developing such systems, and what are their potential problems;
  • understand the client-server paradigm and the role of middleware technology and be able to relate these to the concepts introduced in the practical stream;
  • have a good understanding of RPC, its role in middleware, issues in its design (e.g. transparency), and how it is implemented;
  • be able to compare the RPC service with alternatives such as publish-subscribe or distributed shared memory;
  • understand the principles of clock synchronisation and also group communication in distributed systems and why these are fundamental underlying services;
  • understand the importance of scalability in distributed systems and also core techniques to build scalable services;
  • be able to appreciate the security vulnerabilities in a modern distributed system, and general security principles to address such threats including cryptography and access control (with special focus on Kerberos);
  • understand the principles and protocols underlying dependable distributed computing including replication and consistency;
  • be able to develop relatively complex distributed systems using Java RMI;
  • be aware of and able to use added value software such as JMS, Jini and EJB (Enterprise Java Beans);
  • have an awareness of the new developments in the field of distributed systems.

Outline Syllabus

The lecture stream introduces fundamental principles that underpin modern distributed systems. This consists of 20 hours of lectures covering the following topics:

  • introduction to distributed systems;
  • key underlying mechanisms: remote invocation (RPC/ RMI), indirect communication, clocks and synchronisation, group communication);
  • non-functional aspects in distributed systems: scalability, fault-tolerance and dependability, security;
  • applications and services: distributed file systems, Google infrastructure.

The practical stream in contrast covers both the practical development of distributed systems using Java RMI and J2EE and also associated tools and techniques that can be employed. This consists of 10 hours of lectures as follows:

  • Introduction to Java RMI;
  • distributed systems design, security and Java RMI, the Java Messaging Service, Java Groups, Aspect J and distributed programming, resource discovery using Jini, component architectures including Fractal and Enterprise Java Beans (EJB).

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.312: Languages and Compilation

  • Terms Taught: Lent / Summer terms only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 120 Fundamentals of Computer Science.

Course Description

This module will introduce students to the theory of formal languages, and how it relates to programming languages.  They will study the relationship between formal languages and abstract machines, and how it relates to compilation.  It will give students a basic understanding of the compilation process for a high-level programming language, both analysis (lexical, syntactic and semantic) and synthesis.

Educational Aims

This module aims:

  • To introduce students to the theory of formal languages, and how it relates to programming languages. 
  • To study the relationship between formal languages and abstract machines, and how it relates to compilation.
  • To give students a basic understanding of the compilation process for a high-level programming language, both analysis (lexical, syntactic and semantic) and synthesis. 

Outline Syllabus

The first half of the course will introduce formal languages and will include an introduction to:

  • syntax and semantics, phrase structure grammars and the Chomsky Hierarchy as well as processes such as derivation and parsing. 
  • highlight grammar equivalence and ambiguity in Context Free grammars and its implications. 
  • the relationship between languages and abstract machines will be explored. 
  • the concept of computation will be presented alongside Turing's thesis, alternative models of computation (functional languages, etc) and applications of abstract machine representations.

The second half of the course will provide an introduction to the compilation process including:

  • lexical analysis and syntactic analysis, recursive descent and SLR techniques. 
  • Tools such as JLex and CUP will be presented.
  • semantic analysis and the symbol table which will lead into the synthesis phase: intermediate representations, target languages and structures and finally code generation.

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.341: Game Design

  • Terms Taught: Lent/Summer Terms only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 140 Creative Technology.

Course Description

The course covers game design by considering the cultural understanding of games in relation to play and in particular explore general definitions of what constitutes a game. It then adopts a general experience design approach and in particular the use of ‘Lenses’ to provide differing viewpoints for considering the operation of games.

Educational Aims

At the end of the course students will:

  • be able to describe games in terms of their relationship with play
  • understand the role of rules within games
  • be familiar with the body of work that forms the  theoretical foundation of game design.
  • be able to analyse games  through a series of lenses.
  • demonstrate an understanding which particular lenses to use for critical analysis of a specific game.
  • be sufficiently comfortable with the processes to start designing their own games

Outline Syllabus

In practical seminar students will play and analyse a range of games (including non-digital such as board games) using these lenses.

  • Core Concepts: defining games and play, play and culture, the magic circle, meaningful play, game genres, gamer behaviour.
  • Play: defining play, games as play experience, flow theory, games as social play.
  • Rules: defining rules, rules on multiple levels, balance in games, breaking the rules.
  • Lenses: games as emergent systems, games as information systems, games as economies, games as cybernetic systems, games as game theory systems.
  • Culture: games as cultural rhetoric

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.360: Computer Science Seminars

  • Terms Taught: Lent / Summer terms only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC205 Professional Issues and Research Methods.

Course Description

Within this course you will be exposed to a small number (two to three) of current computer science related topics from different subject areas. These areas will be introduced through a lecture covering the general aspects of the area. However, the main topical exposure will happen through seminar style in-depth study of specific parts of the subject area, which includes guided reading, a written seminar essay, presentation of the results in plenary and a discussion of the findings within the seminar group. Through this you will further deepen your skills in carrying out research, present your work in written, graphical and verbal form (which is related to SCC 205 Professional Skills and Research Methods) and discuss the research work with experts and peers.

Educational Aims

This module aims to:

  • enable students to do independent and in-depth research into an advanced topic of computing or communications reflecting current topical and research issues;
  • enable students to apply research skills to specific subject areas, present the results of their finding in front of a peer group and supervisor, and lead a guided discussion on their chosen subject area;
  • familiarise students with a variety of current and topical areas in computer science and communications that provide an additional and more in-depth perspective on subject areas taught throughout second and third year.

Outline Syllabus

The subject areas contributing to these seminars will come from SCC’s different thematic (research) strands and include (but are not limited to):

  • Natural Language Engineering
  • Policy Based Network Resilience
  • Eye-tracking for Ubiquitous Computing Applications
  • Energy Aware Control and Sensing in Home Environments

These topics will change in order to reflect a full spectrum of the School’s interests and also to keep the  seminars current, providing a sound basis for up-to-date topical discussion

Assessment Proportions

  • Exam: 40%
  • Coursework: 60%

SCC.361: Artificial Intelligence

  • Terms Taught: Michaelmas Term only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 110 Software Development.

Course Description

This module aims to give students a broad grounding in artificial intelligence including knowledge and understanding of reasoning, decision making, fuzzy logic, neural networks, and genetic algorithms and the skills to implement artificial intelligent systems. The understanding gained through the module should give the students an appreciation of the challenges in this area. Furthermore, the module will prepare students to understand and critically analyse artificial intelligence techniques used in modern computers and mobile devices.

Educational Aims

At the end of the module the students should be able to:

  • Understand fundamental Artificial Intelligence concepts and current trends and issues;
  • Understand and apply a range of artificial intelligence techniques including neural networks, fuzzy logic-based reasoning, genetic algorithms, search and planning;
  • Know of applications of artificial intelligence to intelligent systems;
  • Recognise computational problems suited to an intelligent solution and design intelligent systems;Apply the above techniques to analyse and design intelligent systems.

Outline Syllabus

  • Introduction to Artificial Intelligence, including a historical background;
  • Knowledge Representation and Reasoning: Predicate logic and logical inference, Knowledge based systems, Intelligent Systems, operations over fuzzy sets, fuzzy sets, fuzzy models (Mamdani and Takagi-Sugeno type), fuzzy inference;
  • Searching and planning, Decision Making (DM), DM under uncertainties
  • Probability theory: Bayesian Decision Theory. Probabilistic inference, Bayes networks;
  • Machine Learning: Supervised and unsupervised learning – principles of learning, learning a class from examples, definition and levels of autonomy, generalisation, over-fitting, regularisation, statistical, probabilistic and rule-based methods. Introduction to Neural Networks and Decision Trees.
  • Introduction to Multivariate Methods and Clustering and Classification approaches.
  • Introduction to evolutionary algorithms, genetic algorithms, phenotype, genotype, basic genetic operators
  • Introduction to programming languages suitable for intelligent systems (e.g. Scheme, Prolog)
  • Applications of Artificial Intelligence

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.365: Advanced Networking

  • Terms Taught: Lent/Summer Terms only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: SCC 203 Computer Networks.

Course Description

This course will build upon the fundamental concepts introduced in SCC 203 Networking, introducing a series of advanced topics in the networking domain.  It will:

  • Enhance the students knowledge by adding detail on advanced topics to their existing fundamental knowledge of computer networking 
  • Enable the students to understand how the Internet is structured in practice, and how different levels of service can be provided  
  • Allow the students to explore a number of the themes within the module from a practical perspective
  • Provide students with a detailed understanding of a number of current advanced research topics in the field
  • Give students an insight into industry perspectives on networking

Educational Aims

On successful completion of this module students will be able to:

  • Demonstrate a deep understanding of advanced concepts that underpin the Internet  
  • Describe and critically evaluate a number of core protocols and techniques used within communications networks
  • Implement a basic network topology, and support measurement and packet analysis techniques using network emulation mechanisms
  • Understand and appreciate a number of cutting edge research and industry topics within the networking domain

Outline Syllabus

This module will build upon the fundamental concepts introduced in Networking (SCC.203), introducing a series of advanced topics in the networking domain. The module is divided into 3 themes: Core topics that will reinforce the fundamentals gained in SCC.203, Practicals that will provide enhanced “hands-on” experience, and Research and Industry that will cover a range of topics that can be considered more current and advanced.

The Core theme will begin by looking at how networks are actually topologically constructed, in order to support customers’ service requirements. It will then broadly study the elements of a router that will enable the support of multiple classes of service, bandwidth and delay guarantees etc… From that point, the module will then focus on five key areas of advanced networking:

  • Bridging, layer-2 networks, source routing, transparent bridging
  • Switching, switch fabrics, input and output buffering, HOL blocking, LAN switching
  • Queuing, exploring techniques such as tail drop, Weighted Fair Queuing, Random Early Detection
  • Security, including types of attack (e.g. DoS, DDoS) and techniques to support security (e.g. IPSec, TLS)
  • Multicast, looking at the key elements and advantages/drawbacks of IP multicast, application layer multicast, etc.

The Practical theme will ensure a practical element to the module, looking broadly at the themes of Protocol Design and Network Emulation. The former theme will look at protocol specification, standardisation, implementation and testing from the perspective of gaining hands on experience. The latter theme will look at the configuration and management of virtual network topologies to enable hands on experience of network measurement and packet analysis.

The Research and Industry theme will provide a number of sessions that are based either on cutting edge research in the field, or on giving an industry perspective on current and future directions in networking. Given the nature of this theme, the topics covered here are likely to change year on year.

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.366: Media Coding & Processing

  • Terms Taught: Michaelmas term only.
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: No pre-requisites

Course Description

This course aims to introduce you to the concepts of media coding and compression and media processing. It will cover the basics of human perceptions over media presentation, coding and digitisation, compression, and advanced media processing. The course also covers these aspects for audio and video. Topics include: human perception, representation of media and coding; media compression and compression standards; image processing; video processing.              

Educational Aims

  • Introduce students to multimedia systems, coding, digitisation, compression and advanced digital processing techniques applied to image, speech, audio and video coding
  •  Enable students to understand the content processing methods and the mathematical interpretation of image, audio, and video processing methods.
  •  Emphasise from a system’s point of view on  speech production, speech synthesis and  low bit rate coding, waveform coding and up-to-date speech coders used in mobile and satellite communication systems.
  • Familiarise students with practical implementations in computer vision methods used in medical, surveillance and other applications.
  • Provide students with a broad range of knowledge and skills necessary for a career in computer science and engineering at a professional level.

Outline Syllabus

The following areas are covered:

  • Human Perception – basics of human hearing and vision, different audio and visual effects
  • Representation of Media & Coding–analogue audio formats, analogue digital conversion, types of speech coding systems; digital audio formats, monochrome image format, colour coding, pixels, grey scales, image resolution, component coding, coding redundancy, interpixel redundancy, psychoacoustic models, psychovisual redundancy, fidelity criteria, etc.
  • Media Compression & Compression Standards– image compression models; error-free compression, variable length coding, bit-plane coding, lossless predictive coding; lossy compression, lossy predictive coding, transform coding; image compression JPEG, MPEG, audio compression techniques (e.g. MUSICAM. ASPEC), MP3 and other MPEG audio standards
  • Image Processing - Image enhancement and restoration: histogram manipulation, grey level equalisation, thresholding, noise reduction by averaging, low and high pass spatial filters, linear and non-linear spatial filters, frequency domain processing, image compositing. Image analysis: segmentation, pattern recognition, texture selection, measuring shapes, object classification and object recognition. Image synthesis
  • Video Processing – basic parameters for video analysis,  cut detection (histogram based, edge change ratio, sum of absolute differences), face recognition, object recognition in video, deriving simple video semantics, content repurposing 4.2          

Assessment Proportions

  • Exam: 60%
  • Coursework: 40%

SCC.369: Embedded Systems

  • Terms Taught: Full Year
  • US Credits: 4 semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: This module has a quota. It is likely that there will be only a limited number of places (if any) available to visiting students.
    • SCC 110 Software Development (C programming) or equivalent
    • SCC 150 Digital Systems (Architecture, C/ Assembler, and Debugging) or equivalent
    • SCC 203 Networking or equivalent
    • SCC 211 Operating Systems or equivalent

Course Description

This course exposes you to the challenges associated with developing embedded systems, which are increasingly common in everyday appliances and devices such as mobile phones, washing machines, set-top boxes, etc.

The course syllabus is anchored by giving students real experience with a variety of embedded systems. Four or more core practical exercises (each with a dedicated hardware device) are tied into the lecture material, and the course concludes with a three-week mini-project based around a more advanced embedded system (e.g. a robot)

Educational Aims

At the end of the course the students should be able to demonstrate subject specific knowledge, understanding and skills and have the ability to:

  • Appreciate the special nature of embedded systems in terms of their physical resource constraints, including memory, processor capabilities, power, scheduling and real-time issues, and communications requirements.
  • Independently research and develop knowledge of how real world systems can be created within these constraints.
  • Provide insight into the fundamental operation of essential components found in embedded systems including processors, interconnects and operating systems
  • Design and develop, at an architectural and software/ firmware level, an embedded solution to a real-world problem within constrained resources.
  • Gather real world experience of using embedded systems development tools, languages and environments, and enhance their knowledge of assembler and C programming
  • Be able to keep consistent records of the iterative development of embedded systems

Outline Syllabus

The course includes the following topics:

  • Embedded Processors and Micro-controller architecture;
  • Real Time Scheduling;
  • Interrupts and interrupt handling,
  • Design and test strategies for embedded systems;
  • Software development for embedded systems,
  • Cross-Compilation;
  • Debugging;
  • Higher level architectures for embedded systems;
  • Communications technologies and their application for interconnecting embedded components (selected from I2C, CAN, UART/USART, pulse width modulation, analogue-to-digital and digital-to-analogue conversion, wireless interconnects such as IEEE 802.15.4);
  • sensors and actuators;
  • energy efficiency.

Assessment Proportions

  • Coursework: 40%
  • Project: 40%
  • Practical: 20%

SCC.400: Research Methods

  • Terms Taught: Michaelmas Term only
  • US Credits: 4 US Semester Credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: Must have completed 3 years undergraduate study in Computing or a Computing related subject, or must be enrolled for a Masters in a computing related area in their home insititution

Course Description

Students will gain a formal understanding of research and will develop the ability to critically reflect on research approaches and practices in the field of computing. Research Methods will also encourage an appreciation of the different ways that other disciplines, academic communities and industries all conduct research. There will be an opportunity to plan a research project and develop a convincing study design to address a challenge or problem. This module explores ethical and data management issues associated with research as well as research and innovation practices in industry.

The module covers the fundamentals of research such as sampling and design, before considering strategies and research methods. Furthermore, the module offers greater insight into research design, such as how to structure and frame research studies, choosing a research strategy and selecting the best research method. Students will learn about ethical issues in research and approval processes before understanding the opportunities and expectations from their industrial placements.

Educational Aims

On successful completion of this module students will be able to:

  • Understand different ways of doing research in different disciplines and in industrial RD projects.
  • Develop research and project proposals, and to choose and justify appropriate research methods.
  • Conduct effective literature reviews, and to critically analyse literature.
  • Understand the requirement for engineering activities to identify and manage cost drivers, in the context of research and innovation.
  • Appreciate working practices in industry and enter the workplace with sufficient awareness of professional practice.

Outline Syllabus

  • Introduction to research: motivations, methods, outcomes of research.
  • Fundamentals of research: the language of research; sampling, design, measurement, analysis; understanding validity.
  • Research methods: surveys; experiments; case studies; ethnography; design research
  • Research design: framing and structuring research studies; formulating problems, aims, and research questions; choosing a research strategy; selecting methods for data generation and data analysis.
  • Literature work: what is "The Literature"; scientific writing; processes of scientific publication and peer review; purposes and types of literature review; searching literature; critically analysing literature.
  • Research ethics: ethical issues in research; ethical analysis; ethics approval processes; what is research data; research data management.
  • Fundamentals of data science
  • Engagement with industry: professionalism, communication, and management of placements

Assessment Proportions

  • Coursework:  100%

SCC.401-CS: Elements of Distributed Systems

  • Terms Taught: Michaelmas Term only
  • US Credits: 4 US semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: Must have completed 3 years undergraduate study in Computing or a Computing related subject, or must be enrolled for a Masters in a Computing related area in their home insititution

Course Description

This module will equip students with the ability to develop and apply an understanding of fundamental principles, techniques and technologies that underpin today's global IT infrastructure. Students will learn to assess new systems technologies, to know where technologies fit in a comprehensive schema, and to know what to read in order to develop a deeper level of understanding.

Students will focus on the properties of system components, and will become familiar with the strengths, weaknesses, scalability and bottlenecks of systems components, with the aim to make intelligent and well-reasoned trade-offs between fundamental building blocks of distributed systems in todays IT infrastructure. The techniques and principles element of the module addresses caching, tiering, replication, synchronisation, failure and reliability, whilst the technologies section covers topics such as interaction paradigms in distributed systems, peer-to-peer architecture and scalable and high-performance networking.

Educational Aims

The module aims to:

  • Help students critically evaluate technical ideas and mechanisms for realising large scale and high performance systems
  • Improve confidence in reading and understanding research literature
  • Provide experience in analysing and reflecting on the fundamental elements in enterprise IT systems and the tradeoffs involved
  • Enhance independent research skills
  • Expose students to problem-solving and investigative techniques
  • Improve understanding from a real-world perspective

Outline Syllabus

In this module we explore the fundamental principles, techniques and technologies that underpin today's global IT infrastructure. The principal ethos of the module is to focus on the properties of system components, with the aim of encouraging a principled understanding of the strengths, weaknesses, scalability and bottlenecks of systems components. This will enable graduates of the MSc to be able to make intelligent and well reasoned tradeoffs between fundamental building blocks of distributed systems in todays IT infrastructure.Further, the course will review state of the art thinking regarding algorithms, and technologies behind such architectures, placing these within the framework of the current research agenda.The module will cover two key areas: fundamental techniques/ principles and fundamental technologies/ paradigms. 

Fundamental techniques/ principles will include coverage of the following:

  • Caching
  • Tiering
  • Replication
  • Synchronization
  • Failure
  • Reliability

Fundamental technologies/ paradigms will include coverage of the following:

  • Interaction paradigms in distributed systems
  • Peer-to-peer architecture
  • Scalable and high-performance networking
  • Scalable and enterprise storage
  • Data acquisition (e.g. sensor networks)
  • Enterprise computing and scalable processing
  • Large scale distributed information systems (e.g. high-performance web architectures)
  • High performance compute clusters, grid architectures
  • Enterprise security
  • Organisational impacts (e.g. data protection, security)

Assessment Proportions

  • Coursework:  100%

SCC.402: Advanced Human-Computer Interaction 1

  • Terms Taught: Michaelmas Term only
  • US Credits: 4 US Semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: Must have completed 3 years undergraduate study in Computing or a Computing related subject, or must be enrolled for a Masters in a computing related area in their home insititution

Course Description

Explore advanced topics in experimental Human-Computer Interaction (HCI), such as understanding users and their requirements, investigating design spaces and prototyping and developing innovative interaction techniques. The module offers increased experience in HCI literature and design methods both with and without users, as well as practical experience of using supporting tools. Students will learn about modelling techniques and design space techniques as part of the module.

Upon completion of the module, students will have the knowledge to conduct experimental HCI research and have the motivation, experience and tools for understanding users and their requirements for interaction. The module helps to develop scientific writing skills and analytical thinking and prepares students for further postgraduate study, or for a successful career in IT or computing.

Educational Aims

This module aims to:

  • Provide students with the knowledge to conduct experimental HCI research
  • Provide students with the motivation, knowledge, and tools to understand users and their requirements for interaction
  • Expose students to a range of prototyping tools and techniques
  • Provide students with practical experience developing new methods of interaction
  • Familiarise students with scientific writing for the HCI community

On successful completion of this module students will be able to:

  • Perform a synthesis of relevant HCI literature
  • Gather user requirements
  • Design and/or implement new interaction techniques
  • Design and/or implement novel interactive systems or applications
  • Prepare a scientific research report

Outline Syllabus

This module covers advanced topics in experimental Human-Computer Interaction (HCI), with a particular focus on understanding users and their requirements, exploring design spaces, prototyping and developing interaction techniques.

Key topics include:

  • The HCI research space:
  • Academic vs. Industrial HCI research
  • In the small vs. in the large
  • In the lab vs. in the wild
  • Understanding the HCI literature
  • Interaction technologies and techniques
  • Understanding users and requirements
  • Prototyping, design methods (both with and without the user), and supporting tools
  • Design space explorations
  • Modelling techniques
  • Writing for HCI research fora.

Assessment Proportions

  • Coursework: 100%

SCC.403: Data Mining

  • Terms Taught: Michaelmas Term only
  • US Credits: 4 US Semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites: Must have completed 3 years undergraduate study in Computing or a Computing related subject, or must be enrolled for a Masters in a computing related area in their home insititution

Course Description

This module provides a comprehensive coverage of the problems related to data representation, manipulation and processing in terms of extracting information from data, including big data.

Practical laboratory sessions will offer students an opportunity to gain a fundamental theoretical level of knowledge and skills in computer science. Students will then apply their working understanding to the data primer, data processing and classification. The module will enhance students familiarity with dynamic data space partitioning, using evolving, clustering and data clouds, and monitoring the quality of the self-learning system online. 

Further skills provided on this module include the ability to develop software scripts that implement advanced data representation and processing and demonstrate their impact on the performance, as well as a working knowledge in listing, explaining and generalising the trade-offs of performance and complexity in designing practical solutions for problems of data representation and processing in terms of storage, time and computing power. Transferrable skills include development in time management and effective report writing.

Educational Aims

This module aims to:

  • Introduce students to the challenges and opportunities which the Data offer
  • Provide students with an understanding of data representation and processing and in particular clustering and classification methods and specific techniques
  • Provide students with analysis and synthesis skills as applied to different methods for data representation and processing
  • Provide students with an understanding of different types of data representation and processing methodologies
  • Provide students with sufficient knowledge for the analysis of advanced data represnetation and processing methods
  • Familiarise students with practical aspects of the applications of data representation and processing methods.

On successful completion of this module students will be able to:

  • Demonstrate understanding of the concepts and specific methodologies for data representation and processing and their applications to practical problems
  • Analyse and synthesise effective methods and algorithms for data representation and processing
  • Develop software scripts that implement advanced data representation and processing and demonstrate their impact on the performance
  • List, explain and generalise the trade-offs of performance and complexity in designing practical solutions for problems of data representation and processing in terms of storage, time and computing power

Outline Syllabus

This module will provide a comprehensive coverage of the problems related to Data representation, manipulation and processing in terms of extracting information from data, including big data. It has been designed to prepare the fundamental theoretical level of knowledge and skills (at the related laboratory sessions) of the students to this specific aspect of Computer Science which plays an important role in any system and application. In this way it prepares them for the second module on the topic of Data as well as for their projects.

The following topics will be covered:

  • Data Primer: Setting the scene: Big Data, Cloud Computing; Data Representations, The time, storage and computing power compromise: off-line versus on-line;
  • Data Pre-processing:
  • Clustering: hierarchical (agglomerative, divisive), k-means, density-based clustering, on-line, evolving
  • Classification
  • Randomness and determinism, frequentistic and belief based approaches, probability density, recursive density estimation, averages and moments, important random signals, response of linear systems to random signals, random signal models.
  • Discriminative (Linear Discriminant Analysis, Single Perceptron, Multi-layer Perceptron, Learning Vector Classifier, Support Vector Machines), Generative (Naive Bayes)
  • Supervised and unsupervised learning, online and offline systems, adaptive and evolving systems, evolving versus evolutionary systems, normalisation and standardisation
  • Fuzzy Rule-based Classifiers, Regression or Lable based classifiers
  • Self-learning Classifiers, evolving Classifiers, dynamic data space partitioning using evolving clustering and data clouds, monitoring the quality of the self-learning system online, evolving multi-model predictive systems.
  • Semi-supervised Learning (Self-learning, evolving, Bootstrapping, Expectation-Maximisation, ensemble classifiers)
  • Information Extraction vs Retrieval, Inference mechanisms, Associative and Fuzzy Rules

Assessment Proportions

  • Coursework: 100%

SCC.411: Systems Architecture and Integration

  • Terms Taught: Lent/Summer Terms only
  • US Credits: 4 US Semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites:
    • Must have completed 3 years undergraduate study in Computing or a Computing related subject, or must be enrolled for a Masters in a computing related area in their home insititution
    • Must be taken with SCC.401-CS

Course Description

Introducing a range of architectural approaches, techniques and technologies that underpin todays global IT infrastructure, this module combines with other modules to form the systems stream of the programme. It is designed to enhance students knowledge of how building blocks are composed to create systems of systems.

Students will gain a detailed understanding and an ability to critique contemporary systems architecture in terms of scalability, resilience, performance and other shortcomings.

The principal ethos of this module is to focus on the principles, emergent properties and the application of systems elements as used in large-scale and high performance systems. Detailed studies and invited industrial speakers will be used to provide supporting real-world context and a basis for seminar discussions. Students are also offered hands-on measurement-based coursework that focuses on the scalability of a significant technology

Educational Aims

The module aims to:

  • Enhance the students knowledge of how building blocks (systems elements) are composed to create systems of systems
  • Detailed understanding and ability to critique contemporary systems architecture in terms of scalability, resilience, performance, and other shortcomings.
  • Enable students to understand systems architecture in terms of its requisite components and underlying fundamental systems principles
  • Enable students to comprehend and rationally decompose enterprise and large scale systems architectures
  • Provide students with a detailed understanding of the state of the art in contemporary systems architectures
  • Provide a scaffolding of theory and related research and how this relates to current systems architecture thinking

On successful completion of this module students will be able to:

  • Demonstrate a deep understanding of the architectures and approaches for large-scale systems implementation
  • Describe and critically evaluate techniques and paradigms used within enterprise-scale IT systems
  • Understand and appreciate the trade-offs, strengths and limitations of systems architectures in principle and practice in modern IT systems

Outline Syllabus

In this module we explore the architectural approaches, techniques and technologies that underpin today's global IT infrastructure and particularly large-scale enterprise IT systems.  It is one of two complementary modules that comprise the Systems stream of the Computer Science MSc, which together provide a broad knowledge and context of systems architecture enabling students to assess new systems technologies, to know where technologies fit in the larger scheme of enterprise systems and state of the art research thinking, and to know what to read to go deeper.

The principal ethos of the module is to focus on the principles, emergent properties and application of systems elements as used in large-scale and high performance systems.  Detailed case studies and invited industrial speakers will be used to provide supporting real-world context and a basis for interactive seminar discussions.

  • Principles covered will include:
  • Systems of systems composition
  • Scalability concerns
  • Systems integration/interoperability
  • Software and Infrastructure as a Service (i.e. Cloud computing principles)

In addition to the discussion and seminar led aspects of the course, we envisage hands-on measurement-based coursework that looks empirically at the scalability of a significant technology, e.g. a cloud system such as Amazon EC2.

Assessment Proportions

  • Coursework: 100%

SCC.412: Advanced Human-Computer Interaction 2

  • Terms Taught: Lent/Summer Terms only
  • US Credits: 4 US Semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites:
    • Must have completed 3 years undergraduate study in Computing or a Computing related subject, or must be enrolled for a Masters in a computing related area in their home insititution
    • Must be taken with SCC.402

Course Description

This module covers advanced topics in experimental Human-Computer Interaction (HCI) with an emphasis on experimental design, evaluation methodologies, statistical analysis and result interpretation. Whilst engaging with a number of key topics, students will be asked to explore the evaluation process. Students will learn to recognise when HCI is required and which forms of evaluation is necessary in a given situation, for example making appropriate selections from systems vs user and qualitative vs quantitative evaluations.

Practical sessions will enable students to develop skills with statistical analysis packages. They will also receive guidance on the application of appropriate tests and result reporting.

Educational Aims

This module aims to:

  • Provide students with the knowledge to conduct experimental HCI research
  • Provide students with practical experience in designing, implementing and conducting user studies.
  • Provide practical experience with statistical analysis packages, provide guidance on the application of appropriate tests, and familiarise students with result reporting.
  • Familiarise students with scientific writing for the HCI community

On successful completion of this module students will be able to...

  • Plan, implement and conduct a user study
  • Critically analyse and report evaluation results
  • Prepare a scientific research report

Outline Syllabus

This module will cover advanced topics in experimental Human-Computer Interaction (HCI) with a particular focus on experimental design, evaluation methodologies, statistical analysis and result interpretation.

Key topics include:

  • The evaluation space:
  • When is HCI evaluation appropriate and what should we evaluate?
  • Systems vs. User evaluation
  • Qualitative vs. Quantitative evaluation
  • Evaluation methodologies both with and without the user
  • Experimental design and setup
  • Evaluation tools
  • Statistics for HCI
  • Analysing, interpreting, and generalizing results.
  • Understanding limitations.

Assessment Proportions

  • Coursework: 100%

SCC.413: Applied Data Mining

  • Terms Taught: Lent / Summer Terms only
  • US Credits: 4 US Semester credits
  • ECTS Credits: 8 ECTS
  • Pre-requisites:
    • Must have completed 3 years undergraduate study in Computing or a Computing related subject, or must be enrolled for a Masters in a computing related area in their home insititution
    • Must be taken with SCC.403

Course Description

This module provides students with up-to-date information on current applications of data in both industry and research. Expanding on the module Fundamentals of Data, students will gain a more detailed level of understanding about how data is processed and applied on a large scale across a variety of different areas.

Students will develop knowledge in different areas of science and will recognise their relation to big data, in addition to understanding how large-scale challenges are being addressed with current state-of-the-art techniques. The module will provide recommendations on the Social Web and their roots in social network theory and analysis, in addition their adaption and extension to large-scale problems, by focusing on primer, user-generated content and crowd-sourced data, social networks (theories, analysis), recommendation (collaborative filtering, content recommendation challenges, and friend recommendation/link prediction).

On completion of this module, students will be able to create scalable solutions to problems involving data from the semantic, social and scientific web, in addition to abilities gained in processing networks and performing of network analysis in order to identify key factors in information flow.

Educational Aims

This module aims to introduce students to current research problems and challenges related to data and its application, and develop skills, knowledge and understanding in:

  • The use of semantic data at large-scale and the current research trends in distributed processing of semantic data
  • Recommendations on the Social Web and their roots in social network theory and analysis, and their adaption and extension to large-scale problems
  • The different areas of science and their relation to big data, and how large-scale challenges are being addressed with current state of the art techniques

On successful completion of this module students will be able to:

  • Create scalable solutions to problems involving data from the semantic, social and scientific web
  • Process networks and perform network analysis to identify key actors in information flow;
  • Understand the current trends of research in the semantic, social and scientific web and what challenges still remain to be solved
  • Demonstrate working knowledge of distributing work loads for scalable applications

Outline Syllabus

This module will provide students with up-to-date information on current applications of data in both industry and research. The module will build on SCC.403  Fundamentals of Data by explaining how data is processed and applied at large-scale across a variety of different areas.

  • The Semantic Web: primer, crawling and spidering Linked Data, open-track large-scale problems (e.g. Billion Triples Challenge), distributed and federated querying, distributed reasoning, ontology alignment.
  • The Social Web: primer, user-generated content and crowd-sourced data, social networks (theories, analysis), recommendation (collaborative filtering, content recommendation challenges, and friend recommendation/link prediction).
  • The Scientific Web: from big data to bid science, open data, citizen science, and case studies (virtual environmental observatories, collaboration networks).
  • Scalable data processing: primer, scaling the semantic web (scaling data processing and distributed reasoning using MapReduce and Apache Spark), scaling the social web (collaborative filtering, link prediction), and scalable network analysis for the scientific web.

Assessment Proportions

  • Coursework: 100%

SCC300E: Erasmus Final Year Project

  • Terms Taught: This project can be taken at anytime
  • US Credits: 8 Semester Credits
  • ECTS Credits: 16 ECTS

Course Description

The Final Year Project is a substantial individual project, normally involving the principled design, implementation and evaluation of a substantial piece of software, experimental study or theoretical work. Students selection and allocation of supervision will be coordinated by the academic in charge Prof. Gellersen. The requirements of the degree scheme, the student's interests and the supervisors area of expertise are taken into account during project allocation.

Educational Aims

On successful completion of this module students will be able to:

  • write a coherent proposal for a significantly complex Computer Science  related project, including work packages, milestones and a time plan.
  • undertake the research required for an individual project, including a requirements analysis, searches of technical repositories, analysis and selection of alternative technologies, and surveys of existing bodies of work.
  • apply theoretical concepts and practical skills associated with the degree specific domain - write a coherent technical report that accurately documents a project. present, demonstrate and discuss objectively the highlights and drawbacks of the project to a technical and non-technical audience.

Outline Syllabus

The student normally receives weekly guidance (of around 45 minutes) from his/her project supervisor (a member of the School of Computing and Communications). Regular supervision ensures a required level of academic achievement and rigour is maintained throughout the project.

Assessment Proportions

  • Coursework: 100%