Degree Overview

All of our programmes start with a common core of mathematics courses and informatics courses, with increasing options for specialisation in later years depending on your interests.

Each year you will have 120 credits worth of courses spread across two semesters. Some of these credits will go into compulsory courses and the remaining can be used on optional courses. Depending on the particular programme you choose, your compulsory courses will vary, as well as the number of optional courses you can take. You can take a closer look at our compulsory courses for our 4-year Honours degrees below.

The information provided reflects the current structure and content of our programmes and courses, and may change in future years based on the needs of the School and its students.

Year 1

Our first year courses are designed to introduce you to studying mathematics at University level and introduce some of the basic principles of programming and computation. The computing courses are suitable for all levels, including complete beginners, then will progress fairly quickly.

The courses listed below are compulsory for most Informatics students; students on Computer Science and Mathematics programme take other compulsory maths courses.  

Introduction to ProgrammingThe purpose of this course is to allow students who start their degree without a strong background in programming to develop the knowledge, skills and confidence required for later courses. The course assumes no prior experience of coding, and will use Python to introduce students to a range of basic programming concepts, allowing them to gain skills through practical application. Students passing this course will have achieved a level of knowledge in programming similar to those who have completed Higher Computing or similar. This will lay the foundations of success for later courses for Informatics students, and provide students with the tools to develop their own programming skills.
Critical Skills and PracticeAn introduction to what it means to be studying Informatics at Edinburgh, including the wider context of the discipline and profession, the composition of the School (including its people and research), and what skills are required to study the subject well. Students will learn how to make the most of university education, how to think critically about their work and others', and how to approach solving complex, practical problems while acknowledging their influence by and on wider society.
Calculus and Algebra Fundamentals for InformaticsAn introductory course in University Mathematics and its application to Informatics, covering topics not covered in the previous education of many incoming undergraduates on Informatics degrees as a preparation for their first two years on all pre-Honours Informatics degree programmes. Delivery of the course is by lectures, workshops and online quizzes.
Linear AlgebraThis is a course in concrete, computational linear algebra. The aim is to provide students with a nuts-and-bolts mastery of the basic computations and manipulations in linear algebra, as well as an appreciation of its wide-ranging applications. This knowledge is a crucial requirement for later courses in pure and applied mathematics, as well as operational research and statistics. A representative outline of the course is: Vectors, Dot product, Matrices, Systems of linear equations, Gaussian elimination, Matrix algebra, Determinants, Kernel, image, Rank-nullity theorem, Eigenvalues, Singular value decomposition.
Foundations of ComputingThis course introduces you to fundamentals of logic, models of computation, computer architecture, and programming concepts and features. At the end of this course, you should be able to reason with computational models and apply various programming concepts.

Introduction to Programming course is compulsory unless you either have an A at A-level or Advanced Higher Computing Science.

Calculus and Algebra Fundamentals for Informatics is compulsory if you have Higher Mathematics only, or Advanced Higher less than Grade A, or A-level Mathematics less than grade A, or equivalent. It is not required if you have A-level Mathematics at Grade A*, or SQA Advanced Higher at Grade A, or equivalent.

You will also have the opportunity to take a Diagnostic test for both of these courses in late august, in advance of the start of the semester. If you pass, you will not need to take these courses.The diagnostic test will be available to you after the UG1 Course choice information session in late August, in advance of the start of the semester.

You will develop your knowledge by exploring more advanced programming concepts and data structures as well as some of the ethics behind computing in the real world. 

Students on most Informatics degrees are required to take the following compulsory courses in Year 2. If you are studying Cognitive Science or are on a joint degree, you may take fewer of courses listed below, but instead take some courses in your joint degree area.

Introduction to Computer Systems* **You will learn about the design, implementation and engineering of Digital computer systems. You will create programmes replicating the behaviour of basic computer systems using C programming language and assembly language.
Discrete Mathematics and ProbabilityThe first part of this course covers fundamental topics in discrete mathematics that underline many areas of computer science and presents standard mathematical reasoning and proof techniques. The second part of this course covers discrete and continuous probability theory, including standard definitions and commonly used distributions.
Foundations of Data Science*This course introduces you to a core set of knowledge, skills and ethical principles and ways of thinking that are needed for data science and machine learning using Python. The mathematics you studied in Year 1 and will study in Year 2 are instrumental in helping you understand many of the statistical techniques used in this field.
Introduction to Algorithms and Data Structures*You will learn some of the standard algorithms and data structures that underlie all areas of computation and put them into practice through various Python based courseworks. You will also apply some mathematical concepts to analyse both the theoretical complexity of algorithms and their practical behaviour.
Software Engineering and Professional Practice*Teaches the practice of small team software development, equipping you to participate in a modern tech company or a software-dependent research team in accord with your professional and legal obligations. You will gain experience developing a software system from scratch using some of the key concepts of Java and object-oriented programming studied in Year 1.

* Not a compulsory course on the Cognitive Science BSc. 

** Not a compulsory course on the Artificial Intelligence BSc.


Your studies will become more focused and you will have more choice in selecting specialised courses according to your interests. 

Students on most Informatics degrees are required to take the following compulsory courses. If you are studying Cognitive Science or are on a joint degree, you will normally do a subset of these.

Informatics Large PracticalThe Informatics Large Practical exposes students to the problems that arise with the design and implementation of large-scale software systems, and to methods of coping with such problems using Java.
Professional IssuesThe aim of the course is to highlight and allow students to develop and understanding of key aspects of the wider context in which their practice as Informatics professional will occur.
Computer SecurityComputer Security is concerned with the protection of computer systems and their data from threats which may compromise integrity, availability, or confidentiality; the focus is on threats of a malicious nature rather than accidental. This course uses Python and assembly language. 
System Design ProjectThe System Design Project is intended to give students practical experience of (a) building a large scale system (b) working as members of a team. The project involves applying and combining material from several courses to complete a complex design and implementation task. At the end of course each group demonstrates its implemented system and gives a formal presentation to an audience of the students, supervisors, and visitors from industry.

You will have the opportunity to specialise, having covered much core material in previous years. Specialisation is available in the form of a wide range of course options and through the project/dissertation/thesis, which is undertaken on an individual's preferred topic, agreed with a supervisor. 

The Honours Project will be your only compulsory course for most Informatics degrees other than Cognitive Science (BSc) and joint honours degrees with other Schools.

Honours ProjectThis is a major project and is intended to allow students to demostrate their ability to organise and carry out a substantial piece of work. The project is conducted individually by you, but will be under the supervision of a member of teaching staff. The projects specification is usually provided by a member of staff, but you may be able to develop your own specification if approved by a member of staff.

Optional Courses

The rest of your credits can be spent on optional courses and the number of optional courses you can take will depend on the number of credits you have remaining. 

These can either be outside subjects or optional Informatics courses. 

Outside courses can be chosen from across the University, provided the timetable fits. Popular outside choices include, but are not limited to, physics, mathematics, economics, business, philosophy and languages.  

Degree Regulations and Programmes of Study (DRPS)

For a more detailed look at your specific programme and course descriptions, including a detailed breakdown on what compulsory and optional courses are available, delivery information, and assessment information and learning outcomes, be sure to look at the Degree Regulations and Programmes of Study (DRPS).

Please note: the above links are for the current academic year and are subject to change in future years.

Curriculum renewal

We are undertaking an ongoing curriculum renewal, which may result in changes to our degree programmes.

This renewal makes sure we equip you for an exciting career in the ever-changing world of computer science.

The information provided reflects the current structure and content of our programmes and courses, and may change in future years based on the needs of the School and its students.