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  **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 finitestate 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 smallscale 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 finitestate 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; case analysis, recursion and higherorder functions. Finitestate machines as a basic model of computation: deterministic and nondeterministic 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)
Prerequisites 

Corequisites  
Prohibited Combinations  
Other requirements  SCE Hgrade Mathematics or equivalent is desirable. 
Information for Visiting Students
Prerequisites  SCE Hgrade Mathematics or equivalent is desirable. 
High Demand Course? 
Yes 
Course Delivery Information

Academic year 2018/19, Available to all students (SV1)

Quota: None 
Course Start 
Semester 1 
Timetable 
Timetable 
Learning and Teaching activities (Further Info) 
Total Hours:
200
(
Lecture Hours 40,
Seminar/Tutorial Hours 20,
Supervised Practical/Workshop/Studio Hours 20,
Feedback/Feedforward Hours 4,
Summative Assessment Hours 5,
Programme Level Learning and Teaching Hours 4,
Directed Learning and Independent Learning Hours
107 )

Assessment (Further Info) 
Written Exam
95 %,
Coursework
5 %,
Practical Exam
0 %

Additional Information (Assessment) 
Examinations (Practical and Written): 95% (exact split to be confirmed)
Coursework: 5%
A practical final exam will assess programming in Haskell. A midsemester written class exam will assess progress towards learning to program in Haskell. A written final exam will assess understanding of propositional logic and finite state machines. Students solutions to weekly unassessed formative exercises will be discussed in tutorial groups.
The material on advanced functional programming in Haskell and on introductory imperative programming will not be assessed. The latter material will be covered by unassessed formative exercises.
The marks from the practical and written final exams will be combined to give a single exam mark. Students are required to achieve a passing mark for the course as a whole; there is no requirement that they separately pass one or both of the exams. 
Feedback 
Formative assessment will be used to provide feedback and guidance to students and will take the form of quizzes, exercise sheets, practical exercises and coursework assignments, covering areas from across the syllabus. A summatively assessed class test will be held mid semester and will test students basic programming competence. 
Exam Information 
Exam Diet 
Paper Name 
Hours & Minutes 

Main Exam Diet S1 (December)  Informatics 1  Introduction to Computation  2:00   Resit Exam Diet (August)  Informatics 1  Introduction to Computation  2:00  
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 realworld 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 higherorder 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 Don Sannella
Tel: (0131 6)50 5184
Email: D.T.Sannella@ed.ac.uk 
Course secretary  Mr Rob Armitage
Tel: (0131 6)50 5194
Email: Rob.Armitage@ed.ac.uk 

