BSc (Hons) Computer Science

This programme equips you with a strong and deep understanding of the key issues – both conceptual and technological – involved in building software systems.

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
Typical GCE A-level offer:
BBB or equivalent; see entrance requirements for alternative qualifications.
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.
Fees:
Please see Undergraduate tuition fees.
Find out more:
contact the Programme Leader for Computer Science, Sebastian Danicic.

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

Semester One Semester Two
Introduction to Programming(Two Semesters)
Mathematical modelling for problem solving Audio-Visual Computing
A course called 'Computing Spectrum' consisting of: Computer Science 1
Introductory lectures(first 5 weeks) Introduction to Client-Side Web Development (second 5 weeks)
Data representations and architecture modelling

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.

Lecturer Matthew Yee-King

Introduction to Programming Course Materials


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.

Lecturer Lahcen Ouarbya

Data representations and architecture modelling Course Materials


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:
  1. Week 1: Marco Gillies (Director of Studies) Introduction to the degree programmes at Goldsmiths
  2. Week 2: James Ohene-Djan (Program Leader for Computing and Information Systems)
  3. Week 3: Mick Grierson (Program Leader for Creative Computing)
  4. Week 4: Sebastian Danicic (Program Leader for Computer Science)
  5. 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.

Lecturer Sebastian Danicic

Introduction to Client-Side Web Development course materials

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:
  1. MIDI
  2. sound waves and their properties
  3. sound synthesis
  4. mathematical methods (e.g. vectors, trigonometry, complex numbers)
  5. 2D Computer graphics
  6. image processing
  7. 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.

Lecturers Marco Gillies and Matthew Yee-King

Audio-Visual Computing Course Materials


Mathematical modelling for problem solving

Lecturer Lahcen Ouarbya

Mathematical modelling for problem solving Course Materials


Computer Science 1 (Introduction to Web Devlopment using HTML5, CSS3 and Javascript)

This course will be a continuation of Intro to HTML5, CSS3 and Javascript. Students will learn the fundamentals of client-side web programming. Topics include:
  • Introduction
  • Basic JavaScript: values, variables, and control flow
  • Functions
  • Data structures: Objects and Arrays
  • Error Handling
  • Functional Programming
  • Searching
  • Object-oriented Programming
  • Modularity
  • Regular Expressions
  • Web programming: A crash course
  • The Document-Object Model
  • Browser Events
  • HTTP requests
  • Have a game of Hangman (This is the sort of program you'll write in Comptuer Science 1)

    Lecturer Sebastian Danicic

    Computer Science 1 Course Materials

    Second Year Courses

    Semester One Semester Two
    Principles and Applications of Programming
    Software Projects
    Algorithms and complexity theory Internet and Distributed Programming
    Databases, Networks and the Web

    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

    Lecturer Tim Blackwell

    Principles and Applications of Programming course materials.


    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.

    Lecturer Kate Devlin

    Software projects course materials.


    Internet and Distributed Programming

    Lecturer Sebastian Danicic

    Course Materials

    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?

    Lecturer Ida Pu

    Course Materials not yet available


    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.

    Lecturer Daniel Stamate

    Databases course materials not yet available.

    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.

    Lecturer Rodger Kibble

    Networking and the Web course materials not yet available.

    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.


    Equivalent GCE A-level qualifications

    BTEC National
    Diploma
    Access
    courses
    Scottish
    qualifications
    European
    Baccalaureate
    International
    Baccalaureate
    Other
    requirements
    DDM/DMM 60 Credits including 45 Credits at level 3 (with Merits in related modules) BBBBC (Higher)
    BBC (Advanced Higher)
    75% 6, 6, 5 at HL GCSE Mathematics Grade B