Goldsmiths logo
Imagebar

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
Applying:
Fees and funding:
Please see undergraduate tuition fees.
Contact the department:
Contact the Admissions Tutor, Dr Sebastian Danicic.
Booklet:
Download a booklet [PDF, 668KB]

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

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

Term One Term Two
Introduction to Programming
Mathematical Modelling for Problem Solving 
Audio-Visual Computing

Computing Spectrum

consisting of:

  • Introductory lectures (first 5 weeks)
  • Introduction to Client-Side Web Development (second 5 weeks)

Computer Science 1

 

Data Representations and Architecture Modelling

Second year courses

Term One Term Two
Principles and Applications of Programming
Software Projects
Algorithms and Complexity Theory Internet and Distributed Programming
Databases, Networks and the Web

Your final year

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.

Register your interest

If you register your interest in this programme we will keep you informed about open days and send you relevant further information.

Courses and structure

Courses are taught by a combination of lectures, tutorials, workshops and laboratory sessions.

Find out more about the BSc Computer Science teaching team.

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. Lecturer: Matthew Yee-King
  • Computing Spectrum
    This course is divided into two:

    Introductory lectures (weeks 2-6)

    The first half of the course (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)

    Introduction to Client-Side Web Development (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 (eg Firefox, Chrome or Safari). It is used in billions of web pages to add functionality, validate forms, communicate with the server, and much more. Lecturer: Sebastian Danicic

    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 (eg vectors, trigonometry, complex numbers)
    5. 2D computer graphics
    6. image processing
    7. interactive graphics and sound

    You 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
  • Computer Science 1 (Introduction to Web Devlopment using HTML5, CSS3 and Javascript)
    This course will be a continuation of your introduction to HTML5, CSS3 and Javascript. You 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 Computer Science 1). Lecturer: Sebastian Danicic
  • Data Representations and Architecture Modelling
    The course provides a discussion of the fundamentals of computer organisation (physical design) and architecture (logical design). This will cover machine level representation of data, memory system organisation and architecture, system connection, memory, input/output, instruction sets, CPU structure, functions and the control unit operation and computer networks. Lecturer: Lahcen Ouarbya

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 eg 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
  • 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
  • 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
  • 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 accross the internet. These techniques have many applications including chat systems, communication on mobile phones and social networking systems. Lecturer: Sebastian Danicic
  • Databases, Networks and the Web
    This course consists of two parts:

    * Term One: Databases
    * Term Two: Networking and the Web

    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 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 also present 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, you will develop the skills needed to write portable SQL database code, which can run on any other relational databases supporting this standard, including Oracle, MySQL, SQL Server etc.

    The theoretical and practical elements studied in term 1 will prepare you to tackle the next phase in building database applications – consisting of adding web interfaces to databases, which will be studied in term 2. Lecturer: Daniel Stamate

    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. You will develop applications in term 2 which will integrate web programming with database access. You will also learn about basic network topologies and TCP/IP protocol stack, IP addressing etc. Lecturer: Rodger Kibble

Your final year

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.

Skills and careers

There is a shortage of graduates who have the confidence to apply new technologies in creative ways; a computing degree from Goldsmiths will enable you to do this.

Our degrees aim to equip you with a wide range of skills to meet the current demands of the industry and increase your career prospects.

Industrial placement year

Our degree programmes include an optional Industrial Placement Year between the second and third year of study. This offers you the invaluable opportunity to develop the practical skills and real world experience that is sought after by employers. You're supported throughout your placement year by a placement tutor, who provides you with guidance and liaises between you and your employer.

Skills

After completing this degree you'll have a strong understanding of how to design, develop and apply software in all areas of commerce and industry. You'll 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.

We'll encourage you to understand the social context and visual design aspects of software development together with the technical skills of programming.

Our degrees have a large proportion of practical work in which you must deliver software projects, both individually and in groups. This mirrors as closely as possible a real world work environment. These projects develop your technical skills but also require you to tackle the broader aspects of the software development process, such as understanding users' needs and requirements and the design of interfaces on a number of platforms – from web pages to touch screen phones.

Careers

The explosive and ever-growing use of technology in business and commerce means that there's a whole range of different career possibilities for computing graduates. In terms of job opportunities and salaries, the IT sector is well ahead of most other industrial and commercial sectors.

Potential careers

  • Application programmer
  • Mobile App developer
  • Web developer
  • Video game developer
  • Film special effects and post-production
  • Computer music/sound engineer
  • Interface designer
  • Systems analyst
  • Database manager

Organisations employing IT consultants

  • IT consultancies
  • New media and advertising companies
  • Computer games developers
  • Software development firms
  • Financial institutions
  • Engineering companies
  • Retail and service industries
  • Tourism and leisure industries
  • Entertainment industries
  • IT support for the design industry

Further information

About the department

The Department of Computing

A key feature of our department is interdisciplinarity, which is the interaction of computing with a wide range of other subject areas. We don't just see computing as a purely technical discipline. We have a particular focus on computing applied to the arts and creative industries including music, film, TV, visual arts, games and animation.

Our degrees give you a wide appreciation of the subject – rather than just an understanding of existing commercial approaches – so that your knowledge can adapt and evolve. They also include an optional Industrial Placement Year, which enables your to gain invaluable practical skills and real world experience.

  • We have a hands-on approach that focuses on practical work in real world situations
  • We take a very practice-based approach to computing; programming is a practical skill and it's important that you learn it by doing, not just learn it in theory
  • We'll help you explore the creative potential as well as the technical aspects of computing
  • The Department has a warm and friendly atmosphere with staff and students of different ages and backgrounds
  • We'll help you become a creative computing practitioner, for whom there is a growing demand in business and industry

Staff

The staff who teach you are all actively engaged in quality research, and this means that you'll be taught by experts who apply their skills to developing cutting edge technology. Our teaching is strongly focused on applying academically rigorous concepts to real world situations.

Find out more about staff in the Department of Computing.

Facilities

We have excellent computing facilities for teaching and laboratory work. There are four department laboratories containing 90 Macs and PCs equipped with a substantial amount of the latest software used in the IT and creative industries.

 

Student profiles

"In February 2009 I left my job as a car sales executive, to look after my son who was 6 months old at the time. My fiancé then suggested that I have a look at higher education options. Due to a motorcycle accident in my final year, my A-level results were not great, so with help and support from my fiancé I contacted all my local colleges and universities to see what my options were.

Professor Mark d’Inverno at Goldsmiths was incredibly helpful and invited me to come down, look around the department and have a chat about which course would be suitable. As a mature student Mark said that I would be able to apply for a place on either the foundation computing course or one of the Honours degrees. I completed an aptitude test and after our chat Mark made me an unconditional offer of a place on the Computer Science BSc (Hons) course, which I happily accepted. I was also made an offer by another university, which is just around the corner from my house, but I found the research being carried out was far superior at Goldsmiths, which is something I feel is very important for a subject such as computing as it is a constantly evolving subject that requires you to be up-to-date with new developments.

Since starting at Goldsmiths I have found everyone to be really supportive. The campus is not too big and has a very intimate atmosphere - all the staff and students are really friendly and are all happy to answer any questions or just chat.

The course is challenging and interesting without being intimidating and there are loads of surgery hours where you can work in small groups with individual lecturers if you are struggling or want to take a subject further. There is also a lot of emphasis put on the creative side of computing which I feel is really important. Choosing which university to go to can be a difficult decision, but I am confident that I made the right choice and would definitely recommend Goldsmiths to anyone looking to study computing in any of its forms."

Michael, BSc Computer Science


"I first heard about Goldsmiths from a friend who had been a student here. I researched into it and came across the Computer Science degree which included the foundation year, which was the course I was looking for. The location impressed me as well, as it was only a five-minute train journey to central London.

After researching, I flew over for a week to visit the universities that I wanted to apply to but wasn't impressed by the others. As soon as I was outside Goldsmiths' Richard Hoggart Building I knew that this was the university that I wanted to study at. The architecture and the history of the university inspired me and I don't regret my decision to study here.

Furthermore, being an overseas student, I found all the help I needed on site, and the freshers fortnight was a great  start to meeting new and different people and also getting to know my flatmates more. In addition, the tutors treat you more as a friend rather than a student and are always there to help you if you ever need them.

Being a student is an amazing feeling! Especially in London. There are always things going on that you can go to, and a lot of clubs have special student nights where you get to meet students from other universities."

Nicholas, BSc Computer Science (with Foundation Year)


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% Pass with at least 31 points, with 6, 6, 5 at HL GCSE Mathematics Grade B




Goldsmiths, University of London, New Cross, London, SE14 6NW, UK
Telephone: + 44 (0)20 7919 7171

Goldsmiths has charitable status

© 2012 Goldsmiths, University of London. Copyright and Disclaimer

Sitemap

Edit