Undergraduate Course: Informatics 1 - Introduction to Computation (INFR08025)
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 | Note: This course is only available to Informatics students and those on combined Informatics degrees with Maths and PPLS. It is currently at full capacity. If this course is a compulsory part of your degree programme and you need to be enrolled, please contact the course secretary on 0131 650 5194.
**This 20 credit course replaces the two 10 credit courses - 'Informatics 1 - Functional Programming INFR08013' and 'Informatics 1 - Computation and Logic INFR08012' from 2018/19**.
An introduction to concepts of programming, using a functional programming language, and to concepts of computation and specification using finite-state systems and propositional logic. These provide examples of the logical ideas of syntax and semantics and the computational ideas of structure and behaviour. Students learn to specify, model and solve small-scale problems succinctly and at an abstract level. |
Course description |
An introduction to concepts of programming, using the Haskell functional programming language, and to concepts of computation and specification, using finite-state machines and propositional logic. The use of sets, functions and relations to describe models of logic and computation. Programming using functions and data structures, including lists and trees, equational reasoning, case analysis, recursion, higher-order functions, algebraic and abstract data types. Finite-state machines as a basic model of computation: deterministic and non-deterministic automata; regular expressions; acceptors; structured design of finite state machines. Propositional logic: truth tables; satisfiability; deduction. Applications from different areas will be used to illustrate and motivate the material.
|
Entry Requirements (not applicable to Visiting Students)
Pre-requisites |
|
Co-requisites | |
Prohibited Combinations | |
Other requirements | SCE H-grade Mathematics or equivalent is desirable.
Note: This course is only available to Informatics students and those on combined Informatics degrees with Maths and PPLS. |
Information for Visiting Students
Pre-requisites | SCE H-grade Mathematics or equivalent is desirable. |
High Demand Course? |
Yes |
Course Delivery Information
|
Academic year 2021/22, Available to all students (SV1)
|
Quota: 485 |
Course Start |
Semester 1 |
Timetable |
Timetable |
Learning and Teaching activities (Further Info) |
Total Hours:
200
(
Lecture Hours 50,
Seminar/Tutorial Hours 20,
Supervised Practical/Workshop/Studio Hours 20,
Summative Assessment Hours 2,
Programme Level Learning and Teaching Hours 4,
Directed Learning and Independent Learning Hours
104 )
|
Assessment (Further Info) |
Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
|
Additional Information (Assessment) |
Coursework: 100%
The course will be assessed through a combination of short low-stakes quizzes (administered during most lectures, altogether worth 20% of the course mark) and weekly exercises (altogether worth 80% of the course mark).
In order to pass the course, students are required to achieve a passing mark in both the assessment for the functional programming component of the course and the assessment for the computation and logic component of the course. |
Feedback |
Each student will attend two tutorials a week, one focussed on functional programming and one on computation and logic, each with an attached coursework assignment.
Students will receive feedback from weekly tutorials in functional programming and computation and logic, and from multiple-choice quizzes attached to lectures.
|
No Exam Information |
Learning Outcomes
On completion of this course, the student will be able to:
- Use sets, functions and relations to create a simple mathematical model of a real-world situation and use the syntax and semantics of propositional logic to express simple constraints.
- Solve simple programming tasks and define appropriate data types. Choose appropriate decompositions of given problems and compose corresponding functional programs from suitable function definitions, including their types.
- Read and write programs that use basic list processing functions, list comprehensions, case analysis, recursion, and higher-order functions. Understand algorithms for searching and sorting. Document, test and debug programs.
- Formalise simple propositional reasoning using various methods, including truth tables.
- Design finite state acceptors for particular languages. Use regular expressions to search for simple patterns. Understand the relationship between finite state acceptors and regular expressions.
|
Reading List
Thinking Functionally with Haskell, Cambridge University Press, 2014. Richard Bird
The Craft of Functional Programming, 3rd edition, Simon Thompson, Haskell, Addison Wesley, 2011
Programming in Haskell, Graham Hutton
The Haskell School of Expression, Paul Hudak
Learn You a Haskell for Great Good! Miran Lipovica. No Starch
Press, 2011. |
Additional Information
Graduate Attributes and Skills |
Not entered |
Keywords | INF1A |
Contacts
Course organiser | Prof Mike Fourman
Tel: (0131 6)51 5615
Email: |
Course secretary | Miss Laura Ambrose
Tel: (0131 6)50 5194
Email: |
|
|