BSc FT Computer Science and Mathematics

GG41 / BSC HONS
Duration:
3 Years

Description

This programme, taught in collaboration with the School of Mathematical Sciences, emphasises the use of computers to solve mathematical problems, including topics such as programming and algorithms. You can choose option modules from across the range of mathematics and computer science, including computer graphics, artificial intelligence, number theory and cryptography. You will be equipped for roles such as data analyst, analyst consultant or data architect.

Modules

Year 1
INTRODUCTION TO ALGEBRA
INTRODUCTION TO ALGEBRA

Please see the School of Mathematical Science website for information regarding this module.

Read More
CALCULUS I
CALCULUS I

Please see the School of Mathematical Science website for information regarding this module.

Read More
Introduction to Probability
Introduction to Probability

Please see the School of Mathematical Science website for information regarding this module.

Read More
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
Professional and Research Themes
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
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
CALCULUS II
CALCULUS II

Please see the School of Mathematical Science website for information regarding this module.

Read More
Year 2
COMPLEX VARIABLES
COMPLEX VARIABLES

Please see the School of Mathematical Science website for information regarding this module.

Read More
CONVERGENCE AND CONTINUITY
CONVERGENCE AND CONTINUITY

Please see the School of Mathematical Science website for information regarding this module.

Read More
Differential and Integral Analysis
Differential and Integral Analysis

Please see the School of Mathematical Science website for information regarding this module.

Read More
GEOMETRY II: KNOTS AND SURFACES
GEOMETRY II: KNOTS AND SURFACES

Please see the School of Mathematical Science website for information regarding this module.

Read More
ALGORITHMIC GRAPH THEORY
NUMBER THEORY
NUMBER THEORY

Please see the School of Mathematical Science website for information regarding this module.

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
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
DIFFERENTIAL EQUATIONS
DIFFERENTIAL EQUATIONS

Please see the School of Mathematical Science website for information regarding this module.

Read More
INTRODUCTION TO STATISTICS
INTRODUCTION TO STATISTICS

Please see the School of Mathematical Science website for information regarding this module.

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
Software Engineering Theory
Software Engineering Theory

Software Engineering is concerned with applying engineering principles to the production of software. 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 module 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).

Read More
Internet Protocols
Internet Protocols

This course examines the TCP/IP protocol suite from OSI layers 1 through to 4. Particular emphasis is placed on CSMA/CD LAN operation, Internet Protocol including Addressing, Routing and Subnetting and Transmission Control Protocol.

Read More
ALGEBRAIC STRUCTURES I
ALGEBRAIC STRUCTURES I

Please see the School of Mathematical Science website for information regarding this module.

Read More
CALCULUS III
CALCULUS III

Please see the School of Mathematical Science website for information regarding this module.

Read More
Year 3
CRYPTOGRAPHY
CRYPTOGRAPHY

Please see the School of Mathematical Science website for information regarding this module.

Read More
Project
Project

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
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
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
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
Control Systems
Control Systems

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
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
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
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
ALGEBRAIC STRUCTURES I
ALGEBRAIC STRUCTURES I

Please see the School of Mathematical Science website for information regarding this module.

Read More
CALCULUS III
CALCULUS III

Please see the School of Mathematical Science website for information regarding this module.

Read More
COMPLEX VARIABLES
COMPLEX VARIABLES

Please see the School of Mathematical Science website for information regarding this module.

Read More
LINEAR ALGEBRA I
LINEAR ALGEBRA I

Please see the School of Mathematical Science website for information regarding this module.

Read More
ALGEBRAIC STRUCTURES II
ALGEBRAIC STRUCTURES II

Please see the School of Mathematical Science website for information regarding this module.

Read More
ALGORITHMIC GRAPH THEORY
Chaos and Fractals
Chaos and Fractals

Please see the School of Mathematical Science website for information regarding this module.

Read More
CODING THEORY
CODING THEORY

Please see the School of Mathematical Science website for information regarding this module.

Read More
COMBINATORICS
COMBINATORICS

Please see the School of Mathematical Science website for information regarding this module.

Read More
NUMBER THEORY
NUMBER THEORY

Please see the School of Mathematical Science website for information regarding this module.

Read More

Careers

This programme opens excellent opportunities within the financial industry, such as investment banking, insurance and financial auditing. Possible roles for graduates include data analyst, actuarial manager, data modeller, statistical analyst, analyst consultant, data architect, technical project manager and auditor.

Entry Requirements

Specific Condition(s): A-level or equivalent Mathematics.


Student Projects

Robot fencing
Robot fencing

This project involved the building of two robots who fenced with each other.

Read more