Writtle University College and ARU have merged. Writtle’s full range of college, degree, postgraduate and short courses will still be delivered on the Writtle campus. See our guide to finding Writtle information on this site.

Back to course details

Artificial Intelligence BSc (Hons)

Year 1

Introduction to Programming (30 credits)

Computers are a part of everyday life and there is no indication that this aspect will ever change. Understanding how they work and having the ability to program them for specific tasks (i.e. Factory Automation, Cash Point, etc.) is a key skill in today’s world. You will be introduced to the procedural programming paradigm, requiring no prior programming experience. You will use industry-standard tools and techniques to design, implement, test and document simple programs using a current programming language such as C, Python, or C++. The skills within will help you to understand the principal components of a program, laying the foundation for subsequent modules requiring structured programming ability. The principles of good programming practice will be emphasised and you will be introduced to techniques required to develop software which: is robust and efficient; satisfies the needs of the customer; consists of elegant, easy to read code; and is resilient within the cyber security context. By the end of the module, you should have sufficient mastery of a procedural programming language to allow you to design, implement and test simple programs. The skills taught within the module are intended to be directly transferable to the workplace and to provide a suitable foundation for pursuing a wide range of computing-related careers.

View the full module definition

Computer Systems (30 credits)

This module consists of two strands: 'Computer Architecture' and ‘Network fundamentals’. Both strands will enable you to learn materials that are of great interest to employers. This module aims to provide you with an understanding of the fundamental behaviour and components of a typical computer system, and how they collaborate to manage resources and provide services in scales from small embedded devices up to the global internet. You will be introduced to IP networks exemplified through the TCP/IP and OSImodels. Laboratory sessions will give you hands-on experience on constructing and configuring network devices. You will use the Cisco CCNA introduction to data network technology course which is the first of four Cisco courses that can be used to obtain a Cisco CCNA qualification. This module will lay the foundation of and prepare you for the computer software, computer networking and cyber security sector to name a few.

View the full module definition

Computer Modelling and Simulation (15 credits)

In this module you will be introduced to the principles by which computer models, simulations, and solutions may be generated from a detailed problem specification. You will examine real-world computational problems and datasets and develop solutions using industrially-relevant languages and tools. In the first half of the module, you will study the MATLAB® numerical computing environment and learn how to script mathematical expressions and simple algorithms, how computational problems and data may be represented using basic programming constructs, and how raw data and results may be presented and visualised. In the second half of the module, you will study the Python programming language, and will learn how NumPy can be used to represent arrays and matrices and perform numerical operations, how data can be visualised with matplotlib, and how the pandas library can be used for data analysis. Both MATLAB® and Python programming skills are in-demand in both industry and academia (e.g., both feature in the TIOBE and PYPL indices in the top 20, with Python typically in the top 5). The module will lay the foundation for a wide range of employment opportunities, as well as providing core skills that will be useful later in your course.

View the full module definition

Fundamentals of Artificial Intelligence (15 credits)

The UK Government has identified ‘Artificial Intelligence and Data’ as first of its four Grand Challenges in order to keep the UK at the forefront of technological innovation and industrial development. Artificial Intelligence can be defined as the computer emulation of the human thinking process. This module provides the foundations of understanding Artificial Intelligence (AI), its historical development, main application directions and how it has become one of today’s essential technologies. The module will explore the history of AI, essential concepts like supervised/unsupervised learning, neural networks, fuzzy logic, as well as the enabling role that large scale data collection and fast computing have in establishing AI as a main tool for development and automation in a growing number of industries. This module will also provide a fundamental understanding of key concepts of Artificial Neural Networks (ANN) and Fuzzy Logic (FL), as core elements of Artificial Intelligence (AI). ANNs are information processing structures that emulate the architecture and operation mode of the biological nervous tissue. In ANN, several basic entities named ‘neurons’ are interconnected and operate in parallel, transmitting signals to each other in order to perform a certain task. They form networks which have the special capability to simulate the learning process as an outstanding feature. Fuzzy Logic extends the principles of Boolean logic to handle the ‘partial true’ truth values between ‘completely true’ and ‘completely false’ truth values. Fuzzy Logic has emerged as an effective tool to control complex industrial processes and systems for which an exact mathematical model cannot be easily developed. The importance of data to both training of neural networks and the steps in a data science workflow will also be emphasised. Current hardware and software packages will also be introduced. Students undertaking this module will develop essential skills related to the understanding of some of the core principles of artificial intelligence alongside their key applications into the real world. Such skills are very much sought by employers as they underpin a wide range of modern industrial developments with a forecast for rapid growth.

View the full module definition

Introduction to Mathematical Techniques for Artificial Intelligence (30 credits)

Artificial intelligence aims to discover, analyse and classify patterns in data sets in a manner that lends itself to optimised automated or even autonomous operation. It is therefore a field that uses techniques that deal with multiple numerical features of data, the relative variation of these features, as well as the variability of the data that may determine a pattern. This module is essential to create a solid background in mathematical techniques and analysis in order to pursue a degree programme in artificial intelligence. The module will help you to assess your existing numerical and analytical skills and enable you to expand these into core mathematical skills, knowledge and techniques needed in order to tackle scientific and engineering problems in the field of pattern analysis and machine intelligence. You will be introduced to linear algebra, with an emphasis on the practical use of vectors, matrices and linear systems as representations of multi-dimensional data and processes. The techniques of calculus, differentiation and integration, are also discussed, with application to optimisation problems. Fundamental methods to obtain numerical solutions to analytical problems, as well as an introduction to modelling numerical data are also included. You will consider applications of the fundamental mathematical concepts into the context of artificial intelligence. The fundamentals employability skills that you will develop while taking this module are numeracy (through application of mathematical techniques), complex problem solving (through analysis and application of techniques to machine learning examples), critical thinking (through understanding, analysing and interpreting a variety of techniques and being able to select the most appropriate one for a given problem) and self-management (through preparations for formative and summative assessments). You will develop analytical skills and will be able to relate them to problems from a range of machine learning case studies. This is very useful if you move on to work in a variety of industrial roles like AI engineer, machine learning engineer or data analyst.

View the full module definition

Year 2

Database Design and Implementation (15 credits)

Databases is identified as a specific area of study within the 2007 QAA Computing benchmark. Computer science and information science are mostly all about data. A database management system is a way to store data in a way that makes it easier to retrieve, update, search and delete. Databases is a specialist field in its own domain leading to careers such as Database Designer, Database Developer and Database Administrator. Moreover, it is a part and parcel for many other job roles e.g. Software Engineer, Game Developer, Full-stack Web Developer and Back-end Developer. You will not only learn the specialist skills to design and implement a database, but also practice soft skills such as time management, presentation, teamwork, and collaboration. You will work in teams and analyse an existing e-commerce systems, propose a database solution for such a system, design the database, implement the database and evaluate it using SQL queries. You will be guided to think critically for the rationale of your design and write useful queries considering their business purpose and benefit of writing these one way than the other.

View the full module definition

Software Engineering (30 credits)

A software engineering life cycle explores software development processes including requirements analysis, modelling and design, code implementation and design patterns and testing and maintenance. When studying the subject, you will gain a theoretical understanding and practical experience of the life-cycle of software applications by learning how to apply software engineering principles to the development of a software system. You will look into the difference between the Waterfall and Agile methodologies and use the latter for project management including learning about the cost drivers that can influence projects. You will use a version control tool to manage source code history. In addition you will apply the knowledge gained in earlier modules to model and design a system by using a range of UML diagrams and you will learn about architectural design including the application of design patterns. Both the automated and manual testing are discussed and you will have to demonstrate the ability to use both of them. You will build on your employability skills by working in a team to develop a complete and robust software system including coordinating the work among team members using a distributed-version control system.

View the full module definition

Ruskin Module (15 credits)

Ruskin Modules are designed to prepare our students for a complex, challenging and changing future. These interdisciplinary modules provide the opportunity to further broaden your perspectives, develop your intellectual flexibility and creativity. You will work with others from different disciplines to enable you to reflect critically on the limitations of a single discipline to solve wider societal concerns. You will be supported to create meaningful connections across disciplines to apply new knowledge to tackle complex problems and key challenges. Ruskin Modules are designed to grow your confidence, seek and maximise opportunities to realise your potential to give you a distinctive edge and enhance your success in the workplace.

Advanced Analytical Techniques for Artificial Intelligence (15 credits)

Building on the mathematical methods acquired in Introduction to mathematical methods for artificial intelligence, this module provides further mathematical knowledge and techniques for the study of pattern analysis and machine intelligence. Substantial parts of the machine learning discipline are concerned with analysing large amounts of data in order to discover and label similarities between data points. These inferences are made based on probabilistic modelling and statistical measures of reliability. In this module, you will develop the basic theory of probability, covering discrete and continuous random variables and problems like conditioning and independence, Bayesian inference and applications. You will be equipped with knowledge and skills that will allow you to design simple probability models for prediction, to make basic statistical analyses of data, and to assess and interpret such analyses. The module will also expand the knowledge on linear algebra acquired at Level 4 with topics like decompositions of symmetric or arbitrary matrices, sparse computing and applications to machine learning. You will also explore the interconnection between linear-algebraic methods and statistical data analysis. The fundamentals employability skills that you will develop while taking this module are numeracy (through application of statistical and mathematical techniques), complex problem solving (through analysis and application of techniques to machine learning and data science examples), critical thinking (through understanding, analysing and interpreting a variety of techniques and being able to select the most appropriate one for a given problem) and self-management (through preparations for formative and summative assessments). You will develop analytical skills and will be able to relate them creatively to problems from a range of machine learning case studies, including real project data sets. This is very useful if you move on to work in a variety of industrial roles like data analyst, AI engineer or machine learning engineer. You will develop a broader horizon by experiencing how mathematics sits at the foundation of AI, pattern analysis and machine intelligence and thus will be able to engage with such problems and develop solutions from first principles.

View the full module definition

Machine Learning (15 credits)

Machine learning is a form of Artificial Intelligence that enables a system to learn from data rather than through explicit programming. Machine learning has become one of the most important topics within development organisations that are looking for innovative ways to leverage data assets to help the business gain a new level of understanding. In this module, you will learn about the most effective machine learning techniques and gain practice implementing them and getting them to work. You not only learn the theoretical underpinnings of machine learning, but also gain the practical know-how needed to quickly and powerfully apply these techniques to new problems. By the end of this module, you will have practical knowledge of supervised learning algorithms, key concepts like under- and over-fitting, regularization, and cross-validation and you will be able to identify the type of problem to be solved, choose the right algorithm, tune parameters, and validate a model. You will develop machine learning knowledge and skills and will apply them using industry-standard software to analyse and process data sets, including real-world case studies. This is very useful if you move on to work in a variety of industrial roles like AI engineer, machine learning engineer or data analyst. You will develop a broader horizon by experiencing how various types of machine learning techniques can be applied to real-world problems from a range of industries and, thus, you will be able to engage and relate with these diverse technical communities. The nature of assessment in this module will prepare you to plan, organise and allocate resources to implement a specification brief.

View the full module definition

Artificial Neural Networks (15 credits)

This module will equip students with detailed understanding of the core principles and applications of artificial neural networks (ANNs). The biological basis upon which neural networks are loosely based will be briefly summarised (including evaluating the key differences between biological and artificial neural networks), and the historical development of ANNs will be reviewed. The strengths/weaknesses of the ANN approach in comparison to other artificial intelligence (AI) methods will be discussed, and example problem types for which ANNs are suitable will be outlined (such as pattern recognition, classification, medical diagnosis, financial/economic data analysis and prediction, and gaming). The fundamental graph-based data structures and algorithms used in neural network architectures will be presented, and the basic topologies of different ANNs compared. A range of alternative neural network architectures will be presented, such as feedforward (including perceptron, autoencoder, and convolutional networks), radial basis function networks, Hopfield networks, Boltzmann machines, recurrent and spiking neural networks. Attention will be drawn to the advantages/disadvantages of each approach in specific problem domains. The merits of supervised and unsupervised learning, different activation functions, learning rules, and training approaches will be discussed. The approaches whereby a trained ANN is evaluated for overfitting will be presented, including training/testing partitions, k-folds cross validation, and leave-one-out validation. In weekly practical sessions, students will construct ANNs to solve computational problems that would be difficult to solve using conventional computing methods. A suitable high-level language and ANN functions from standard libraries will be used, such as TensorFlow, Caffe, Theano, and Keras with Python or MATLAB with the Neural Network Toolbox.

View the full module definition

Algorithm Analysis and Data Structures (15 credits)

Data Structures and Algorithms is described in the ACM/IEEE Joint Task Force for Computing Curricula as being 'Fundamental to computer science and software engineering' which also notes that 'Algorithms are essential in all advanced areas of computer science: artificial intelligence, databases, distributed computing, graphics, networking, operating systems, programming, security, and so on'. In this module you will examine the core data structures and algorithms used in all nontrivial software, enabling you to make sound decisions in the construction of computing solutions that have specific constraints in terms of time (speed) and space (memory). You will learn how to compare the asymptotic behaviour of fundamental computational structures and algorithms and develop the critical skill of making evidence-based choices when selecting from among multiple possible approaches to a given computational problem. To accomplish this, you will study the core mathematical concepts that provide a framework for computational and analytical thinking independently of any particular programming language or computing architecture. In a highly cited cover article by the IEEE Computer Society, What knowledge is important to be a software professional?, the results of a survey of 186 software professionals are presented in which they were asked which topics in Computer Science degree programmes they believed to be the most important. Data Structures & Algorithms was rated the second most important topic, preceded only knowledge of "specific programming languages". The importance of this module to your future career in software development or technical/scientific computing cannot be overemphasised.

View the full module definition

Year 3

Final Project (30 credits)

You will engage in a substantial piece of individual research and/or product development work, focused on a topic relevant to your specific discipline. The topic may be drawn from a variety of sources including: Anglia Ruskin research groups, previous/current work experience, the company in which you are currently employed, an Anglia Ruskin lecturer suggested topic or a professional subject of their specific interest (if suitable supervision is available).

View the full module definition

AI Techniques (Fuzzy Logic and Genetic Algorithms) (15 credits)

In artificial intelligence, an expert system is a computer system that emulates the decision-making ability of a human expert. Students are first introduced to the classic software architecture of an expert system as first developed in the 1980s, comprising a knowledge base and an inference engine and some well-known examples are described (e.g. Prospector, Mycin, Deep Blue). The theoretical basis for such rule-based systems is presented through covering some basic principles of propositional and predicate logic. Students will be expected to have a good working basic knowledge of one high level programming language (such as C#, Java, C++, Python) as they will be expected to be able to edit and configure small-scale source code examples of rule-based systems implemented in a high-level general purpose computer language. Students will also be introduced to a specialist logic computer programming language (e.g. Prolog, Lisp). Fundamental to all of this will be an appreciation of a kind of learning where new knowledge is derived from conditional facts. Modifications to the ‘crisp’ rule-based approach will then be outlined including the principles of fuzzification and de-fuzzification and how this manifests itself in a more accurate and customized output response. The use of genetic algorithms in expert systems follows a recent general trend to combine different methods of machine learning to optimise a solution. The principles of genetic algorithms will be reviewed, including how the biology of genes, chromosomes and reproduction can be represented in a computational context. Issues of problem representation through binary expression of those problems are covered, and students will edit pre-existing source code examples to evaluate and understand reproductive strategies and assess issues of accuracy and error minimisation. The course culminates in seeing how the two approaches of rule-based inferred learning and learning through utilisation of a genetic algorithm can be combined, principally by demonstration of some case examples drawn from computer gaming, the Internet of Things and in cybersecurity. This 15-credit module is quite practical with an emphasis on interactivity in terms of code development, and assessed entirely by coursework.

View the full module definition

Professional Issues: Computing and Society (15 credits)

Professional Issues: Computing and Society aims to provide you an understanding of the issues, opportunities and problems which have arisen as a result of the computerisation of wide areas of human activity. It is designed to enhance advanced computer reflective thinking in both computer science specialists and others, and is a key part of the programme of professional development for computer scientists and others seeking to embody professional values and approaches in the IT and computing fields. You will be covered by relevant and current topics in Computer Law (e.g. Data Protection; Intellectual Property Law; Computer Misuse) and other social, ethical and legal topics such as considering the causes and effects of systems failures (including but not limited to computer systems failure). Other aspects such as the ethical and professional responsibilities of graduates - particularly those from IT and computing disciplines - will be critically appraised. It is essential to ensure that a professional engineer has an in depth understanding of professional ethics, law and the impact of what they do on society. The knowledge and understanding obtained in this module will prepare you with an in-depth understanding on different legal, ethical, professional and system aspects of your future career particularly in the areas of IT, computer science and engineering.

View the full module definition

Deep Learning (15 credits)

This module will equip students with detailed understanding of the core principles and applications of Deep Learning. Neural network principles upon which deep learning is based will be revised (including what is a neuron and its similarity to a biological neuron). Basic architecture of a feed-forward neural network, activation functions and weights will be reviewed. Fundamental neural network architectures like feed-forward networks, Boltzmann machines, convolutional neural networks (CNN), and recurrent neural networks (RNN) will be introduced. The concept of how a neural network computes the output given an input in a single forward pass, and how to use this network to train a model will be covered. Students will learn how to calculate the loss and adjust weights using a technique called backpropagation. Different types of activation functions will also be introduced, as well as techniques to use to improve training speed, accuracy, and to prevent overfitting (regularization). The method of how to build a CNN as well as techniques, terminology, mathematics of deep learning will be discussed. How to appropriately build and train neural network models will be examined and compared. In addition, how classification topologies (such as AlexNet, VGG-16 and VGG-19, Inception, and ResNet) are designed and the usage scenarios for each will explored. A range of various suitable deep learning applications (e.g. recurrent neural networks (RNN) and their application to natural language processing (NLP)) will be presented and reviewed in detail. Furthermore how to use pre-trained models for best results will be outlined and discussed (e.g. how to make the most of the available labelled data using data augmentation). Using a blend of theoretical discussion, laboratory sessions and remote access to class servers, this module will cover the necessary skills to understand and evaluate, and to appropriately build and train models in various deep learning applications to achieve best results. The module is delivered by a mixture of classroom-based lectures and practical sessions. During and outside of scheduled class times students have remote access to a class server where they will be able to access notes, participate in discussions, store their documents and experiment with some of the class material.

View the full module definition

Cloud Computing (15 credits)

Cloud computing can be considered as a model to enable ubiquitous, anywhere, any time on-demand network access to a shared pool of configurable resources including networks, storage, processors, servers, applications, and services which can be rapidly provisioned in real-time and automatically. The topics you will study include virtualization, data centres, cloud resource management, cloud storage and popular cloud applications including batch and data stream processing. Your learning will cover different backend technologies to create and run efficient clouds and a study of the way clouds are used by applications to realise computing on demand. You will be involved in practical tutorials on different cloud infrastructure technologies. The knowledge and understanding you will obtain in this module will prepare you to meet the requirements for jobs such as a Cloud Engineer/Developer or a Cloud DevOps Engineer. Also, you will be able to acquire the knowledge and skills to enable you to provide consultancy services to companies who are aiming to transfer to cloud-based services and products.

View the full module definition

Image Processing (15 credits)

Use current industry standard tool and techniques and study the theoretical/mathematical foundations of image processing in tandem with practical work and coursework that applies this theory to modern real-world scenarios. Recent case studies have included security applications for the detection of human faces, systems for the automatic analysis of biological specimens, next-generation gesture-based interfaces, and machine vision systems for automated manufacturing. Image Processing is becoming increasingly important as computing power grows, and is used in a very diverse spectrum of computational problems, from self-driving cars, factory automation and robotics, intelligent medical diagnosis, airport security, the military, astrophysics, biometric systems (such as face, fingerprint and iris recognition), environmental monitoring, human-computer interfaces (such as gesture recognition and lip-reading systems), sport (for example, goal line technology and intelligent camera control in football), barcode and QR-code devices, law (from enhancing and interpreting criminal forensic evidence to upholding copyright law through watermarking), and in any applications that entail image manipulation and augmentation, such as Facebook Messenger, Snapchat, Instagram and many others. This module provides you with the opportunity to gain a solid understanding of the core computational processes that underlie these diverse applications, and the fundamental knowledge to apply what you have learned to new situations.

View the full module definition

Embedded Computing (15 credits)

More than 20 billion microprocessors and microcontrollers are currently providing intelligent features, smart capabilities, personalised interfaces, optimised communications to an incredibly wide range of devices. From automotive to healthcare, from science and industry to social science and finance, embedded computing is at the very hearth of almost all modern digital systems. In this module, you will develop a gradual, in-depth knowledge and understanding of embedded computing, analysing its relation to the design of modern digital systems and its applications in different areas and disciplines. Hands-on programming and code optimisation for embedded devices on commercial microcontrollers will be an important part of this module. You will be guided through different microprocessor architectures, real time and non real time hardware and software requirements for embedded microcontroller systems and different communication protocols. You will also explore the relationship between system performance and hardware and software interfaces. Finally, you will be introduced to some possible ethical and sustainability issues (and mitigations) related to the design and operation of embedded systems and smart devices. The module delivery strategy combines complex theoretical aspects, real-world case studies and practical examples (in lab, both supervised and unsupervised). You will be encouraged to take responsibility for your assignments and to work in your own time as well as during the timetabled classes. The successful completion of this module will increase your employability, acquiring industry standard skills, having a hands-on experience with mainstream embedded systems, directly applicable to real-world projects.

View the full module definition

Distributed Programming

Distributed Programming is the development of software applications that utilise the distributed functionality of an intranet or the internet. These applications are vital to the banking sector, commercial organisations and governmental institutions as they involve the fundamental technologies underpinning Cloud Computing and On-Line Multi-Player Gaming environments. The module covers the key principles of low-level distributed programming to manage the communication of data between computers. The language of implementation will be one whose libraries support Socket programming, such as Java, C# or C++. Students will learn how to develop applications that share out, or 'farm' large computing operations to smaller interconnected nodes thus implementing a kind of virtual parallel processing. A variety of practical exercises will illustrate these programming techniques and components in an Intranet environment. Examples of programming language support for some of the more common application and communication network protocols will be covered. Threads and multi-threading is introduced as a technique to manage concurrency and the marshalling of data between processes.

View the full module definition