Undergraduate Course: Informatics 1 - Foundations of Computing (INFR08035)
Course Outline
| School | School of Informatics |
College | College of Science and Engineering |
| Credit level (Normal year taken) | SCQF Level 8 (Year 1 Undergraduate) |
Availability | Available to all students |
| SCQF Credits | 20 |
ECTS Credits | 10 |
| Summary | This 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. |
| Course description |
This course is an important foundational course for all areas of Informatics. It is key preparation for our undergraduate degrees, covering foundational models of computing, and various concepts that inform our understanding of how practical limitations affect the behaviour of computer systems. This material will be linked to practical programming throughout the course. The course will run in semester 2, through a mixture of lectures, tutorials, and labs.
The following is an indicative list of topics covered:
- Sets, data types (strings of characters/bits/numbers, functions)
- Boolean logic and its application in software and hardware. Methods for reasoning and constructing proofs in propositional logic, and methods for checking a proof. This will include truth tables and some sequent-based method of deduction. Conjunctive normal form (CNF) will be covered.
- Finite-state machines (FSMs) as a model of computation, and equivalence results about deterministic and non-deterministic FSMs. Regular expressions.
- System-based models of computation (von Neumann and RAM), and some simple examples of these models. Big-O asymptotic notation.
- Lambda calculus and the composition of lambda calculus expressions.
- Different programming paradigms (imperative, functional, and some aspects of object-oriented) and how to apply them.
- Illustration of imperative programming via pseudocode or an imperative programming language.
- Abstract data types (including basic types, but also interfaces and modules) in the context of programming. Algebraic data types and pattern matching.
- Programming environments: Compilers and interpreters, and memory allocation for programming.
- Using recursion and other decomposition techniques to solve problems by breaking them into smaller subproblems; composing functional programs from suitable function specifications such as types.
|
Entry Requirements (not applicable to Visiting Students)
| Pre-requisites |
|
Co-requisites | |
| Prohibited Combinations | Students MUST NOT also be taking
Informatics 1 - Introduction to Computation (INFR08025)
|
Other requirements | Any student taking this course must have a strong background in Mathematics, attaining high grades at High School level. They should also have mastered at least one computer programming language.
For any non-Informatics UoE students wanting to take this course, we will require equivalent Maths/programming entry qualifications to those of the Informatics students. |
Information for Visiting Students
| Pre-requisites | Any student taking this course must have a strong background in Mathematics, attaining high grades at High School level. They should also have mastered at least one computer programming language.
For any non-Informatics UoE students wanting to take this course, we will require equivalent Maths/programming entry qualifications to those of the Informatics students. |
| High Demand Course? |
Yes |
Course Delivery Information
|
| Academic year 2026/27, Available to all students (SV1)
|
Quota: None |
| Course Start |
Semester 2 |
Timetable |
Timetable |
| Learning and Teaching activities (Further Info) |
Total Hours:
200
(
Lecture Hours 33,
Seminar/Tutorial Hours 9,
Supervised Practical/Workshop/Studio Hours 10,
Summative Assessment Hours 2,
Revision Session Hours 2,
Programme Level Learning and Teaching Hours 4,
Directed Learning and Independent Learning Hours
140 )
|
| Assessment (Further Info) |
Written Exam
70 %,
Coursework
30 %,
Practical Exam
0 %
|
| Feedback |
Students will receive summative feedback on their submitted coursework during semester. There will be an opportunity to receive formative feedback in advance of the submission of coursework. |
| Exam Information |
| Exam Diet |
Paper Name |
Minutes |
|
| Main Exam Diet S2 (April/May) | Informatics 1 - Foundations of Computing (INFR08035) | 120 | | | Resit Exam Diet (August) | Informatics 1 - Foundations of Computing (INFR08035) | 120 | |
Learning Outcomes
On completion of this course, the student will be able to:
- describe models of computation (such as Finite State Machines, Von Neumann models, lambda calculus), reason about these models and their limitations, and build small systems in these models
- apply and reason with logic, including in the context of software and hardware
- explain and demonstrate a range of different programming concepts and features (to include imperative programming and functional programming), and reason with those concepts
- critically evaluate similarities and differences of computational models, logic, systems, and programs
|
Reading List
There will be no set course textbook.
One relevant reference text is ``Introduction to Computation: Haskell, Logic and Automata (Undergraduate Topics in Computer Science)", by D. Sannella, M. Fourman, H. Peng and P. Wadler; Springer-Verlag, 2022
For background reading, one interesting text is ``Models of Computation - Exploring the Power of Computing", by John E. Savage, AddisonWesley 1997. |
Additional Information
| Graduate Attributes and Skills |
Not entered |
| Keywords | Models of computation,Logic,Imperative Programming,Functional Programming |
Contacts
| Course organiser | Dr Richard Mayr
Tel: (0131 6)50 5130
Email: rmayr@staffmail.ed.ac.uk |
Course secretary | Ms Kendal Reid
Tel: (0131 6)50 5194
Email: kr@inf.ed.ac.uk |
|
|