MSc Computer Science

Award:  
Master of Science (MSc)
Level:Postgraduate
Duration:1 Year (fulltime only)
Fees:UK/EU £10,765
Overseas £22,350

Programme Administrator: Sally Longley

Programme Contact: email msccs-admissions@cs.ucl.ac.uk

Application Deadline: 29 May 2015

Applications are now firmly closed for September 2015 entry.  Admissions for September 2016 entry will open up from November 2015 in the portico online application system.Its best to apply between November and the end of March - offers will be made on a rolling basis. Later application are likely to be less successful.

 *New scholarships available for this programme!*


Our degree

This programme aims to provide a thorough introduction to computing both for new graduates and for those with work experience.

It is designed for non-computer science graduates who wish to augment their skillset with a solid background in Computer Science. Those with some previous industrial experience in the computer field can also broaden their horizons through the this programme, by gaining a sound knowledge of the theoretical basis and practical applications of computer science.

The emphases of the programme are on practical skills which are desired by the IT industry; however the degree also introduces key theoretical elements including algorithmics, compilers and operating systems.  A significant component of the programme is App Design which takes place in small groups of three with individual industy clients.  Some students continue the strong industry link by completing a summer dissertation project with companies such as Microsoft and IBM.

Our graduates

Graduates should be able to find employment in the computer industry, or to apply computing techniques in the subject area of their first degree.

Top graduate destinations include:       

  • Accenture
  • Barclays
  • Cap Gemini
  • Cisco

Top graduate roles include:                

  • Implementation specialist
  • Java Developer
  • Software Engineer
  • Technology Consultant

Top further study destinations:

  • University of Cambridge
  • UCL
  • University of Sciences, Paris

Average starting salary £31,200 (all data from Graduate Surveys, January 2014)

Our Staff

Dr Kevin Bryson

Dr Kevin Bryson

Admissions Tutor.

Research interests: particularly interested in the application of computational biology within neuroscience - how we design and implement innovative technologies that are fit for purpose, value for money, and improve productivity and well-being of individuals and society.

Email k.bryson@ucl.ac.uk

Webpage http://www0.cs.ucl.ac.uk/people/K.Bryson.html

Office Darwin.632

Dr Christopher Clack

Dr Christopher Clack

Senior Lecturer.

Research interests:include functional programming; parallel and distributed architectures; static analysis (incuding abstract interpretation); memory management; genetic programming; agent-based simulation; and financial computing. Christopher is an expert on intelligent systems and their application in finance, with particular expertise in evolutionary computation and agent-based modelling, and he is regularly invited to chair and talk at both industry and academic international conferences. Current work models and analyses financial market instability emerging from interactions between computer trading algorithms.

Teaches 'Functional Programming' module.

Email clack@cs.ucl.ac.uk

Webpage http://fs.cs.ucl.ac.uk/christopher-d-clack

Office 8.07 Malet Place Engineering Building

Dr David Clark

Dr David Clark

Senior Lecturer.

Research interests: analysis and verification, understanding software and specifications, reasoning about them, providing that they satisfy desirable properties, showing that they behave properly.

Teaches 'Systems Infrastructure' module.

Email d.clark@cs.ucl.ac.uk

Webpage http://www0.cs.ucl.ac.uk/staff/D.Clark/

Office 7.02 Malet Place Engineering Building

Dr John Dowell

Dr John Dowell

Senior Lecturer.

Research interests: human factors and interactive technologies. In particular the design and use of technologies for learning, decision-making and explanation. Funding for research has been provided  by the UK research councils, the European Commission, public sector agencies and industry. Has have advised the UK government on its IT projects.

Teaches 'Systems Infrastructure' & 'Database Systems' modules.

Email j.dowell@ucl.ac.uk http://ucl.ac.uk

Webpage http://www.ucl.ac.uk/uclic/people/j-dowell/ 

Office 5th floor, London Media Technology Campus, 1 Euston Square

Dr Nicolas Gold

Dr Nicolas Gold

Senior Lecturer.

Research interests:undertake research at the intersection of several domains: computer music, software engineering, and the digital arts/humanities.  In computer music, particularly interested in engineering systems for live ensemble performance where humans and computers perform popular music together (Human-Computer Music Performance).  Technical aspects involve problems such as score representation and management, robust cue reception and response using various interfaces including gestural and musical, and music generation in the ensemble context. In software engineering, currently work on ways to analyse source code to support software engineers.  This involves developing new program slicing and concept assignment techniques, particularly for multi-language web-based systems that have been traditionally hard to analyse using dependence-based techniques. In digital humanities, has worked in a range of areas including approaches to museum and gallery technology for collection exposure and visitor tracking, and currently working on mobile device support for rich interpretation. 

Teaches 'Computer Music' module.

Email n.gold@cs.ucl.ac.uk

Webpage http://www0.cs.ucl.ac.uk/staff/N.Gold/

Office 5.04 Malet Place Engineering Building

Dr Denise Gorse

Dr Denise Gorse

Lecturer.

Research interests: now centres mostly in the area of financial computing, with past work in bioinformatics(methods for predicting local protein structure, repeating motifs, interface regions in multi-subunit complexes) and on novel methods for global minimisation(chaperone-based techniques for finding nativelike states of heteropolymer energy functions; smoothing transformations for avoiding local minima in neural network training). Previous work focused on hardware-realisable stochastic neural networksas part of the UCL/KCL team that developed the pRAM (probabilistic random access memory) chip.

Teaches 'Artificial Intelligence and Neural Computing' & 'Algorithmics' modules.

Email d.gorse@cs.ucl.ac.uk

Webpage http://www0.cs.ucl.ac.uk/staff/D.Gorse/ 

Office 8.02 Malet Place Engineering Building

Prof Tony Hunter

Prof Tony Hunter

Professor of Artificial Intelligence.

Research interests:in the subject of inconsistent knowledge. This is an increasingly important topic in many areas of computer science including artificial intelligence, robotics, natural language processing, databases, information systems, and software engineering. It concerns the need to develop ways to analyse and characterise different kinds of inconsistency, to develop ways to reason in the presence of inconsistency, to develop ways to respond to inconsistency, and if necessary to resolve inconsistency, to develop ways to merge inconsistent knowledge from heterogeneous sources, and to construct arguments (pros and cons) for inferences using inconsistent knowledge. Work is based on formal propositional and predicate logic and it is published primarily in the area of knowledge representation and reasoning, which is a branch of artificial intelligence, and data and knowledge engineering.

Teaches 'Artificial Intelligence and Neural Computing' module.

Email a.hunter@cs.ucl.ac.uk

Webpage http://www0.cs.ucl.ac.uk/staff/a.hunter/

Office 6.03 Malet Place Engineering Building

Dr Dean Mohamedally

Dr Dean Mohamedally

Senior Teaching Fellow & Deputy Director for the Advanced Teaching Group.

Research interests: Constructionism and pedagogical learning theories within Computer Science education. Current focus is on software construction best practices in Software Engineering and the application of Computer Science in general education e.g. via current trends in Apps development and prototyping tools. At present, examining a number of school-based learning mechanisms for problem based learning, constructionist reinforcement and student-learning techniques from algorithm approaches to larger solution modelling.

Also Director for Apps Engineering for UCL's official App Strategy Working Group, across all UCL faculties.

Teaches 'Apps Design' module.

Email d.mohamedally@cs.ucl.ac.uk

Webpage http://www0.cs.ucl.ac.uk/staff/D.Mohamedally/ 

Office 7.06 Malet Place Engineering Building

Dr Graham Roberts

Dr Graham Roberts

Director of Studies.

Research interests: areas of architecture, patterns, test-first programming, mobile development and understanding how people can write reliable, good quality code. Also supervises a wide range of project work.

Teaches 'Database Systems' & 'Software Engineering' modules.

Email graham.roberts@ucl.ac.uk 

Website http://www0.cs.ucl.ac.uk/staff/G.Roberts/index.html

Office 5.07a Malet Place Engineering Building

Dr Venus Shum

Dr Venus Shum

Senior Research Associate.

Research interests: the Internet of Things (IoT) and she has worked in various projects related to both wireless sensor networks for environmental monitoring and wearable technologies. Recent research and development interest is around the Computing At School initiatives on informal and formal learning technologies, including collaboration with Microsoft and Mathwork.

Teaches 'Introductory Programming' module.

Email v.shum@ucl.ac.uk

Website http://www0.cs.ucl.ac.uk/staff/V.Shum/

Office 8.18 Malet Place Engineering Building

Our Modules

The programme is in three parts; a compulsory element covering the basic computer science; an optional element where you choose three courses according to your own interests from an options list; and finally a substantial individual project which is carried out full time after the examinations which are taken at the start of the summer term.

Compulsory courses are:

COMPGC01 - Introductory Programming

CodeCOMPGC01
YearMSc Computer Science and MSc Financial Computing
Prerequisites This course should be taken in conjunction with other core courses for MSc Computer Science and MSc Financial Computing.
Term1
Taught ByVenus Shum (100%)
AimsThis course introduces imperative and object-oriented programming using pure Java. The module uses Java to give a grounding in key object-oriented concepts such as class design, inheritance, dynamic binding and interfaces. Material is also included on the implementation of core data structures such as lists, trees and hash tables, and focuses on practicing OO programming to be better prepared for future courses including COMPGC02 Apps Design. This is an intensely practical module and full student engagement outside of lectures and in lab classes is critical to successful completion of the module.
Learning Outcomes

After completing the module attendees will:   

  • Be able to design and implement object-oriented programs in Java, using a large sub-set of the language effectively.
  • Have knowledge of key object-oriented principles and design strategies.
  • Understand how core data structures are implemented.
  • Be able to use programming tools such as an integrated development environment (IDE), debugger, and code repository.
  • Implement common data structures, such as trees, lists and hash tables

Content:

Topics covered in lectures or via online material:

Introduction to Imperative Programming

What is imperative programming?Introduction to Java.Variables.Conditions and loops.Types and type checking.Operators and expressions.Drawing simple pictures. 

Containers

Arrays

Container classes (Vector, ArrayList).

Files and file handling. 

Methods


Declaring methods and using method parameters.Scope and lifetime.Top-down programming. 

Objects

Java class libraries.Creating and using objects.Object references. 

Classes

Declaring classes.Instance variables and methods. 

Using an IDE and SDKs

Using and Writing Data Structures

Coursework

Several weekly exercises are required to be completed and checked in labs.

The Java coursework project for COMPGC01 is an individual project running in parallel to the COMPGC02 Apps Design project, and continues through to early December when the final submission is made

Method of Instruction:

Lecture presentations, online materials, lab-classes and tutorial sessions. Self-directed learning, problem based learning. 

Assessment:

The course has the following assessment components:

In-class tests x 2 (60%)

Coursework - programming exercises (40%)

To pass this course, students must:

Obtain an overall pass mark of 50% for all sections combined

Resources:

A UCL Library reading list can be found on Moodle. 

The recommended OO programming text is:

Developing Java Software, 3rd Edition, 

by Russel Winder and Graham Roberts, 

published by John Wiley and Sons, 2006 

ISBN: 0-470-09025-1-0 

A useful Android text is:

Beginning Android Application Development 

by Wei-Meng Lee 

published by John Wiley and Sons, 2012 

ISBN 978-1-118-01711-1

COMPGC02 - Design

CodeCOMPGC02
YearMSc Computer Science
PrerequisitesThis course should be taken in conjunction with the core courses for this programme (ie GC01, GC03, GC04 and GC05)
Term1
Taught ByDean Mohamedally (50%), Lorna Wall (50%)
Aims

This course introduces the concepts and methods required for the design and construction of apps software systems. It aims to develop a broad understanding of the disciplines of software engineering, project management and human computer interaction (HCI). It seeks to complement this with a detailed knowledge of techniques for the analysis, design and implementation of complex software intensive systems. It aims to set these techniques in an appropriate engineering, societal and managerial context. It applies the principles of OO programming (COMPGC01) in parallel with the development of apps via learning-by-doing and problem based learning (PBL) approaches. 

This is an intensely practical module and full student engagement outside of lectures and in lab classes is critical to successful completion of the module. To ensure that the process of designing and implementing mobile and cloud applications is fully understood, the module requires students to undertake a major group project where they must work with an external client to develop and deliver a working application. This takes students through all the stages of a software development project, applying the concepts taught via lectures and online material. Outcomes in addition to the software deliverable include real-world client engagement, team management and project documentation deliverables.    

The project clients come from a wide range of backgrounds, including companies of all sizes, the NHS, academic organisations and charities. Each client defines an application and technologies that they have a real need for and will put into use. A successful project will not only deliver a working application but also have it ready either for distribution via an app store at their client’s request or for handover as research materials. The interaction with clients to develop software meeting real-world needs and practical understanding of the human-computer interaction methods is a unique and defining characteristic of this module, and provides students with a thorough introduction to the processes and challenges involved.

Learning Outcomes

After completing the module attendees will:   

  • Be able to demonstrate the principles of appropriate HCI, project management and software engineering methods.
  • Be able to design, document and implement the software for a real-world client application, which could be a mobile app, cloud app or webservice.
  • Be able to design and implement graphical user interfaces suitable for scaling on multiple devices and resolutions.
  • Have experience of effective team work methods, project documentation and project organisation skills.
  • Have experience of interacting with a real client with user centred design methods considerations weighted strongly in the design aspect of the project.

Content:

Topics covered in lectures or via online material:

Human Computer Interaction

Overview of HCI

Gathering Data from Users

Understanding user needs/requirements

Design Guidelines

Sketching and Prototyping

Evaluation 

User interfaces

Principles of graphical user interface design and implementation.

Mobile, Cloud and Web Service development

Designing an app application.

Event driven programming.

Mobile app frameworks.

User interface design and implementation for touch based user interfaces.

Storing data.

Client and Project Management

Working as an effective software development team

Preparing project timelines and document templates

Reporting effectively with clients to meet requirements


Project work

The apps development project begins at the start of term in September, and continues through to early January when the final submission is made. 

Group formation: Students are split into project groups with around 2-3 members, each group being allocated a client who provides the requirements for the app to be developed. Project groups are selected by the module organisers, who also provide the clients. Clients will enter a partnership agreement with the student team via UCL Advances. Project groups are responsible for organising themselves, submitting regular progress reports and working with the client. Lecturers and teaching assistants monitor progress and provide feedback.

Group deliverables: Regularly bi-weekly progress reports and three milestone submissions are made during the course of the project. The final submission includes the working version of the client’s application, video of the application and project report documentation for both the client and for examination. 

Individual deliverable: Each student is required to submit an individual report giving an evaluation of the project and an assessment of each group member including themselves.

Method of Instruction:

Lecture presentations and online material. Group project tutorials and group working (self-directed learning). 

Assessment:

The course has the following assessment components:

• Coursework Section (1 piece, 100%)

To pass this course, students must:

• Pass the Coursework (50% or more)

Resources:

A UCL Library reading list can be found on Moodle. 

The recommended OO programming text is:

Developing Java Software, 3rd Edition, 

by Russel Winder and Graham Roberts, 

published by John Wiley and Sons, 2006 

ISBN: 0-470-09025-1-0 

A useful Android text is:

Beginning Android Application Development 

by Wei-Meng Lee 

published by John Wiley and Sons, 2012 

ISBN 978-1-118-01711-1

COMPGC03 - Architecture and Hardware

CodeCOMPGC03
YearMSc
PrerequisitesThis course should be taken in conjunction with the core courses for MSc Computer Science and MSc Financial Computing.
Term1
Taught By Shin Yoo (100%)
AimsTo 'demystify' computers - i.e. to provide a basic understanding of how computers execute programs. To show how the basic components of the computer can be built from simple electronic components such as transistors and logic gates. To understand why certain design decisions are made with respect to computer architectures.
Learning OutcomesStudents should understand how basic logical and arithmetic operations are implemented and performed using simple electronic components, which role each of the major components of a computer system performs, how instructions are executed, how memory is accessed and managed, etc. They should appreciate the main performance measures and constraints.

Content:

Boolean algebra:

the abstract language that allows us to represent logical circuitry.

Fundamentals of hardware:

understanding of basic physics of electrical circuitry.

Transistors and memory:

the building blocks of computer systems.

Binary and Hexadecimal:

the representation of numbers used by computers.

Numbers in Computers:

understanding how basic arithmetics are implemented with logic cirtuis.

Inside Computers:

understanding a simple working model of a computer through a simulator.

Processor:

how CPU executes instructions of a program.

MIPS:

we investigate a real architecture, the structure of its instructions, and how to program at machine level.

I/O:

various methods through which CPU communicates with the external world.

Memory and Disk:

understanding basic concepts about primary and secondary storage, and learning their performance measures.

Memory Management:

how CPU actually uses memory during computer operation.

CPU:

to combine the machine level programming knowledge and the hardware components together through the MIPS example.

Method of Instruction:

Lectures and web-based exercises.

Assessment:

The course has the following assessment components:

- Coursework Section using an electronic system with immediate feedback (1 piece, 10%)

- Written Examination (2.5 hours, 90%)

To pass this course, students must:

- Obtain an overall pass mark of 50% for all sections combined

The examination rubric is:

- Answer question 1 (Section A) and TWO questions from Section B.

Resources:

The course does not have a single textbook; the following is only a recommended readlng list for broader understanding of various subjects:

- 'The Architecture of Computer Hardware and Systems Software (3rd Edition)', Irv Englander, Wiley, 2003, ISBN 0- 471-0732

- 'Computer Organization and Design (3rd Edition)', Patterson and Hennessy, Morgan Kaufmann, 1999, ISBN 1-55860- 4910-X

- 'Structured Computer Organisation (4th Edition)', Tanenbaum, Prenctice-Hall. 1999, ISBM 0-13-020435-8 'Computer Organisation and Architecture', B.S. Chalk, Palgrave-Hall. 1996, ISBM 0-333-64551-0

COMPGC04 - Systems Infrastructure

Code COMPGC04
Year MSc
Prerequisites This course should be taken in conjunction with the core courses for this programme (ie GC01, GC02, GC03 and GC05)
Term 1
Taught By John Dowell (50%)

David Clark (25%)
Rae Harbird  (25%)

Aims This course is an amalgam of three different aspects of systems design and construction - operating systems, compilers and databases - each having approximately equal weight. The course is a fundamental one in the programme as a whole, in the sense that it introduces material that is built on elsewhere and, consequently, much of the material will be aimed at providing a basic understanding of the role that different systems components play within real computer systems, and how they go about achieving this.
Learning Outcomes Students should be able to describe and discuss the fundamentals of systems infrastructure outlined below and their interrelationships and interdependencies with other aspects drawn from the core MSc curriculum. They should be able to discriminate between different possible solutions to practical problems and, consequently, apply the knowledge gained in a practical way.

Content:

A historical perspective
A brief history of operating systems, compilers and databases; milestones in their development and changes driven by changes in both use and in the underlying hardware
Process creation and management
The virtual machine concept; data structures needed by operating systems
Process state transition
Scheduling algorithms and metrics for the analysis of performance
Memory management
Virtual memory
Single and multi-level paging algorithms
Caching
Concurrency control
Race conditions
Semaphores
Deadlock
Compilation vs. interpretation
Lexical analysis
Parsing
Recursive descent
Table-driven techniques
Code generation
This will only be a brief overview to introduce the subject                                                                                        1. Database management systems (DBMS) and the relational database: essential                                              concepts, data model, architecture and and primary functions of the DBMS.                                                        2. SQL: use of SQL as a language for database construction and data manipulation.                                          3. Database design: a structured method for designing relational databases through                                          data modelling, schema specification, validation and normalisation.



Method of Instruction:

Lecture presentations with associated class problems.

Assessment:

The course has the following assessment components:

  • Coursework Section (3 pieces, 15%)
  • Written Examination (2.5 hours, 85%)

To pass this course, students must:

  • Obtain an overall pass mark of 50% for all sections combined

Resources:

COMPGC05 - Algorithmics

Code COMPGC05
Year MSc
Prerequisites This course should be taken in conjunction with the core courses for MSc Computer Science and MSc Financial Computing.
Term 2
Taught By Denise Gorse (50%)
Jens Krinke (50%)
Aims To introduce more formal aspects of algorithms and data structures than in the first term. Properties of data types such as queues and search trees. Techniques for analysing the complexity and decidability of algorithms. Formal models of computation.
Learning Outcomes Knowledge of a selection of standard data structures and abstract data types. The ability to choose appropriate data structures for programming problems. Understanding of a variety of common algorithms and why some are more efficient than others. Ability to discuss uncomputable and intractable algorithms.

Content:

Course Introduction
Introduction to data structures and abstract data types.
Abstract data types and Java classes.
Language facilities. Model of storage in imperative languages. Cells, l-values and r-values. Exceptions.
Data aggregation: arrays, structures and object references.
Linear abstract data types
Stacks and queues. Implementations with arrays and linked lists. Applications.
Sequences. Implementations with arrays and linked lists. Circular and double linked lists.
Inheritance relationships between linear linked lists
Tables
Linear look-up table.
Linear search.
Binary search.
Trees
Definitions of trees.
Binary search tree.
Insertion, deletion, tree traversal and searching.
Hash tables
Chaining.
Open addressing.
Choice of hash function.
Graphs
Adjacency lists.
Adjacency matrices.
Depth and breadth first traversal.
Sorting
Insertion Sort
Mergesort
Quicksort
Analysis of Algorithms
Empirical vs theoretical analysis
Algorithmic complexity
O notation
Best, worst, and average cases
Sums of series
Simple summation formulae
Analysis of earlier examples
Includes linear and binary search
Limits of Computation
Tractable and intractable problems; the complexity classes P, NP, NPC
Undecidability; the Halting Problem

Method of Instruction:

Lecture presentations, coursework and associated class problems.

Assessment:

The course has the following assessment components

• Written Examination (2.5 hours, 85%)

• Coursework Section (15%, 5 pieces for 2% each, 1 piece for 5%)

To pass this course, students must:

  • Obtain an overall pass mark of 50% for all sections combined

Resources:

Algorithmics - the science of computing. D.

Harel, Addison-Wesley, 1989.

Optional courses are:

COMPGC06 - Database Systems

Code COMPGC06 (Also taught as: COMP3013 Database and Information Management Systems)
Year MSc
Prerequisites GC04
Term 2
Taught By John Dowell (50%)
Graham Roberts (50%)
Aims This module builds on the introduction to relational databases course in COMP2008/GC04. It covers advanced data modelling and database development methodology, the techniques exploited by relational database technologies relating in particular to query processing and transaction management, and post relational database technologies including object oriented databases and web databases. The coursework is an interesting group project lasting the duration of the term and building a web facing database system using very contemporary technologies.
Learning Outcomes Understanding of the theory, methods and technologies of relational databases and their development. Competence with SQL and in building web facing database systems. Understanding of application issues and current trends in database technologies.

Content:

1
Database development: framework and techniques
2
SQL and query processing
3
Transaction management
4
Architecture of relational database management systems
5
Post-relational databases and their applications
6
Web and database management systems
7
Business intelligence

Method of Instruction:

Each week students will attend a 'theory' seminar (1-2 hours, led by JD), a 'lab' lecture (1 hour, given by GR), and a group session in the lab (1 hour). The 'theory' lectures are provided by online video only which students must watch in advance of the weekly seminar. The 'lab' lectures will teach students how to use the technologies needed for the coursework. Visiting speakers from industry will give some of the seminar sessions.

Assessment:

The course has the following assessment components:

  • Written Examination (2.5 hours, 70%)
  • Coursework Section (1 piece, 30%)

To pass this course, students must:

  • Obtain an overall pass mark of 50% for all sections combined

The examination rubric is:
Answer any 3 Questions out of 5. All questions carry equal marks.

Resources:

Database systems: A practical guide to design, implementation and management, 3rd edition, Connolly/Begg, Addion Wesley, ISBN:

0-201-70857-4

A comprehensive set of learning materials for the module are provided through moodle (UCL's e-learning environment)

Link to Moodle

COMPGC16 - Functional Programming


Code COMPGC16 (Also taught as: COMP3011)
Year MSc
Prerequisites n/a
Term 2
Taught By Chris Clack (100%)
Aims

This course explores the functional programming paradigm and the implementation technology for functional programming languages. It aims to develop a broad understanding of the functional programming style and recursive programming techniques using the language Miranda, together with an understanding of implementation issues that are relevant not only to functional languages but also to other systems that require automatic dynamic memory management.

Learning Outcomes

To be able to: understand the basics of the lambda calculus and combinators and how they are used in the implementation of functional languages; understand the main features of a lazy functional language; write non-trivial functional programs; understand the computation and memory management issues affecting the sequential implementation of lazy functional languages; read and understand the research and technical literature on functional programming.

Content:

Context

Classification of Programming Languages

Distinctive Features of Functional Programming Languages

Differences between Haskell and Miranda

The Lambda Calculus and Combinators

Versions of the Lambda Calculus - syntax and semantics

Reduction orders, strong normalisation

Combinators - computationally complete sets

Types

An overview of Hindley-Milner type inference

Miranda

Programming Environment

Types

Recursion

Pattern-Matching

Lists

Higher-Order Functions

User-Defined Types

Recursive Programming Techniques

Introduction to Implementation Techniques

Strict Evaluation and the SECD Machine

Lazy Evaluation and Graph Reduction

The Need for Automatic Memory Management

Automatic Memory Management

Memory Allocation and Garbage Collection

Garbage Collection Techniques

Method of Instruction:

Lecture presentations.

Assessment:

The course has the following assessment components:

     Written Examination (2.5 hours, 95%)

     Coursework Section (1 piece, 5%)

To pass this course, students must:

Obtain an overall pass mark of 50% for all sections combined

Resources:

A full list of resources is available on the Moodle site for this module.

Programming with Miranda, Clack, Myers and Poon, Prentice-Hall 1994 ISBN 0-13-192592-X.

The Implementation of Functional Programming Languages, Peyton-Jones, Prentice-Hall 1986

Garbage Collection: Algorithms for Automatic Dynamic Memory Management, Jones and Lins, Wiley 1996 ISBN 0 471 94148 4

Research Directions in Parallel Functional Programming, Hammond and Michaelson (Eds.), Springer, ISBN 1-85233-092-9, 1999

Web resources

COMPGC18 - Entrepreneurship: Theory and Practice

Code COMPGC18 (Also taught as: COMP7008)
Year MSc
Prerequisites None
Term 2
Taught By Philip Treleaven (CS) & David Chapman (MS&I), and guest lecturers involved in business and entrepreneurship
Aims To provide students with the theory and practice necessary to launch a new business venture making maximum use of eCommerce strategies and software tools for entrepreneurs
Learning Outcomes Skills to launch a new business venture

This is UCL's principal 30-lecture course in Entrepreneurship. Over the past ten years we have taught entrepreneurship tp around 3000 students resulting in the launch of a number of innovative businesses. The module covers: the new business life-cycle (selecting and testing a moneymaking idea, preparing a business plan, raising finance, the exit), aspects of new business operation (registering a company, setting up your office, understanding financial statements), and exploiting eCommerce strategies and software tools for entrepreneurs.

Content:

Starting your Digital Business
your money-making strategy
branding
getting an internet presence
registering your company
The Business
market research
preparing your business plan
types of companies
setting up your office
advertising and marketing
The Internet
putting the internet to work for you
setting up your web site
doing business on the internet
Finance for Start-ups
venture capital
understanding financial statements
planning and forecasting
taxation
debt and equity finance
Accountancy Software
overview of book-keeping
Quickbooks accountancy software
The Law
company law
copyrights
trademarks
patents
Guest Lecture programme
Weekly programme of presentations by entrepreneurs and business leaders
New Venture Clinic
Weekly clinic to review and provide feedback on students' new business ideas

Method of Instruction:

Lecture presentations and practical work.

Assessment:

The course has the following assessment components:

  • Group coursework (60%)
  • Individual coursework (40%)

To pass this course, students must:

  • Obtain an overall pass mark of 50% for all sections combined

Resources:


Mullins, J. (2003). The New Business Road Test: What Entrepreneurs and Executives Should Do Before Writing a Business Business Plan. Publisher: Financial Times/ Prentice Hall. ISMB-10: 0273663569

Full course notes are available

COMPGC20 - Computer Music

CodeCOMPGC20
YearMSc
PrerequisitesThe course has no formal prerequisites but involves programming in graphical and textual languages, and engagement with musical concepts. No prior knowledge of programming is assumed and the languages used are taught from first principles, however, those with no or very little  computing experience of any kind may find the learning curve quite steep! Thus some basic knowledge of programming in any language will be  helpful.  On the musical side, it will help if you have some basic knowledge of music but again, this can be learned from books and will be  briefly taught on the course if needed.  Reviewing this page <www.cs.cmu.edu/%7Emusic/cmsip/readings/music-theory.htm> may give some idea of the knowledge required.  Prospective students are encouraged to contact the lecturer <mailto:n.gold@ucl.ac.uk> to discuss their suitability.
Term2
Taught ByNicolas Gold (100%)
AimsTo provide students with a grounding in the state of the art in computer music theory, technology and applications.
Learning Outcomes

Students successfully completing this module should be able to: 

  • demonstrate knowledge of key issues in contemporary computer music.
  • demonstrate a knowledge of ethical issues related to music intellectual property.
  • analyse problems in computer music analysis, representation, and creation.
  • synthesise solutions to such problems on the basis of contemporary tools and theories.
  • evaluate such solutions using appropriate methods
  • manage their own learning in terms of acquiring disciplinary knowledge from academic literature
  • evaluate their own solutions
  • work autonomously
  • solve complex problems
  • develop and apply software development skills in the production of software for creative tasks in the music domain.

Content:

The course will cover three key aspects of computer music: representation, creativity and analysis addressed through theory and practice. It will cover sound, music as organised sound, and specific applications (e.g. music information retrieval and musicology). Students will be strongly encouraged to explore both scientific and artistic aspects of the course through programming exercises to generate sound and music in contemporary visual or textual music and arts programming languages (e.g. Python, Javascript, Nyquist, Pure Data). Students will be expected to compose a short algorithmic work using the computer and the techniques taught and developed.

Indicative topics

Ethical Issues and Evaluation of Music Systems

Audio and Sampling

Synthesis

Introduction to Tonal Music Theory

Symbolic representations of music (MIDI, Kem, MusicXML)

Algorithmic Composition

Music Information Retrieval

Computational Musicology

Method of Instruction:

Lectures, laboratories, and demonstrations of techniques. Students will be given weekly  exercises to explore and practice techniques. Reading and listening recommendations will also be provided via Moodle.

Assessment:

The course has the following assessment components:

  • Unseen written examination (2 hours, 90%)
  • Algorithmic composition (audio file, programe notes, source code) (10%)

To pass the course students must:

  • Gain an overall mark of 50% or above

Resources:

Bibliography

General Topics

The Computer Music Tutorial, Curtis Roads, MIT Press, 1996. ISBN 0262680823.

Introduction to Computer Music, Nick Collins, Wiley, 2009, ISBN 978-0-470-71455-3.

Musimathics, vol. 1, Gareth Loy, MIT Press, 2006, ISBN 0262122820.

Musimathics, vol. 2, Gareth Loy, MIT Press, 2007, ISBN 0262122855.

Artistic and Historical Aspects

The Cambridge Companion to Electronic Music, Nick Collins & Julio d’Escrivan, Cambridge University Press, ISBN 9780521688659.

Computer Composition

Virtual Music, David Cope, MIT Press, 2001, ISBN 026203283X.

Computer Models of Musical Creativity, David Cope, MIT Press, 2006, ISBN 0262033380.

Machine Musicianship, Robert Rowe, MIT Press, 2004, ISBN 0262681498.

Algorithmic Composition, Mary Simoni & Roger Dannenberg, 2011, forthcoming

Algorithmic Composition: Paradigms of Automated Music Generation, Gerhard Nierhaus, Springer, 2009, ISBN 978-3-211-75539-6.

Analysis

Signal Processing Methods for Music Transcription, Anssi Klapuri & Manuel Davy (eds), Springer, 2006, ISBN 978-0-387-30667-4.

Music and Probablity, David Temperley, MIT Press, 2007, ISBN 0-262-20166-6.

The Cognition of Basic Musical Structures, David Temperley, MIT Press, 2002, ISBN 0262201348.

Representation

Beyond MIDI, Eleanor Selfridge-Field (ed), MIT Press, 1997, ISBN 0262193949.

MusicXML, http://www.recordare.com/musicxml

The HumDrum Toolkit, http://www.musiccog.ohio-state.edu/Humdrum/

Musicology

Musicology: The Key Concepts, David Beard & Kenneth Gloag, Routledge, 2005, ISBN 0415316928.

NyQuist Programming

NyQuist Reference Manual, Roger Dannenberg, http://www.cs.cmu.edu/~rbd/doc/nyquist/

(see also Algorithmic Composition, Simoni and Dannenberg above)

PureData Programming

Pure Data website, http://puredata.info

Pure Data, http://en.flossmanuals.net/PureData

Programming Electronic Music in Pd, Johannes Kreidler, Wolke Publishing, 2009, ISBN 3936000573.

Journal and conference papers will also be used to supplement these texts.

COMPGC22 - Software Engineering

CodeCOMPGC22
YearMScCS and FC
PrerequisitesSuccessful completion of COMPGC02
Term2
Taught ByGraham Roberts (100%)
Aims

This module covers a range of Software Engineering (SE) material, following on from that introduced in COMPGC02. The emphasis is on the knowledge needed to be able to model, design, implement and evaluate larger software systems effectively.

The content starts with development lifecycle models, such as agile development, and then continues to cover requirements specification, the Unified Modelling Language (UML), software architecture, object-oriented analysis and design, design patterns and testing.

Software engineering is an inherently practical subject and applying the concepts being taught is a vital component of developing expertise in this area. Consequently students undertake a substantial group project, working through a number of stages of the development of a larger software application. Students will be supervised, but will be expected to largely organize themselves and their work, learning key transferrable skills in management and organisation.

Learning Outcomes

After completing the course attendees will be able to:   

  • Appreciate the wider engineering issues that form the background to developing complex and evolving software-intensive systems.
  • Plan and deliver an effective software engineering process, based on knowledge of widely used development lifecycle models.
  • Employ group working skills including general organization, planning and time management and inter-group negotiation.
  • Capture, document and analyse requirements.
  • Translate a requirements specification into an implementable design, following a structured and organised process.
  • Make effective use of UML, along with design strategies such as defining a software architecture, separation of concerns and design patterns.
  • Formulate a testing strategy for a software system, employing techniques such as unit testing, test driven development and functional testing.
  • Evaluate the quality of the requirements, analysis and design work done during the module. 

Content:

Topics covered in lectures during the first half of term:

Course Introduction

Software Engineering Principles

Overview of the software engineering discipline

Software lifecycle models

Agile development

The Unified Process (UP)Organising development projects

Requirements Engineering

Documenting requirements, user stories, use cases and scenarios

Introduction to UML

Review of object-oriented principles

UML use case, class, sequence, activity, state, component and deployment diagrams.

UML models


The Analysis and Design Process

User story realisation

Object-oriented modelling

Incremental refinement

Design Principles

Software architecture

Separation of concerns

Design patterns

Object-Oriented design practices

Refactoring

Testing

Unit Testing

Test-Driven Development

Functional Testing

Project Work

Project groups are formed during the first week of term, with the early stages of the project running concurrently with the lectures given during the first half of term. The second half of the term is then dedicated to the group project work.

Group formation: Students are split into project groups with around 4-7 members, each group having a supervisor who acts as the client and also provides support and guidance. Project groups are selected by the module organiser, and each group is allocated a project specification to work with. Each project specification gives an outline of an application with a graphical user interface (GUI) to be developed. Project groups are responsible for organising themselves, meeting their supervisor regularly to receive advice and feedback. A group diary should be kept to record the progress of the group, including the minutes of meetings held.

Group deliverables: A group report documents the results of the project, focusing on requirements, design, and UML modelling. The group additionally creates a video, lasting around 10 minutes, explaining what their project was about, what were the challenges and giving an overview of the design created. A mock-up of the application user interface is also created to illustrate what the application look likes when being used. 

Individual deliverable: Each student is required to submit an individual report giving a) an assessment of the structure, organisation and progress of the project group, b) an assessment of the project results and the effectiveness of the group as a whole, c) an evaluation of each group member, d) an evaluation of their own role, including a summary of what they contributed.

Method of Instruction:

Lecture presentations and online material. Group project tutorials and group working. 

Assessment

The course has the following assessment components:

·         Group Project Report (50%)

·         Group Video (10%)

·         Individual Report (40%)

To pass this module, a student must:

·         Gain a mark of 50% or more from all assessment components combined. 

Resources:

A UCL Library reading list can be found on Moodle. 

The recommended text is:

UML and the Unified Process - Jim Arlow, Ila Neustadt. Addison Wesley. 2nd Edition, 2005

Further material can be found on Moodle

COMPGC25 - Interaction Design

CodeCOMPGC25 (also taught as COMP3012)
YearMSc
PrerequisitesSuccessful completion of years 1 and 2 of the BSc/MEng Computer Science programme or the BSc Information Management programme
Term2
Taught byPaul Marshall (50%), Nicolai Marquardt (50%)
AimsThe module covers advanced topics in interaction design, focusing on the design of mobile and ubiquitous computing technologies. A central theme is how to design technologies to meet people's need
Learning Outcomes
  • Knowledge and understanding of research topics in ubiquitous computing
  • Knowledge and understanding of methods used in interaction design
  • The ability to reflect critically on the appropriateness of different interaction design methods
  • The ability to conduct basic user research
  • The ability to design, prototype and evaluate a novel ubiquitous computing technology
  • Transferable skills: Information gathering and organising skills. Argumentation skills and the ability to synthesis information from multiple sources. Written presentation skills.

Content:

The module is separated into three related streams:

• Methods

Ten hours

This series of lectures will introduce students to core interaction design methods, including approaches to conducting user research and designing, prototyping and evaluating user centred systems and technologies.

Application

Ten hours

These more informal lectures will give students an opportunity to reflect on how to put interaction design methods into practice and to discuss ideas and issues with each other and with the teaching faculty. They will link closely to the coursework

Topics

Ten hours

This series of lectures will introduce students to work on ubiquitous computing systems technologies that go "beyond the desktop", such as multi-touch surfaces, ambient devices, mobile devices and situated displays. A key focus will be on approaches to understanding the domains where these technologies are used, prototyping and evaluation approaches.

Method of Instruction:

Lecture presentations with associated practical activities.

Assessment:

The course has the following assessment components:

Written Examination (2 hours, 50%)

Coursework (50%), due in the first week of term 3.

To pass this course, students must:

Gain a mark of 50% or more when the examination and coursework scores are combined.

COMPGC26 - Artificial Intelligence and Neural Computing

Code COMPGC26 (Also taught as: COMP3058)
Year MSc
Prerequisites A strong background in university-level maths (in particular logic)
Term 2
Taught By Denise Gorse (50%)
Anthony Hunter (50%)
Aims This course introduces artificial intelligence and neural computing as both technical subjects and as fields of intellectual activity. The overall targets are: (1) to present basic methods of expressing knowledge in forms suitable for holding in computing systems, together with methods for deriving consequences from that knowledge by automated reasoning; (2) to present basic methods for learning knowledge; and (3) to introduce neural computing as an alternative knowledge acquisition/representation paradigm, to explain its basic principles and their relationship to neurobiological models, to describe a range of neural computing techniques and their application areas.
Learning Outcomes Ability to identify problems that can be expressed in terms of search problems or logic problems, and translate them into the appropriate form, and know how they could be addressed using an algorithmic approach. Ability to identify problems that can be expressed in terms of neural networks, and to select an appropriate learning methodology for the problem area.

Content:

Scope of the Subject
Nature and goals of AI
Application areas
Searching state-spaces
Use of states and transitions to model problems
Breadth-first, depth-first and related types of search
A* search algorithm
Use of heuristics in search
Reasoning in logic
Brief revision of propositional and predicate logic
Different characterisations of reasoning
Generalized modus ponens
Resolution
Forward and backward chaining
Knowledge Representation
Diversity of knowledge
Inheritance hierarchies
Semantic networks
Knowledgebase ontologies
Handling uncertainty
Diversity of uncertainty
Inconsistency
Dempster-Shafer theory
Machine Learning
Induction of knowledge
Decision tree learning algorithms
Intelligent agents
An architecture for intelligent agents
Argumentation
Decision-making
Nature and Goals of Neural Computing
Comparison with rule-based AI
Overview of network architectures and learning paradigms
Binary Decision Neurons
The McCullough-Pitts model
Single-layer perceptrons and their limitations
The Multilayer Perceptron
The sigmoid output function
Hidden units and feature detectors
Training by error backpropagation
The error surface and local minima
Generalisation, how to avoid 'overtraining'
The Hopfield Model
Content addressable memories and attractor nets
Hopfield energy function
Setting the weights
Storage capacity
Self-Organising Nets
Topographic maps in the brain
The Kohonen self-organising feature map

Method of Instruction:

Lecture presentations.

Assessment:

The course has the following assessment components:

  • Written Examination (2.5 hours, 90%)
  • Coursework Section (2 pieces, 10%)

To pass this course, students must:

  • Obtain an overall pass mark of 50% for all sections combined

The examination rubric is:
Answer three from six questions set, at least one from

each of section A (AI) and section B (neural computing). All questions carry equal marks.

Resources:

Artificial Intelligence - A Modern Approach; First Edition; Prentice Hall; ISBN: 0-13-103805-2

[Background reading] Neural Computing: An Introduction; R Beale and T Jackson;

Institute of Physics Publishing; ISBN: 0-85-274262-2

The individual project completes the programme. Please see GC99 Individual Project for details.

For more syllabus and teaching information can be found on our teaching & learning page.

Our entry requirements

  • Lower second-class Honours degree or higher from a UK university, or an overseas qualification of an equivalent standard, is required.
  • Your degree must be in a subject that is not computer science/information technology or any other degree with high computing content.
  • If you have more than three IT/Computer Science modules in your first degree you would be considered over qualified.   
  • Maths A level or equivalent, or a maths module at degree level.
  • You must be able to demonstrate that you have some existing programming skills, evidenced by one of the following: Minimum one module and maximum 3 modules in programming during first degree. A minimum of one year and a maximum of three years work experience in programming, or an A-Level in Computer Science that includes programming. If you do not have the other programming evidence, you should include a basic programme that you have written and submit this along with your application, the program should be one to three pages of script and include a one page description of how it works. Java or Python would be best. Please add this under the personal statement in the online application.

English language minimum requirements

  • International English Language Testing System: An overall grade of 6.5 with a minimum of 6.0 in each of the subtests.
  • Other English Language Qualifications: Please click here for the full list of accepted English language qualifications. Please note that our courses require a level of English equivalent to the "UCL Standard Level".

Entry requirements by country

Please click here for more information. Applicants are required to meet both the entry requirements and the English language requirements separately. Each applicant will be considered on an individual basis. The grades and qualifications listed are intended to give an approximate level of achievement we believe you will need to succeed on the programme.

Excellence scholarships

We are offering 4 MSc Scholarships worth £4,000 to UK/EU offer holders with a record of excellent academic achievement. These will be awarded at the discretion of the department's Postgraduate Tutor. The closing date for applying is 30 June 2015.

Successful nominees will be notified by the end of July 2015. Nominees have 1 week to respond to this notification. If the nominee has not responded within 1 week, or if they decline the funding, a reserve candidate will be contacted. If you haven't been contacted by the end of August 2015, please assume that your application was unsuccessful. 

The scholarships may be held alongside other scholarships, studentships, awards or bursaries. However, nominees must declare whether they are in receipt of other sources of funding. Recipients of the scholarship will receive the award in the form of a £4,000 discount from their tuition fees.

Eligibility

  • This scholarship is open to UK/EU domiciled students, defined as country of ordinary residence.
  • All applicants of this scholarship are required to hold a valid offer for entry onto one of our MSc degree programmes for the September 2015 intake and have accepted their offer.
  • All applications for the scholarship must be received before the end of 30 June 2015.

Successful candidates will be asked to write a short piece at the end of their degree reflecting on their experiences at UCL and how the scholarship assisted them. To apply click here.

You can find out more about our fees and funding here.

More information

Our Frequently Asked Questions are here.

UCL's Prospective Student webpages which contain more information on fees and funding, accommodation and international students can be found here.

Back to our Degrees Page here.