Course Length:
3 years full-time; 4 years full-time with the third year spent on industrial placement in a Computing, Digital Design or Information Technology field; 4-6 years part-time.
UCAS:
G400
Entrance requirements:
If you do not have a Science- or Mathematics-based A-level, you should normally have at least Grade B at GCSE Mathematics. If you are already studying for the BSc in Computing and Information Systems on the University of London External Programme, you may transfer onto the second year of this degree.
If your first language is not English, please check our English Language requirements.
Facilities:
The Department has excellent computing facilities for teaching and laboratory work, supporting Windows, Linux and Mac OS X. There are three departmental laboratories, plus a laboratory for final year students working on specialised projects on networking and communications.
Skills:
Our degrees are designed to equip you with a wide range of knowledge and skills to meet the current demands of the industry and increase your career prospects.
Careers:
In terms of job opportunities and salaries the IT sector is well ahead of most other industrial and commercial sectors. Careers include web developer, software architect, software engineer, software developer, systems analyst, systems engineer, systems programmer, systems administrator, network administrator, web master, software project manager, software project leader, software development manager, database manager. Employers increasingly demand that new recruits are able to add immediate value to their organisation. Because this programme offers the option of an industrial placement year, students can demonstrate that they have already achieved a certain level of professional competence and maturity, which could help you stand out in the job market.
The Computer Science Team
You will be taught by leading experts in the
Department of Computing including:
- Dr. Tim Blackwell
Tim is an expert on swarm intelligence and programming. Swarm intelligence an area of artificial intelligence which considers the collective behaviour of decentralized, self-organized systems, natural or artificial.
- Dr. Sebastian Danicic
Sebastian's research encompasses a range of different areas including program slicing, dependence analysis and transformation, program schema theory, evolutionary mutation testing, and, more recently, intelligent web spidering, Java decompilation and software watermarking. He heads the program transformation and analysis group at Goldsmiths.
- Dr. Kate Devlin
Kate's research expertise lies in Computer graphics, digital image display, visual perception and psychophysics, digital archiving, visual representation theory, virtual interpretations of past environments, computing for archaeology, user interfaces and interaction design.
- Dr. Marco Gillies
Marco's research is mainly on animated virtual characters and particularly expressive body language. This broad area covers many aspects, including animation, Artificial Intelligence and the simulation of behaviour, motion capture and the analysis of body movement. His most recent work has centred on Data Driven Methods for creating responsive virtual characters.
- Dr. Rodger Kibble
Rodger is an Artificial Intelligence expert. His research encompasses Formal Semantics
of Natural Language,
Natural Language Generation,
Agent Theories and
Argumentation. Rodger is currently Secretary of the
SSAISB, the UK's
foremost society promoting the study, dissemination and public awareness
of artificial intelligence, simulation of behavior and the design of
intelligent systems.
- Dr. Lahcen Ouarbya
Lahcen's research is concerned with developing nonlinear models that describe the complex relationship between the solar magnetic field and the Earths magnetic field. Building computational models of this relationship can lead to the development of advanced warning systems for geomagnetic storms. This is of critical importance to technological systems that society heavily depends on.
Currently he is focusing on Computational Intelligence based models of geomagnetic storms. One of the main computational intelligence based model in use in geomagnetic storm modeling is the recurrent neural network (RNN).
- Dr. Nikolay Nikolaev
Nikolay's research encompasses
Polynomial Neural Networks,
Sequential Bayesian Inference,
Stochastic Volatility,
Dynamic Nonlinear GARCH Modelling,
Computational Finance,
Volatility Arbitrage and Option Pricing,
Modelling Interest Rates and the Yield Curve,
Portfolio Allocation and Value-at-Risk Estimation and
Statistical Arbitrage and Trading Algorithms.
- Dr. Ida Pu
Ida's research centres on algorithmics covering various application areas
including
Design and Analysis of Algorithms,
Data Communications and Networking,
Data Compression,
MR Diffusion Imaging, and
Music Analysis.
She leads Algorithms and Computer Networks research group and is a member of Artificial Intelligence group.
-
Daniel Stamate
Daniel is an expert in Intelligent systems, Knowledge bases and Databases
(with particular interests in: Imperfect information representation and
integration; Rule based reasoning under uncertainty, incompleteness and
inconsistency in the context of multi-valued logics; Query optimisation
for imperfect information; Information retrieval), Computational logic
(multi-valued logics), Knowledge discovery in databases, Data mining &
Machine learning, Computational statistics.
- Dr Matthew Yee-King
Matthew has recently obtained a DPhil in Computer Science and Artificial Intelligence from Sussex University. His research involves the application of unsupervised genetic algorithms to the problem of sound re-synthesis.
After completing this degree, you will have a strong understanding of how to design, develop and apply software in all areas of commerce and industry. You will have a clear sense of the issues involved in building and maintaining reliable software for the sophisticated demands of today's market and for the software industry as it develops throughout the 21st century.
What you study
Courses are taught by a combination of lectures, tutorials, workshops and laboratory sessions.
Our degrees include an optional industrial placement year between the second and final year of study. Although we
encourage you to take the opportunity of a placement year, you can also complete your degree in a straight three years.
First Year Courses
Introduction to Programming
This course teaches the basics of programming using a Java-based programming language called Processing.
You will be introduced to programming to develop interactive graphical applications, including games. No previous programming knowledge is assumed. Topics include: drawing on screens, interaction with mice and keyboards, simple statements, variables and conditionals, for and while loops; loops within loops, arrays; functions, objects and classes, and inheritance.
Data representations and architecture modelling
The course provides a discussion of the fundamentals of computer organization (physical design) and architecture (logical design). This will cover machine level representation of data, memory system organization and architecture, system connection, memory, input/output, instruction sets, CPU structure, functions and the control Unit operation and computer networks.
Computing Spectrum - General Introductory Lectures(Weeks 2-6)
This course is divided into two. The first half (up until reading week)
consists of five introductory lectures giving you a flavour of the different degree programmes offered at Goldsmiths. This part of the course will be organised
as follows:
-
Week 1: Marco Gillies (Director of Studies) Introduction to the degree programmes at
Goldsmiths
-
Week 2: James Ohene-Djan (Program Leader for Computing and Information Systems)
-
Week 3: Mick Grierson (Program Leader for Creative Computing)
-
Week 4: Sebastian Danicic (Program Leader for Computer Science)
-
Week 5: Marco Gillies (Round up)
Computing Spectrum - CS (weeks 7-11)
The second half of the course will be an introduction to HTML5, CSS3 and Javascript. The course will consist of five weekly one hour lectures
followed by labs (two hours) with practical Javascript programming exercises.
HTML5 is a language for structuring and presenting content for the World Wide Web, a core technology of the Internet.
HTML5 adds many new syntactical features. These include the <video>, <audio>, and <canvas> elements, as well as the integration of SVG content. These features are designed to make it easy to include and handle multimedia and graphical content on the web without having to resort to proprietary plug-ins and APIs.
CSS3 (Cascading Style Sheets) is a language used to describe the the look and formatting of a document written in a markup language like HTML5. CSS3 is designed primarily to enable the separation of document content (written in HTML5) from document presentation, including elements such as the layout, colors, and fonts.
Javascript is a programming language that usually runs in a Web Browser (e.g. Firefox, Chrome or Safari). It is used in billions of Web pages to add functionality, validate forms, communicate with the server, and much more.
There will also be lectures for Computing Spectrum (Creative Computing)
and for
Computing Spectrum (Computing and Information Systems)
which you are also encouraged to attend.
Audio-Visual Computing
This course will cover the technical fundamentals of computing techniques used in digital media with a particular focus on sound/music computing and computer graphics.The course will cover basic sound and graphics programming, covering a range of topics such as:
- MIDI
- sound waves and their properties
- sound synthesis
- mathematical methods (e.g. vectors, trigonometry, complex numbers)
- 2D Computer graphics
- image processing
- interactive graphics and sound
Students will be expected to implement a number of small pieces of software that demonstrate audio processing and graphics, and to analyse the use of digital media and digital content pipelines in a business setting.
Mathematical
modelling for
problem solving
Second Year Courses
Principles and Applications of Programming
This course covers the following topics:
- Program development on a primary (Java) and secondary platform
(Android)
- Fundamental data structures and algorithms
- Computational complexity, run-time efficiency
- OO design and implementation
- General features of programming languages e.g. type, abstract data
types, the memory model, virtual machines, scope
- Libraries
- Specific language features: primitive and reference types, class and
instance variables, overloading, string manipulation, input and output
streams, serialisation, Internet connectivity, error handling, generics,
threads, memory management
- Advanced software techniques: concurrency, Internet programming, GUI
and event driven programming
- Android application development
Software Projects
Software Engineering (SE) is about designing, implementing, and modifying software so that it is of high quality, affordable, maintainable, and fast to build. It is a systematic approach to the analysis, design, assessment, implementation, test, maintenance and re-engineering of software, that is, the application of engineering to software.
This is a 100% coursework unit. The coursework is a software engineering
user-centred group project that is chosen by the students in each group.
Term 1 involves deciding on the project and creating a proposal: undertaking
research about the intended users, designing with the users in mind, and
prototyping the software. In Term 2, this proposal is implemented and the
groups create their software. Each group has a member of academic staff
allocated to them as a supervisor. Lectures cover the main principles of
user-centred design and software engineering, and also include research
methods. Groups will also give presentations and lead discussions in a
seminar style setting.
Internet and Distributed Programming
In this course you will learn to do low-level socket programming in Java
which enables computers on different nodes of a network to communicate with each other.
These computers, could, in fact be anywhere on the Internet.
A key feature of these techniques is to be able to write concurrent (multi-threaded) code.
You will also learn about important features such as Object Serialisation and how to enable Java programs
to communicate with a database server. This will enable you to combine the SQL techniques you will learn
in the Databases course in Semester one.
Using these techniques you will produce interesting and useful distributed applications.
You will learn how to program clients and servers and to enable them to comunicate accrosa the internet.
Thete techniques have many applications including chat systems, communication on mobile phones and social networking
systems.
Algorithms and Complexity Theory
Algorithms are essential to the way computers process data.
Many computer programs contain algorithms that specify the specific instructions a computer should perform (in a specific order) to carry
out a specified task, such as calculating employees' paychecks or printing students' report cards. Thus, an algorithm can be considered
to be any sequence of operations that can be simulated by a Turing-complete system.
Computational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses
on classifying computational problems according to their inherent difficulty. In this context, a computational problem is understood to
be a task that is in principle amenable to being solved by a computer (which basically means that the problem can be stated by a set of
mathematical instructions). Informally, a computational problem consists of problem instances and solutions to these problem instances.
To measure the difficulty of solving a computational problem, one may wish to see how much time the best algorithm requires to solve
the problem. However, the running time may, in general, depend on the instance. In particular, larger instances will require more time to
solve. Thus the time required to solve a problem (or the space required, or any measure of complexity) is calculated as function of the
size of the instance. This is usually taken to be the size of the input in bits. Complexity theory is interested in how algorithms scale
with an increase in the input size. For instance, in the problem of finding whether a graph is connected, how much more time does it take
to solve a problem for a graph with 2n vertices compared to the time taken for a graph with n vertices?
Databases, Networks and the Web
This course consists of two parts:
Databases
An understanding of Databases is essential for all Computer Scientists
interested in `real word' applications.
This is an introductory course
into the theory and practice of
databases using PostgreSQL (the world's most advanced
open source database) and one of the starting points
for the development of the new generation data warehouse technologies
(including IBM's Netezza).
The course will present the functionality of database management systems,
and will focus on the study of the relational databases and of the most
used database programming language, SQL, in particular of its data
definition and data manipulation components. Practical work on SQL will be
illustrated in labs using the client server architecture, in particular by
employing pgAdmin software as client on local machines, and PostgreSQL as
database server running on a central server machine. The course will
present also elements of database design, which is a key component in the
process of building optimal database systems.
Due to the SQL standard implemented by PostgreSQL, students get the
necessary skills to write portable SQL database code which can run on any
other relational databases supporting this standard, including Oracle,
MySQL, SQL Server, etc.
The database theoretical and practical elements studied in term 1 will
prepare students for tackling the next phase in building database
applications - consisting in adding web interfaces to databases, which
will be studied in term 2.
Networking and the Web
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document. PHP also generates SQL commands to query and
update databases.
This is mainly a PHP course for server-side web-programming. Students will develop applications in term 2 which
will integrate web programming with database access.
Students
will also learn about basic network topologies and TCP/IP protocol stack, IP addressing etc.
Your final
year consists of option courses and a major project, in which you apply your new technological skills to solve real-world problems in
innovative and practical ways.
Assessment
Modular: assignments, tests, laboratory exercises, exams, final year project. If you opt for an industrial placement year, your placement tutor will assess your work. If you complete the placement year successfully, you earn the endorsement 'with work experience' on your degree certificate.
Application enquiries
Please see how to apply for information on applying to this programme.