Undergraduate Course: Functional Programming and Specification (Level 10) (INFR10043)
Course Outline
School  School of Informatics 
College  College of Science and Engineering 
Course type  Standard 
Availability  Not available to visiting students 
Credit level (Normal year taken)  SCQF Level 10 (Year 4 Undergraduate) 
Credits  10 
Home subject area  Informatics 
Other subject area  None 
Course website 
http://www.inf.ed.ac.uk/teaching/courses/fps 
Taught in Gaelic?  No 
Course description  The course has two aims. The first is to provide an introduction to programming in Standard ML including the use of the facilities it offers for structuring programs into modules. Part of this is a review of material from the Functional Programming component of Inf1A, using Standard ML rather than Haskell, but more advanced material is also included. The second aim is to provide an introduction to formal methods for specification and development of programs, using the Extended ML specification framework as a vehicle. Simple proofs of properties of functions are interwoven with the first part of the course to link it with the second part. 
Course Delivery Information
Not being delivered 
Summary of Intended Learning Outcomes
1  Students will be able to design a representation of an informallydescribed data structure in ML as a datatype, and translate an informal description of an algorithm into an ML function, making appropriate use of higherorder functions and other characteristic features of the functional programming paradigm. [Written Examination]
2  Students will be able to make effective use of the module facilities in ML to organize programs of about 1000 lines into appropriate units. [Coursework]
3  Students will be able to use the notation of EML to formulate properties of firstorder total ML functions, and to prove such properties using induction and methods of equational reasoning. [Written Examination]
4  Given some nonfunctional requirements for a system, students will be able to choose appropriate implementations to meet those characteristics based on their knowledge of implementation techniques for functional programming languages. [Coursework]

Assessment Information
Written Examination 75
Assessed Assignments 25
Oral Presentations 0
Assessed Coursework
Three written assignments, weighted equally: one on ML programming; one on the ML module system; one on specification and proof. 
Special Arrangements
None 
Additional Information
Academic description 
Not entered 
Syllabus 
Functional programming in Standard ML: The functional paradigm. Polymorphic types, static typing and type inference. Recursion and induction. List processing. Higherorder functions. Eager and lazy evaluation. Imperative features. Signatures, structures, functors. Module hierarchy, sharing and data abstraction.
Specification and formal program development in Extended ML: Specification of ML functions and modules. Proving that a program is correct with respect to a specification of its intended behaviour. Refinement of specifications. Formal development of ML programs from EML specifications by modular decomposition and stepwise refinement.
Relevant QAA Computing Curriculum Sections: Comparative Programming Languages, Programming Fundamentals, Software Engineering 
Transferable skills 
Not entered 
Reading list 
* ***L. Paulson. ML for the Working Programmer, second edition. Cambridge University Press, 1996.
* **R. Harper. Programming in Standard ML. Carnegie Mellon University. Soon to be a book. Available online.
* ***D. Sannella. Formal program development in Extended ML for the working programmer.
* **S. Gilmore. Programming in Standard ML'97: A tutorial introduction. Edinburgh report ECSLFCS97364, 1997
* *J. Ullman. Elements of ML Programming, second edition. Prentice Hall, 1997. 
Study Abroad 
Not entered 
Study Pattern 
Lectures 20
Tutorials 8
Timetabled Laboratories 0
Nontimetabled assessed assignments 25
Private Study/Other 47
Total 100 
Keywords  Not entered 
Contacts
Course organiser  Dr Amos Storkey
Tel: (0131 6)51 1208
Email: A.Storkey@ed.ac.uk 
Course secretary  Miss Tamise Totterdell
Tel: 0131 650 9970
Email: t.totterdell@ed.ac.uk 

