First Year Courses
Semester One | Semester Two |
---|---|
Introduction to Programming | |
Mathematics | |
Introduction to Digital Media | Audio-Visual Computing |
Problem Solving for Computer Science |
Second Year Courses
Semester One | Semester Two |
---|---|
Principles and Applications of Programming | |
Software Projects | |
Algorithms | Internet and Distributed Programming |
Databases, Networks and the Web |
The Final Year
Semester One | Semester Two |
---|---|
Option 1 | Final Year Project |
Option 2 | |
Option 3 | |
Option 4 | |
Your final year consists of option courses and a major project, in which you apply your new technological skills to solve real-world problems in innovative and practical ways.
here is an example project.Introduction to Programming
This course teaches the basics of programming using a Java-based programming language called Processing. You will be introduced to programming to develop interactive graphical applications, including games. No previous programming knowledge is assumed. Topics include: drawing on screens, interaction with mice and keyboards, simple statements, variables and conditionals, for and while loops; loops within loops, arrays; functions, objects and classes, and inheritance.Lecturer Matthew Yee-King
Introduction to Programming Course MaterialsMathematics
Students will learn the basic mathematics required for the rest of their program. Topics include:- Set Theory
- Boolean Logic
- Functions and Relations
- Lists and Trees
- Numbers in Different Bases
- Probability
Lecturer Lahcen Ouarbya
Mathematics for problem solving Course MaterialsProblem Solving for Computer Science
Students will be introduced to a number of classical problems in Computer Science and their soutions including:- Computing roots of equations
- Converting numbers between bases (e.g. binary to decimal)
- Fibonacci Numbers
- Factoring Integers
- Greatest Common Divisor
- Counting Primes
- Sampling
- Random Walks
- Regular Expressions and Parsing
- Simulation of Turing Machines
- The Travelling Salesman Problem
Lecturer Lahcen Ouarbya
Introduction to Digital Media
See the the blog for more details.Lecturer Mick Grierson
Audio-Visual Computing
This course will cover the technical fundamentals of computing techniques used in digital media with a particular focus on sound/music computing and computer graphics.The course will cover basic sound and graphics programming, covering a range of topics such as:- MIDI
- sound waves and their properties
- sound synthesis
- mathematical methods (e.g. vectors, trigonometry, complex numbers)
- 2D Computer graphics
- image processing
- interactive graphics and sound
Lecturers Marco Gillies and Matthew Yee-King
Audio-Visual Computing Course MaterialsWeb Programming
This course will be an introduction to HTML5, CSS3 and Javascript. Students will learn the fundamentals of client-side web programming. Topics include:Have a game of Hangman (This is the sort of program you'll write in Web Programming)
Lecturer Kate Devlin
Web Programming Course MaterialsPrinciples and Applications of Programming
This course covers the following topics:- Program development on a primary (Java) and secondary platform (Android)
- Fundamental data structures and algorithms
- Computational complexity, run-time efficiency
- OO design and implementation
- General features of programming languages e.g. type, abstract data types, the memory model, virtual machines, scope
- Libraries
- Specific language features: primitive and reference types, class and instance variables, overloading, string manipulation, input and output streams, serialisation, Internet connectivity, error handling, generics, threads, memory management
- Advanced software techniques: concurrency, Internet programming, GUI and event driven programming
- Android application development
Lecturer Tim Blackwell
Principles and Applications of Programming course materials.Databases, Networks and the Web
This course consists of two parts:Databases
An understanding of Databases is essential for all Computer Scientists interested in `real word' applications. This is an introductory course into the theory and practice of databases using PostgreSQL (the world's most advanced open source database) and one of the starting points for the development of the new generation data warehouse technologies (including IBM's Netezza).
The course will present the functionality of database management systems, and will focus on the study of the relational databases and of the most used database programming language, SQL, in particular of its data definition and data manipulation components. Practical work on SQL will be illustrated in labs using the client server architecture, in particular by employing pgAdmin software as client on local machines, and PostgreSQL as database server running on a central server machine. The course will present also elements of database design, which is a key component in the process of building optimal database systems.
Due to the SQL standard implemented by PostgreSQL, students get the necessary skills to write portable SQL database code which can run on any other relational databases supporting this standard, including Oracle, MySQL, SQL Server, etc.
The database theoretical and practical elements studied in term 1 will prepare students for tackling the next phase in building database applications - consisting in adding web interfaces to databases, which will be studied in term 2.
Lecturer Daniel Stamate
Databases course materials not yet available.Networking and the Web
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document. PHP also generates SQL commands to query and update databases.
This is mainly a PHP course for server-side web-programming. Students will develop applications in term 2 which will integrate web programming with database access. Students will also learn about basic network topologies and TCP/IP protocol stack, IP addressing etc.
Lecturer Rodger Kibble
Networking and the Web course materials not yet available.Software Projects
Software Engineering (SE) is about designing, implementing, and modifying software so that it is of high quality, affordable, maintainable, and fast to build. It is a systematic approach to the analysis, design, assessment, implementation, test, maintenance and re-engineering of software, that is, the application of engineering to software.
This is a 100% coursework unit. The coursework is a software engineering user-centred group project that is chosen by the students in each group. Term 1 involves deciding on the project and creating a proposal: undertaking research about the intended users, designing with the users in mind, and prototyping the software. In Term 2, this proposal is implemented and the groups create their software. Each group has a member of academic staff allocated to them as a supervisor. Lectures cover the main principles of user-centred design and software engineering, and also include research methods. Groups will also give presentations and lead discussions in a seminar style setting.
Lecturer Kate Devlin
Software projects course materials.Algorithms
Algorithms are essential to the way computers process data. Many computer programs contain algorithms that specify the specific instructions a computer should perform (in a specific order) to carry out a specified task, such as calculating employees' paychecks or printing students' report cards. Thus, an algorithm can be considered to be any sequence of operations that can be simulated by a Turing-complete system.
Computational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses on classifying computational problems according to their inherent difficulty. In this context, a computational problem is understood to be a task that is in principle amenable to being solved by a computer (which basically means that the problem can be stated by a set of mathematical instructions). Informally, a computational problem consists of problem instances and solutions to these problem instances.
Topics include:- Timing Programs and drawing graphs of the size of the input against the time
- Big O notation.
- Understanding the difference between linear, O(n log(n), quadratic, polynomial, and exponential time.
- Efficient vs. Inefficient Alorithms
- Using built-in Data structures; List, Sets and Maps
- Recursion
- User-defined tree-like structures
- Tree and Graph maniputlation
- Divide and Conquer algorithms
- Shortest-path algorithms
Lecturer Sebastian Danicic
Course MaterialsInternet and Distributed Programming
In this course you will learn to do low-level socket programming in Java which enables computers on different nodes of a network to communicate with each other. These computers, could, in fact be anywhere on the Internet. A key feature of these techniques is to be able to write concurrent (multi-threaded) code.
You will also learn about important features such as Object Serialisation and how to enable Java programs to communicate with a database server. This will enable you to combine the SQL techniques you will learn in the Databases course in Semester one.
Topics include:- Sockets in Java
- Multi-threading
- Multi-threaded Servers and Clients
- Web Spiders and Crawlers
- Interacting with a database in Java
- Object Serialisation
Using these techniques you will produce interesting and useful distributed applications. You will learn how to program clients and servers and to enable them to comunicate accros the internet. These techniques have many applications including chat systems, communication on mobile phones and social networking systems.
Lecturer Sebastian Danicic
Course MaterialsCurrent Final Year Options
NEURAL NETWORKS
The course introduces the theory and practice of neural computation. It offers the principles of neurocomputing with artificial neural networks widely used for addressing real-world problems such as classification, regression, pattern recognition, data mining, time-series prediction, etc.. Two main topics are covered: supervised and unsupervised learning. Supervised learning is studied using linear perceptrons, and non-linear models such as probabilistic neural networks, multilayer perceptrons, and radial-basis function networks. Unsupervised learning is studied using Kohonen networks. Recurrent networks of the Hopfield type are briefly covered. There are offered contemporary training techniques for all these neural networks. Knowledge and tools for the specification, design, and practical implementation of neural networks are also provided.
Lecturer Nikolay Nikolaev
INTERACTION DESIGN
This course provides an understanding of the theoretical and methodological issues that can be applied to the design and evaluation of interactive computer-based systems.
Lecturer Kate Devlin
COMPUTER SECURITY
The overall intention for this half-unit is that you become familiar with the need for security in computer systems and know about particular techniques which are in current use for solving them. You should know how these techniques can be applied and the range of problems where they are applicable. Other units of your programme also look at the security of systems. So you may well be familiar with the need for security for distributed systems, databases and the internet. You may know, for example, that public key cryptosystems (also known as asymmetric cryptosystems) solve some of the problems of key management and authentication. It is the intention of this course to help you understand not only what these techniques can do but how they do it. This will provide you with a knowledge for the potential and reliability of these techniques and should equip you with a sound basis for learning developments as they happen in the future.
Lecturer Ida Pu
ELECTRONIC COMMERCE
This course is aims to familiarize individuals with current and emerging electronic commerce technologies using the Internet. The goal of this course is to provide students with a detailed analysis of the concepts and techniques required to complete the 3rd year course on electronic commerce. In achieving this, a further goal is to equip students with a detailed understanding of the major issues regarding the deployment of Internet technologies within organisations and between organizations. Topics include Internet technology for business advantage, managing electronic commerce funds transfer, reinventing the future of business through electronic commerce, business opportunities in electronic commerce, electronic commerce Web site design, social, political and ethical issues associated with electronic commerce, and business plans for technology ventures. The purpose of this course is to educate a new generation of managers, planners, analysts, and programmers of the realities and potential for electronic commerce.
Lecturer James Ohene-Djan
DATA MINING
This course covers machine learning and statistical techniques applied in the discovery of knowledge or hidden patterns in potentially large volumes of data, field known as \u201cData Mining\u201d. The course also offers pointers towards new developments of the field as those concerning the multimedia data mining, in particular the text, web, and music data mining. Upon completion of this course students will posses theoretical and practical knowledge regarding a broad collection of Data Mining algorithms and Data Mining practices, and will be able to code such algorithms in a programming language and to use them with specialised machine learning software in concrete applications.
Lecturer Daniel Stamate
ARTIFICIAL INTELLIGENCE
The course introduces the essential principles of artificial intelligence as part of computer science. The emphasis is on heuristic problem solving methods. The course material includes the following topics: heuristic search techniques, knowledge representation, rule-based systems for deductive problem solving, search-based planning, and inductive machine learning. The covered heuristic techniques are: depth-first search, breath-first search, iterative deepening, bidirectional search, hill climbing, and adversarial search. There are provided guidelines for implementing practical expert systems, planning systems and empirical learning systems with version spaces using the candidate elimination algorithm
Lecturer Ida Pu
ADVANCED AUDIO-VISUAL PROCESSING
Advanced Audiovisual Processing aims to enhance students' skills and experience in the development of software for the creation and manipulation of sounds and images, both in real and non-real time. The course extends the principles of creative engineering for use in arts, games and more general interaction scenarios so that students can develop their own projects through the use of computational approaches to audiovisual processing.
Lecturer Mick Grierson
PHYSICAL COMPUTING
Physical Computing is of increasing interest to artists, musicians, choreographers and other creative practitioners for the creation of novel artworks and also for forms of computational interaction between these objects and people. There are many other applications of Physical Computing, for example in museums, ubiquitous and embedded computing, robotics, engineering control systems and Human Computer Interaction. A physical environment may be sonic, tangible, tactile, visually dynamic, olfactory or any combination of these. The course will explain and demonstrate how the environment, which is essentially continuous can be monitored by analogue electrical and mechanical sensors. Computers, however, are digital machines programmed by software. A focus of this course, therefore, is the interface between the digital and the analogue. This study encompasses basic physics, electronics, programming and software engineering. The practical objective of this course is the development of the skills needed for designing and building interactive physical devices. The course will be taught as a series of seminars and lab sessions oriented around the popular Arduino platform and development environment.
Lecturer Brock Craft
ADVANCED GRAPHICS AND ANIMATION
This course will cover advanced methods used in current state of the art graphics and animation systems. This course will cover the mathematical foundations, computational techniques and their use in creative practice.
Lecturer Kate Devlin
Application enquiries
Please see how to apply for information on applying to this programme.
Introduction to Social Computing
This module will approach the world of social media through the lens of computing. It will explore how the affordances of social technology enable both digital culture and social impact. By the end of this course, students will have developed a critical and constructive approach to social media and social computing. They will gain insight in to the diversity of social media, it's basis in programming, and different ways to understand its impact. They will experiment with a wide variety of social media tools as well as methods for analysis and visualisation. Students will understand through practice how to apply their own skills in computer science to the world of social technology.Lecturer Dan McQuillan