Integrated Master in Science: Computer Science options
Year 3, Component 03
Option(s) from list
Want to learn about more advanced programming constructs and techniques? Topics covered in this module include concurrency, distributed programming, design patterns, and others. We will also take a closer look at some of the programming concepts taught previously. The module features a substantial, non-trivial assignment that should help you to hone - and demonstrate - your programming skills.
This module provides you with an introduction to formal languages and the structure of compilers and their main components. Gain a comprehensive understanding of syntax and semantics of basic programming languages elements; explore the regular and context-free grammars as well as the lexical and static analysis. By the end of this module you will be able to describe formal languages using BNF notation, explain the link between finite state automata and regular expressions and implement key parts of a compiler for a simple language.
This module offers you an understanding of standard IR models, of their merits and limitations, and teaches you how to design and implement a standard information retrieval system. Discover the essential foundations of information retrieval and gain solid, applicable knowledge of state-of-the-art search technology. Explore advanced concepts of search applications such as personalisation, profiling and contextual search.
Evolutionary computation is an exciting area of artificial intelligence that focuses on systematic methods (known as evolutionary algorithms) inspired by Darwinian evolution for getting computers to automatically solve problems starting from a high-level statement of what needs to be done. Evolutionary algorithms are today routinely used to solve difficult problems in industry, medicine, biology, finance, and much more. Evolutionary algorithms can even consistently solve difficult problems which require solutions in the form of computer programs. This is a form of automatic programming that is known as genetic programming. In this module you will learn how to use evolutionary algorithms and genetic programming to solve real-world problems from an international authority in these areas.
As humans we are adept in understanding the meaning of texts and conversations. We can also perform tasks such as summarize a set of documents to focus on key information, answer questions based on a text, and when bilingual, translate a text from one language into fluent text in another language. Natural Language Engineering (NLE) aims to create computer programs that perform language tasks with similar proficiency. This course provides a strong foundation to understand the fundamental problems in NLE and also equips students with the practical skills to build small-scale NLE systems. Students are introduced to three core ideas of NLE: a) gaining an understanding the core elements of language--- the structure and grammar of words, sentences and full documents, and how NLE problems are related to defining and learning such structures, b) identify the computational complexity that naturally exists in language tasks and the unique problems that humans easily solve but are incredibly hard for computers to do, and c) gain expertise in developing intelligent computing techniques which can overcome these challenges.
Interested in designing, programming and evaluating AI robots? To understand the potential applications for AI in the real world? Study different approaches to the use of AI robotics, along with associated design methodologies. Gain practical experience of building your own autonomous mobile robots and intelligent machines, from sensing to action.
Computer vision is the discipline that tries to understand the content of images and videos. It has an extraordinarily wide range of applications; well-known ones include inspection on production lines, reading number plates, mixing live and computer-generated action in movies, and recognising faces. However, researchers are working on applications such as driverless cars, building 3D models from photographs, robot navigation, gaming interfaces, and automated medical diagnosis -- in fact, whenever you as a human looks at the world and try to understand what you see is fair game for computer vision. This module introduces you to the principles of computer vision through a series of lectures and demonstrations. You have an opportunity to learn how to use these principles and algorithms on real-world vision problems in the associated laboratories using the industry-standard toolkit, OpenCV.
Massively Multiplayer Online Role-Playing Games are the largest and most sophisticated computer games in existence. This extraordinary module – which is quite unlike any other in the School – covers their design, history, influence and artistry, and is delivered by one of the two individuals who co-invented the genre here at Essex University in the late 1970s. If you’re interested in game design in general and MMO design in particular, you’re not going to find a module quite like this anywhere else.
This course covers the fundamentals of games development, with special emphasis on 3D games and the Unity Game Engine. In this practical course, with many code samples and exercises, you'll learn how to implement a complete 3D game in Unity, including all aspects of game development: User input, 3D models and animations, physics, camera, audio, lights, terrains, graphical user interfaces and artificial intelligence. No previous game development experience is needed, although having previous programming knowledge is strongly advised (all programming will be done in C#).
Large Scale Software Systems and Extreme Programming
The world demands software systems with ever increasing richness of behaviours and degrees of complexity. However, traditional software engineering techniques, which were inherited with relatively minor adaptations from other, older branches of engineering, have been struggling to scale up to the challenges posed by modern software systems. As a result, a large proportion (as much as a quarter!) of software projects based on traditional methods end up being cancelled at some point in their lifecycle, with many more being late, over budget and with less features than initially stipulated. In this module you will learn why traditional software engineering techniques fail, and you will become very familiar (through lectures, labs, videos and a large group project) with a novel set of techniques, known as Extreme Programming and Agile Software Development, which fundamentally solve these problems. In the last decade, these techniques have been so successful that today as many as 80% of all projects adopt agile methods.
How do you configure Internet routing protocols for interconnecting WAN and LAN technologies? How suitable are WAN protocols within a modern communications infrastructure? Study the theories behind simulating and analysing network performance. Understand the fundamental principles behind contemporary network architecture and protocols, and evaluate why new protocols are created.
How do you secure networked computers and systems? What are the methods you can apply to detect, mitigate and stop attacks? Examine common network security vulnerabilities and design computer network architectures that reduce risk. Study suitable security techniques and key management skills required for encrypted communication/authentication.
At Essex we pride ourselves on being a welcoming and inclusive student community. We offer a wide range of support to individuals and groups of student members who may have specific requirements, interests or responsibilities.
The University makes every effort to ensure that this information on its programme specification is accurate and up-to-date. Exceptionally it can be necessary to make changes, for example to courses, facilities or fees. Examples of such reasons might include, but are not limited to: strikes, other industrial action, staff illness, severe weather, fire, civil commotion, riot, invasion, terrorist attack or threat of terrorist attack (whether declared or not), natural disaster, restrictions imposed by government or public authorities, epidemic or pandemic disease, failure of public utilities or transport systems or the withdrawal/reduction of funding. Changes to courses may for example consist of variations to the content and method of delivery of programmes, courses and other services, to discontinue programmes, courses and other services and to merge or combine programmes or courses. The University will endeavour to keep such changes to a minimum, and will also keep students informed appropriately by updating our programme specifications. The University would inform and engage with you if your course was to be discontinued, and would provide you with options, where appropriate, in line with our Compensation and Refund Policy.
The full Procedures, Rules and Regulations of the University governing how it operates are set out in the Charter, Statutes and
Ordinances and in the University Regulations, Policy and Procedures.