MSci FT Computer Science

G401 / MSCI HONS
Duration:
4 Years

Description

This broad degree programme provides a solid foundation for a number of IT careers, including programming and systems analysis and design. You will cover core topics such as software engineering, computer systems and applications. You can specialise in subjects such as computer graphics, artificial intelligence and distributed systems. You will gain practical experience in building a variety of computer systems in progressively more demanding contexts.

The programme follows the same structure as the BSc, with the inclusion of a team project in the third year. It incorporates an additional year of specialisation in such topics as computer vision, human-computer interaction and the semantic web. You can transfer onto the MSci from the BSc until the end of the second year, subject to satisfactory performance.

Modules

Year 1
Object-Oriented Programming
Object-Oriented Programming

There will be two hours of lectures per week, and each student will have a weekly timetabled lab session in the Information Technology Lab (ITL). In addition, students will be expected to spend further time outside scheduled lab periods in the lab (or at home machines if they are available), and to read textbooks and review notes.

Major topics include the concepts of class, object, method, subclass, inheritance and their use in programming. The relevance of the object oriented style with respect to concrete software problems will be stressed both in lectures and labs.

Read More
Logic and Discrete Structures
Logic and Discrete Structures

The course consists of two parts each of fundamental importance for any serious approach to Computer Science: Logic and Discrete Structures.

Logic has been called the Calculus of Computer Science. It plays a very important role in computer architecture (logic gates), software engineering (specification and verification), programming languages (semantics, logic programming), databases (relational algebra and SQL the standard computer language for accessing and manipulating databases), artificial intelligence (automatic theorem proving), algorithms (complexity and expressiveness), and theory of computation (general notions of computability).

Computer scientists use Discrete Mathematics to think about their subject and to communicate their ideas independently of particular computers and programs. They expect other computer scientists to be fluent in the language and methods of Discrete Mathematics.

In the course we consider Propositional logic as well as Predicate Calculus. In the course we will treat Propositional Logic and Predicate Calculus as formal systems. You will learn how to produce and annotate formal proofs. As application we will briefly consider the programming language Prolog.

This course will also cover a variety of standard representations, operations, properties, constructions and applications associated with selected structures from Discrete Mathematics (sets, relations, functions, directed graphs, orders). The material covered in this course will be used freely throughout the computer science degree.

There will be two hours of lectures per week and an exercise class. Material will be introduced both in the lectures and in the exercises. Each lecture last roughly 50 minutes. The time of each lecture is divided into a mixture of “classical lectures” where the lecturer presents new material and exercises where the students actively through simple exercises tries to understand the material.

Each week you have to follow special exercise classes. In the exercise classes the students will solve problems related to the course material. You are also expected to read either the relevant sections in the course books or in other Discrete Mathematics books. You are encouraged to search the web for additional material. Lectures are intended to direct and inform that reading. The exercises ensure that students understand the material from the lectures and reading and can pick up new material on-the-fly. Performance in such exercises is the means by which the course will ultimately be assessed.

Read More
Computer Systems and Networks
Computer Systems and Networks

The course presents the concepts needed to understand typical computers at the level of their 'machine-code' instruction set, and to understand the basic concepts of computer networks.

The material covered includes

  • the major components of a computer, including CPU, memory, I/O and buses and the role of bandwidth, latency and power dissipation in determining the relationship between them.
  • the use of bits, bytes and data formats to represent numbers, text and programs
  • boolean algebra and logic gates
  • CPU structure and function: the conventional (von Neumann) computer architecture
  • data types, addressing modes and instruction sets
  • machine-level program structure and its correspondence to higher-level programs
  • the role of wired and wireless networks in modern computer systems
  • a basic understanding of typical network technologies, e.g. ethernet, wifi
  • the role of protocols such as ethernet in the implementation and use of network technology

Read More
Professional and Research Themes
Procedural Programming
Procedural Programming

This is a laboratory-based course supported by lectures. Each student will have a weekly timetabled lab session. These sessions will be backed up by a weekly two-hour lecture.

Topics include the use of:

  • basic control structures
  • arrays and other datatypes
  • methods and recursion
  • simple search and sort algorithms

Read More
Language and Communication
Language and Communication

This course is centered on grammar and language. Grammar is crucial in computing, and in life. Students will gain fluency in building new grammars, and analyzing/understanding existing ones. Hands-on experience will be given using XML.

Read More
Information System Analysis
Information System Analysis

The course locates the design methods and the development of computer systems in the wider context of the use of information technology and its impact upon organisations. The topics covered are:

  • What are Information Systems and requirements. Why is analysis needed. Systems theory and types of information systems; their relationship with organisational processes and structures. Stakeholders.
  • Requirements analysis and project failures
  • Elicitation of Requirements. Techniques for eliciting requirements; user participation. Impact on project success.
  • Object-Oriented Analysis Techniques. UML notation, including use cases and class diagrams.
  • Overview of the software development processes.

Read More
Fundamentals of Web Technology
Fundamentals of Web Technology

This is a course designed to offer student practical skills as well as understanding of underlying principles of programming the World Wide Web. There will be two hours of lectures per week, and weekly timetabled lab sessions in the Information Technology Lab (ITL) for each student. Major topics include:

  • Internet and Web server basics
  • Client-side programming using XHTML, Cascading Style Sheets, and Javascript.
  • Server-side programming using PHP
  • Practical issues on setting up a website

Read More
Year 2
Probability And Matrices
Probability And Matrices

This module covers

  • Probability theory
  • Counting permutations and combinations
  • Conditional probabilities
  • Bayesian probability
  • Random variables and probability models
  • Vector and matrix algebra
  • Linear equations
  • Vector spaces
  • Linear combinations, linear independence

Read More
Algorithms and Data Structures in an OO Framework
Algorithms and Data Structures in an OO Framework

Algorithms are "ways of doing something", data structures are ways of combining collections of data to form a coherent whole. Many algorithms are about processing collections of data, an obvious example being to re-arrange a collection to put it in some sorted order. This module will introduce the basic concepts of algorithms and data structures expressed using the Java programming language.

Java is an object-oriented language, and the object-oriented style is recognised as a good way of both breaking down a program into coherent parts, and generalising these parts so they may be re-used in a variety of contexts. So this module introduces algorithms and data structures in an object-oriented framework. A key theme is the idea of "abstraction": being able to separate out the way a program component works in interaction with other components from what goes on underneath to make it work.

Modern programming is as much about using code already provided as APIs as it is about using the core constructs of programming languages. This module follows that by including material on using the algorithms and data structures provided as the "Java Collections Framework" as well as coding your own algorithms and data structures.

Effective use of an abstract code framework requires a good understanding of the complexities of inheritance and generic typing. These are covered in this module.

The module covers two tricky topics, mastery of which has long been acknowledged as the mark of a skilled programmer: recursion and linked structures. There is also some coverage of algorithm efficiency analysis.

The module is intended for those who have already covered the basics of programming, and wish to move on to use and develop their programming skills for designing and constructing components of programs of a larger scale.

Read More
Graphical User Interfaces
Graphical User Interfaces

Computers are tools that people interact with and through for work and pleasure. Nowadays computers are ubiquitous and are fundamental to all sorts of devices such as washing machines, cars, mobile phones, airplanes, televisions, and musical instruments. However, it is still very difficult to design user interfaces which are simple, intuitive, and easy to use you only have to look at the number of help books (e.g. the proliferation of books with titles such as 'the idiots guide to ') and courses to realise that designers often simply fail to make interfaces usable.

This course introduces you to basic concepts of psychology and communication which inform the way in which interfaces should be designed.

The course comprises lectures, problem classes, and lab sessions.

Lectures

The lectures teach you the basics of:

  • Cognitive psychology principles relevant to the design of GUIs
  • A framework of GUI design guidelines which you can use to inform and evaluate GUI design
  • An introduction to techniques for analysing artefacts and situations to inform the design of suitable GUIs
  • An iterative design process
  • Evaluation techniques with users, heuristics, and models
  • Interaction beyond the visual modality

The lectures are also used to outline coursework to be completed in the lab sessions, and to provide feedback and discussion opportunities about the coursework as it evolves.

Problem classes

Problem classes provide you with a chance to develop your Java skills in order to develop the complex interactivity required in the coursework.

Lab sessions

The lab sessions are a time for you to complete programming exercises set in the early part of the course, and coursework as the course progresses. Lab sessions are compulsory as they are used to assess your progress and to identify problems that you are having. Interesting ideas, and pertinent problems will be discussed in the following lecture.

Exercises

You will undertake exercises individually to help develop your Java Swing capabilities for the first third of the course.

Coursework

The majority of the lab time is for the coursework which is itself strongly linked to the lecture material. You will work in small teams to complete coursework which is composed of three parts:

  • Design iterative design of a GUI to support the key requirement(s) you identified in the requirements capture stage.
  • Implementation of interactive prototype.
  • Evaluation you will evaluate your own prototype and another groups prototype using methods taught in the lecture.

Read More
Database Systems
Database Systems

Introduction to databases and their language systems in theory and practice.The main topics covered by the course are:

  • The principles and components of database management systems.
  • The main modelling techniques used in the construction of database systems.
  • Implementation of databases using an object-relational database management system.
  • SQL, the main relational database language.
  • Object-Oriented database systems.
  • Future trends, in particular information retrieval and data warehouses.

There are 2 timetabled lectures a week, and 1 hour tutorial per week (though not every week). There will be timetabled laboratory sessions (2 hours a week) for approximately 10 weeks.

Read More
Software Engineering
Software Engineering

Software Engineering is concerned with applying engineering principles to the production of software. In the first semester this module provides the management principles, theoretical foundations, tools, notation and background necessary to develop and test large-scale software systems. The practical part of the semester 1 consists of lab assignments in which students use a range of relevant tools (a Java programming IDE, unit testing tool, configuration management tool, UML design tool, and project planning tool). In Semester 2 students (in pre-assigned groups of approximately six) will be presented with a significant software problem to solve. To meet the problem requirements and build a satisfactory system within the time constraints the students will have to apply the principles learnt in semester 1 and will have to work effectively as a team. Each team must choose a project manager and assign appropriate roles to each member. Course details, lecture slides and extensive supporting documentation are provided on the courseware page. .

Read More
Internet Applications
Internet Applications

This course builds upon the Programming Fundamentals and Telecoms and Internet Fundamentals courses, introducing the students to the major internet applications. It focuses on the TCP/IP protocol suite from OSI layers 5 through to 7, though some appreciation is given to transport layer protocols as part of the socket-programming topic.

Read More
Operating Systems
Operating Systems

This course builds upon the Programming Fundamentals and Telecoms and Internet Fundamentals courses, introducing the students to the major internet applications. It focuses on the TCP/IP protocol suite from OSI layers 5 through to 7, though some appreciation is given to transport layer protocols as part of the socket-programming topic.

Read More
Year 3
Industrial and Professional Perspectives
Industrial and Professional Perspectives

This module is intended to equip students with a better understanding of the industrial and professional context of their subject area, to enable them to see more clearly the relevance of their studies, and to inspire them to become more proactive partners in both their studies and their subsequent career. It includes significant input from external industrialists and structured, themed opportunities for students to meet with them, as well as an integrating thread of academic content.

Read More
High Performance Computing
High Performance Computing

The 12 week module involves 2 hours of timetabled lectures per week. Laboratory sessions are timetabled at 2 hours per week, normally spanning half the semester only. The course syllabus adopts a hands-on programming stance. In addition it focuses on algorithms and architectures to familiarise students with message-passing systems (MPI) as adopted by industry.

Parallel computing, which implies the simultaneous execution of several processes for solving a single problem, is a mainstream subject with wide ranging implications for computer architecture, algorithms design and programming. The UK has been at the forefront of this technology through its involvement in the development of several innovtive architectures. Queen Mary has been actively involved with Parallel Computing for more than a decade. In this course, students will be introduced to parallel computing and will gain first hand experience in relevant techniques.

Laboratory work will be based on the MPI (Message Passing Interfaces) standard, running on a network of PCs in the teaching laboratory.

The syllabus mirrors the recommended text book very closely. Other text-books are also listed below as sources of additional reading.

The course should be of interest to Computer Scientists and those following joint programmes (e.g. CS/Maths, CS/Stats). It is also suitable for Chemistry and Engineering students and all those who are concerned with the application of high performance parallel computing for their particular field of study e.g. Simulation of chemical Behaviour.

Read More
Team Project
Team Project

Read More
Distributed Systems and Security
Distributed Systems and Security

New module under development for 2012/13. Information pertaining to this module will appear once approved.

Read More
Communication Systems Electronics
Communication Systems Electronics

New module under development for 2012/13. Information pertaining to this module will appear once approved.

Read More
Control Systems
Control Systems

New module under development for 2012/13. Information pertaining to this module will appear once approved.

Read More
C++ For Image Processing
C++ For Image Processing

This course gives students a practical introduction to C++ and uses this programming language to examine applications in low level image processing. Areas covered include image representation examining perception, sampling and display, and image transforms and image enhancement using point and spatial operations. Also considered are image processing methods such as convolution, frequency filtering and image restoration, compression and segmentation.

Read More
Software Risk Assessment
Software Risk Assessment

The role of software is increasingly critical in our everyday lives and the accompanying risks of business or safety critical systems failure can be profound. This course will provide students with a framework for articulating and managing the risks inherent in the systems they will develop as practitioners. Likewise, students will learn how to build decision support tools for uncertain problems in a variety of contexts (legal, medical, safety), but with a special emphasis on software development. This course will make a distinctive offering that will enable our students to bring a principled approach to bear to analyse and solve uncertain and risky problems. Course contents: Quantification of risk and assessment: Bayesian Probability & Utility Theory, Bayes Theorem & Bayesian updating; Causal modelling using Bayesian networks with examples; Measurement for risk: Principles of measurement, Software metrics, Introduction to multi-criteria decision aids; Principles of risk management: The risk life-cycle, Fault trees, Hazard analysis; Building causal models in practice: Patterns, identification, model reuse and composition, Eliciting and building probability tables; Real world examples; Decision support environments.

Read More
Interaction Design
Interaction Design

Traditionally, interactive systems design has focussed on enhancing people's efficiency or productivity. For example, to increase the speed with which tasks can be completed or to minimise the number of errors people make. Economic and social changes have led to a situation in which the primary use of many technologies is for social interaction and fun; i.e. in which there is no quantifiable output and no clear goal other than enjoyment. Computer games, mobile music players and online communities are all examples where the quality of the experience is the primary aim of the interaction.

This course explores the challenges these new technologies, and the industries they have created, present for the design and evaluation of interactive systems. It moves away from a human-computer interaction model which is too constrained for real world problems and provides students with an opportunity to engage with theories relating to cultural dynamics, social activity, and live performance. It explores the nature of engagement with interactive systems and between people when mediated by interactive systems.

Read More
Advanced Database Systems and Technology
Advanced Database Systems and Technology

Active Databases, database performance tuning and query optimisation, database administration and data dictionary, Databases for XML and XML query languages: DTD, model, native database, XPath, XQuery, mapping to object-relational DBMS; Data mining: the exploration of large quantities of data for the discovery of meaningful rules and knowledge; Distributed database architectures: client-server, distributed, federated; temporal-spatial and moving objects databases.

Read More
Artificial Intelligence
Artificial Intelligence

The course covers techniques used in Artificial Intelligence including agent modelling, problem formulation, search, logic, probability and machine learning.

Read More

Entry Requirements

Specific Condition(s): GCSE Grade Mathematics grade B or higher required.


Similar Courses
BSc FT Computer Science with Industrial Experience
G402 / BSC HONS
BSc FT Computer Science and Multimedia
G450 / BSC HONS
BSc FT Computer Science with Business Management
G4N1 / BSC HONS
BSc FT Computer Science with Business Management and Accounting
G4N2 / BSC HONS
BSc FT Computer Science and Mathematics
GG41 / BSC HONS
BSc FT Computer Science
G400 / BSC HONS

Student Projects

Autocartoon
Autocartoon

This student project involved producing a software package that takes a picture of your face and turns it into a cartoon drawing. T

Read more