Computing
Goldsmiths’ Department of Computing focuses on the advancement of computing in many different technological areas including artificial intelligence, biology and genetics, cognitive science, computer games and entertainment, computer music, computer vision, design, digital arts, archaeology and architecture, and haptics, as well as in computer science itself. We are one of the leading departments in Europe for the combination of mainstream computing research, and its creative and innovative application in key interdisciplinary areas.
See also Music for couses in music computing.
In the Summer term you can choose to do 2 additional credits of project work related to courses studied in the Spring term. This work is negotiated individual study supported by some tutorial guidance. You should inform your home university and the International Office at Goldsmiths of the agreed topic once it has been confirmed. When you tell your International Liaison tutor the topics you are interested in studying, they can consider appropriate tutorial guidance arrangements. You should aim to confirm these details by week 6 of the Spring term.
Please note: Year 3 are just indicative and are subject to change on an annual basis.
Year 1
IS51002C
Mathematical Modelling for Problem Solving
(4 credits, Spring)
This course introduces the basic mathematical tools, both discrete and continuous, for supporting computational and algorithmic inquiry. We pay particular attention to notions of experimentation, reasoning, and generalisation.
We explore number systems, sets and subsets, logic, sequences and series, relations and functions, graphs and trees.
IS51008B
Introduction to Programming
(4 credits, Autumn; 8 credits, Autumn and Spring; )
You are introduced to programming through the Processing programming language (a variant of Java) 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.
IS51009B
Data Representation and Architecture Modelling
(4 credits, Autumn)
A discussion of the fundamentals of computer organisation (physical design) and architecture (logical design). We look at 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. We cover relational databases and web languages such as HTML, XHTML and XML.
IS51010B
Introduction to Computing in Business
(4 credits, Spring)
Provides an introduction to computers in business and their deployment within organisations that conduct business using internet technologies. It analyses the technologies and business theories designed to enable the effective application of computing in today’s businesses. We also examine success stories that illustrate the effective application of computers in businesses.
IS51012C
Audio-Visual Information Systems
(4 credits, Spring)
Prerequisite: introductory knowledge of Processing or Java languages.
Covers the technical fundamentals of computing techniques used in digital media, especially sound/music computing and computer graphics. This has a stronger focus on business uses of digital media than the two related courses (Audio-Visual Computing and Creative Audio-Visual Computing). You implement small pieces of software that demonstrate audio processing and graphics, and analyse the use of digital media and digital content pipelines in a business setting.
IS51013B
Introduction to Creative Computing Practice
(4 credits, Spring)
You are expected to have some interest in graphics and/or sound, moving image and games. You are introduced to a wide range of industry standard tools for generating and handling content in areas of sound, music, still image, video, gaming, internet and digital arts. You are presented with a broad range of exemplar approaches, and are encouraged to begin developing your creative practice in web, video, interactive media, sound, music and gaming.
IS51014A
Computing Spectrum
(4 credits, Autumn; 8 credits, Autumn and Spring; )
Composed of two main streams that can be taken individually (4 credits each) or together (8 credits). Stream one is based on Computer Science and Information Systems and Technology, and stream two is based on Creative Computing and Reflective Practice. You are given a flavour of our three main undergraduate degrees: Computer Science; Computing and Information Systems; and Creative Computing. You are introduced to reflective practice – the ability to analyse your own work critically. When applying, please indicate which stream(s) you have chosen.
IS51015A
Computer Science
(4 credits, Spring)
An introductory course in the basic concepts essential in computer science: a brief introduction to logic, set theory, type theory, graph theory, algorithms and recursive function theory, complexity and formal language theory. The practical side involves simple programming in a functional language to which the course has introduced you.
IS51016A
Audio-Visual Computing
(4 credits, Spring)
Prerequisite: introductory knowledge of Processing or Java languages.
Covers the technical fundamentals of computing techniques used in digital media, with a particular focus on sound/music computing and computer graphics. Examines a range of topics such as: MIDI, sound waves and their properties, sound synthesis, mathematical methods (eg vectors, matrices, trigonometry), 2D Computer graphics, image processing, interactive graphics and sound. This has a stronger focus on the fundamental algorithms than the two related courses (Audio-Visual Computer Information Systems and Creative Audio-Visual Computing). You implement a number of small pieces of software based on the above topics.
IS51017A
Creative Audio-Visual Computing
(4 credits, Spring)
Prerequisite: introductory knowledge of Processing or Java languages.
Examines the technical fundamentals of computing techniques used in contemporary creative practice, with a focus on sound/music computing and computer graphics. This has a stronger focus on creative uses of digital media than the two related courses (Audio-Visual Computer Information Systems and Audio-Visual Computing). You implement small pieces of software that demonstrate audio processing and graphics.
MU51047A
Music Computing 1
(4 credits, Autumn and Spring)
Introduces the overarching themes of music computing: how computers listen and analyse sound and music, how they can generate musical and sonic processes and structures, and how they can render these patterns as sound and music. You develop an understanding of the origins and development of computer-aided composition and computer-based electronic music, presented in a short series of repertoire-based case studies.
Year 2
IS52014C
Programming with Object Orientated Data Structures and Algorithms
(4 credits, Autumn)
Prerequisite: introductory knowledge of a programming language as Java or similar.
You learn to use and create appropriate data structures, and to provide solutions to programming problems in an object oriented language. In particular you learn to read and effectively use the API documentation in an object oriented language, to choose appropriate data structures from the API documentation, and to develop your own data structures suitable for various problems.
IS52017B
Algorithms and Complexity Theory
(4 credits, Spring)
Prerequisite: introductory knowledge of computer programming.
Aims to provide a rigorous basis for algorithm design and analysis, and an introduction to computational complexity theory. You develop knowledge of classes of computational problems and typical corresponding data structures and algorithms. You are exposed to a formal basis for analysing algorithms with a view to estimating the resources (processing time and storage) required for their execution, and to a formal basis for classifying computational problems in terms of their inherent difficulty (independently of the algorithms used).
IS52018C
Software Engineering and Development
(4 credits, Autumn)
This course aims to provide a structured view of the process of software development, and to equip you with the knowledge and skills required for the completion of a software development process, from requirements gathering to the final validation of the implemented system.
IS52020B
Perception and Multimedia Computing
(4 credits, Autumn; 8 credits, Autumn and Spring; )
You learn the essentials of perception: how the physical phenomena of light and sound are related to our experiences of colour, motion, melody, harmony and rhythm. You are taught a programming language suited to the signal processing domain in order to treat images and sounds, and to implement transformations and filters as linear systems. You then go on to see the application of knowledge of human perception and of signal processing to the construction of multimedia databases and retrieval of information from collections of multimedia.
IS52021B
Data Modelling
(4 credits, Spring)
Prerequisite: introductory knowledge of Computing.
Focuses on relational database systems, mainly from a development perspective, emphasising issues related to optimised data modelling and database implementation in SQL. You learn how to implement appropriate representations of data in a Relational Database Management System, how to perform appropriate queries to extract particular information from data, and how to manage the integrity and security of database systems.
IS52023B
Creative Computing Practice
(4 credits, Autumn; 8 credits, Autumn and Spring; )
An introduction to a wide range of industry standard tools for generating and handling content in areas of sound, music, still image, video, gaming, internet and digital arts. You are presented with a broad range of exemplar approaches, and are encouraged to begin developing your own creative practice in web, video, interactive media, sound, music and gaming. You engage with contemporary theoretical and aesthetic ideas in your own project work, whilst developing an understanding of project development and management concepts.
IS52024A
Network Models
(4 credits, Autumn)
Introduces the theoretical underpinnings of networks, using these to explain the implementation of computer networks and the characteristics of Web-based social networks. You learn to convert between representations of directed and undirected graphs, to execute algorithms to solve graph problems (eg shortest-path, travelling salesman). On completion you will be able to explain in terms of established (OSI, TCP/IP) models the structure of modern computer networks, to explain the routing algorithms underlying the Internet Protocol.
IS52025A
Internet and Distributed Programming
(4 credits, Autumn)
Prerequisite: introductory knowledge of programming.
You will learn to use and create applications which communicate with each other and with other processes across a network in an object oriented programming language. In particular you will acquire the ability to understand the need for concurrency when doing network and distributed programming, to understand the need for synchronisation, and the problems (eg deadlock and starvation) in concurrent systems. You will also be exposed to technologies supporting applications running in browsers.
IS52026A
Information Systems for E-business
(4 credits, Autumn; 8 credits, Autumn and Spring; )
Focuses on Computing and Information Systems mainly from a business perspective. It provides you with a detailed understanding of Computing and Information Systems theories and techniques of business systems analysis, design and implementation through the comparative analysis of business software development, database design, systems thinking, business process re-engineering, business computing ethics, electronic commerce, and organisational behaviour and management.
IS52027A
Web Programming
(4 credits, Spring)
Prerequisite: introductory knowledge of programming.
You learn to create simple interactive websites based on specific user requirements. In particular you study the differences between conventional programming and web-based applications, and will be able to understand why web-based applications are needed, and the importance of dynamic web-based applications and their interaction with database servers.
IS52028A
Programming User Interfaces
(4 credits, Spring)
Prerequisite: introduction to programming.
You will learn to use and create programmes with event-driven user interfaces in an object oriented programming language. In particular you will learn how event-handling works, and develop detailed knowledge of a graphic user interface package in a high level object oriented programming language. You will also learn to plan a graphical user interface and write complex systems with a sophisticated feature-rich graphical user interface.
MU52047A
Music Computing 2
(4 credits, Autumn; 8 credits, Autumn and Spring; )
Introduces advanced concepts in music computing as applied to analytic study and creative practice. Methods, concepts and wider implications of music information retrieval and computer-based musicology are explored with reference to notated scores, MIDI data and audio. We also explore the application of artificial intelligence (AI) to music, improvised performance and live DSP. You develop your expertise in a music programming language, and learn how to interface audio systems with AI modules. A key concern is the interaction between users and performers and computer music systems in a real-life setting. You develop an understanding of practical and aesthetic issues in the production and presentation of such work.
Year 3
IS53002A
Neural Networks
(4 credits, Autumn)
Prerequisite: basic knowledge of Computer Science.
Introduces the theory and practice of neural computation. The course covers the principles of neurocomputing with artificial neural networks widely used for addressing real-world problems such as classification, regression, pattern recognition, data mining, time-series prediction. We look at two main topics: supervised and unsupervised learning. We study supervised learning using linear perceptrons, and non-linear models such as probabilistic neural networks, multilayer perceptrons, and radial-basis function networks. Unsupervised learning is studied using Kohonen networks. We briefly cover recurrent networks of the Hopfield type. We provide contemporary training techniques for all these neural networks, and knowledge and tools for the specification, design, and practical implementation of neural networks.
IS53008A
User Interface Design
(4 credits, Autumn)
The success of a computer system often depends on how easily the user can learn to use the interface. One of the most important current developments is using good design to enhance the ability of the non-expert to understand the interface of desktop computers, laptops, PDAs, mobile phones, and so on. This course focuses on how to design and evaluate effective interfaces covering functional and technical issues as well as psychological and human aspects.
IS53010A
Data Compression
(4 credits, Autumn)
Prerequisite: basic knowledge of Computer Science.
You are presented with important issues of data compression, and have the opportunity to learn a variety of data compression techniques commonly used for multimedia, conventional computers and networks. By studying compression algorithms for symbolic data, programmes, sound, images, graphics and multimedia, you broaden your knowledge in IT and enhance your skills in problem solving and programming. Topics include: minimum redundancy coding, data compression and information theory, adaptive Huffman coding, arithmetic coding, statistical modelling, dictionary-based compression, image compression, audio compression and video compression.
IS53011A
Language, Design and Implementation
(4 credits, Autumn)
Prerequisite: average knowledge of a programming language.
You are introduced to principles and techniques for construction of programming language processors. The course offers algorithms for the design of language compilers and interpreters. We cover the following fundamental topics: language definition, lexical analysis, syntax analysis, code generation and code optimisation. We look at regular and context-free language grammars, top-down and bottom-up parsing. There is an emphasis on the pragmatics of compiler construction: syntax-directed translation, automatic code generation and strategies for machine-independent code improvement. A one-pass language compiler in Java is demonstrated.
IS53012A
Computer Security
(4 credits, Autumn)
Prerequisite: basic knowledge of Computer Science.
Provides a broad overview of topics in securing computer-based resources, especially the information stored on hardware and controlled by software. We explore core concepts of computer security, including attacks and control, and various techniques for the protection of computer-related assets. Covers topics including computer security, attacks and control, elementary cryptography, cryptosystems, security control models, security problems and protection in operating systems, in databases and data mining, and in networks, security management and administration, legal and ethical issues: patents, copyrights and trademarks, and prosecution.
IS53013A
Electronic Commerce
(4 credits, Autumn)
Prerequisite: basic knowledge of computing.
Aims to familiarise you with current and emerging electronic commerce technologies using the Internet.
You are equipped with a detailed understanding of the major issues regarding the deployment of Internet technologies within and between organisations. Topics include Internet technology for business advantage, managing electronic commerce funds transfer, reinventing the future of business through electronic commerce, business opportunities in electronic commerce, electronic commerce website design, and business plans for technology ventures. The course aims to educate a new generation of managers, planners, analysts, and programmers for electronic commerce.
IS53023B
Data Mining
(4 credits, Spring)
Prerequisite: general knowledge of Computer Science, including Java programming language.
Provides you with theoretical knowledge of basic and advanced machine learning algorithms and statistical techniques utilised in the process of discovery of hidden patterns in potentially large volumes of data. Practical data mining will be introduced through both algorithm implementation in Java and data mining software utilisation for knowledge discovery in data from various fields of activity.
IS530024A
Artificial Intelligence
(4 credits, Autumn)
Prerequisite: general knowledge of Computer Science, including Java programming language.
Introduces the essential principles of artificial intelligence as part of computer science. The emphasis is on heuristic problem solving methods. Material includes: heuristic search techniques, knowledge representation, rule-based systems for deductive problem solving, search-based planning, and inductive machine learning. The heuristic techniques covered are: depth-first search, breath-first search, iterative deepening, bidirectional search, hill climbing, and adversarial search. Guidelines are provided for implementing practical expert systems, planning systems, and empirical learning systems with version spaces using the candidate elimination algorithm.
IS53027B
Advanced Audiovisual Processing
(4 credits, Autumn)
Prerequisite: introductory knowledge of Computing including a programming language such as Java or C.
Aims to enhance skills and experience in the development of software for the creation and manipulation of sounds and images in real and non-real time. It extends the principles of creative engineering for use in arts, games and more general interaction scenarios so that you can develop your own projects through the use of computational approaches to audiovisual processing. The course details the key similarities and differences between sound and image signal processing through the exploration of combined audiovisual approaches, with particular reference to audiovisual perception and cognition. Content is delivered through programming languages including MaxMSP/Pure Data, Java, C and C++.
IS53030A
Physical Computing
(4 credits, Autumn)
Prerequisite: introductory knowledge of a programming language such as Java or C.
Physical Computing is of increasing interest to artists, musicians, choreographers and other creative practitioners for the creation of novel artworks and for forms of computational interaction between these objects and people. The focus is the interface between the digital and the analogue. It encompasses basic physics, electronics, programming and software engineering. The practical objective is the development of skills for designing and building interactive physical devices. Taught through seminars and practical sessions oriented around the Arduino chip and development environment.
IS53032A
Advanced Graphics and Animation
(4 credits, Autumn)
Prerequisite: introductory knowledge of Processing or Java languages.
Covers advanced methods used in current state-of-the-art graphics and animation systems, including the mathematical foundations, computational techniques and their use in creative practice. The course covers major contemporary graphics and animation techniques. You are given the mathematical foundations of the subject, as well as other theoretical foundations such as perceptual theories. These theoretical aspects are taught in the context of their practical use. You are introduced to some industry standard graphics software tools, but the main focus is on programming graphical software.
IS53036A
Natural Language Processing
(4 credits, Autumn)
Prerequisite: basic programming ability.
Combines a critical introduction to key topics in theoretical linguistics with hands-on practical experience of developing applications to process texts and access linguistic resources such as Corpora. Topics covered include part-of-speech tagging, syntax and parsing, and information extraction. Uses the Python language but assumes no previous knowledge of this.