Checking date: 09/02/2024


Course: 2023/2024

Functional Programming
(18283)
Bachelor in Applied Mathematics and Computing (Plan: 433 - Estudio: 362)


Coordinating teacher: FERNANDEZ ARREGUI, SUSANA

Department assigned to the subject: Computer Science and Engineering Department

Type: Compulsory
ECTS Credits: 6.0 ECTS

Course:
Semester:




Requirements (Subjects that are assumed to be known)
Programming (Course: 1/ Semester: 1) Programming Techniques (Course: 1/ Semester: 2)
Objectives
To Acquire the learning outcomes and competencies specified in the "Memoria Verifica" of the title
Skills and learning outcomes
CB1. Students have demonstrated possession and understanding of knowledge in an area of study that builds on the foundation of general secondary education, and is usually at a level that, while relying on advanced textbooks, also includes some aspects that involve knowledge from the cutting edge of their field of study. CB2. Students are able to apply their knowledge to their work or vocation in a professional manner and possess the competences usually demonstrated through the development and defence of arguments and problem solving within their field of study. CB3. Students have the ability to gather and interpret relevant data (usually within their field of study) in order to make judgements which include reflection on relevant social, scientific or ethical issues. CB4. Students should be able to communicate information, ideas, problems and solutions to both specialist and non-specialist audiences. CB5. Students will have developed the learning skills necessary to undertake further study with a high degree of autonomy. CG1. Students are able to demonstrate knowledge and understanding of concepts in mathematics, statistics and computation and to apply them to solve problems in science and engineering with an ability for analysis and synthesis. CG3. Students can solve computationally with the help of the most advanced computing tools mathematical models coming from applications in science, engineering, economy and other social sciences. CG4. Students are able to show that they can analyze and interpret, with help of computer science, the solutions obtained from problems associated to real world mathematical models, discriminating the most relevant behaviours for each application. CG6. Students can search and use bibliographic resources, in physical or digital support, as they are needed to state and solve mathematically and computationally applied problems arising in new or unknown environments or with insufficient information. CE11. Students have shown that they know the concepts of imperative, generic, object oriented and functional programming and distinguish interpreted, virtual machine based and native programming languages as well as the impact that they have on performance of algorithms and applications. CE21. Students have shown that they understand the influence and usefulness of the mathematical foundations used in functional programming languages and the impact of the practical applications of those languages. RA1. Students must have acquired advanced cutting-edge knowledge and demonstrated indepth understanding of the theoretical and practical aspects of working methodology in the area of applied mathematics and computing. RA3. Students must have the capacity to gather and interpret data and information on which they base their conclusions, including where relevant and necessary, reflections on matters of a social, scientific, and ethical nature in their field of study. RA4. Students must be able to perform in complex situations that require developing novel solutions in the academic as well as in the professional realm, within their field of study. RA5. Students must know how to communication with all types of audiences (specialized or not) their knowledge, methodology, ideas, problems and solutions in the area of their field of study in a clear and precise way. RA6. Students must be capable of identifying their own education and training needs in their field of study and the work or professional environment and organize their own learning with a high degree of autonomy in all types of contexts (structured or not).
Description of contents: programme
1.- Functional programming. 2.- Functions and expressions reductions. 3.- Functional programming and type system. 4.- Type classes. 5.- Higher order functions. 6.- Monadic programming. 7.- Curry-Howard isomorphism
Learning activities and methodology
AF1.THEORETICAL-PRACTICAL CLASSES. Knowledge and concepts students must acquire. Student receive course notes and will have basic reference texts to facilitatefollowing the classes and carrying out follow up work.Students partake in exercises to resolve practical problems and participatein workshops and an evaluation tests, all geared towards acquiring the necessary capabilities.Subjects with 6 ECTS are44 hours as a general rule/ 100% classroom instruction AF2.TUTORING SESSIONS. Individualized attendance (individual tutoring) or in-group (group tutoring) for students with a teacher.Subjects with 6 credits have 4 hours of tutoring/ 100% on- site attendance. AF3.STUDENT INDIVIDUAL WORK OR GROUP WORK.Subjects with 6 credits have 98 hours/0% on-site. AF8.WORKSHOPS AND LABORATORY SESSIONS. Subjects with 3 credits have 4 hours with 100% on-site instruction. Subjects with 6 credits have 8 hours/100% on-site instruction. MD1.THEORY CLASS. Classroom presentations by the teacher with IT and audiovisual support in which the subject`s main concepts are developed, while providing material and bibliography to complement student learning. MD2.PRACTICAL CLASS. Resolution of practical cases and problem, posed by the teacher, and carried out individually or in a group. MD3.TUTORING SESSIONS. Individualized attendance (individual tutoring sessions) or in-group (group tutoring sessions) for students with teacher as tutor. Subjects with 6 credits have 4 hours of tutoring/100% on-site. MD6.LABORATORY PRACTICAL SESSIONS. Applied/experimental learning/teaching in workshops and laboratories under the tutor's supervision.
Assessment System
  • % end-of-term-examination 40
  • % of continuous assessment (assigments, laboratory, practicals...) 60

Calendar of Continuous assessment


Basic Bibliography
  • Graham Hutton. Programming in Haskell (2nd edition). Cambridge University Press. 2016
  • Richar Bird. Introduction to Functional Programming using Haskell, Second edition. Prentice-Hall. 1998
  • Richard Bird and Philip Wadler. Introduction to Functional Programming. Prentice-Hall . 1988
Additional Bibliography
  • Bartosz Milewski. Category Theory for Programmers. Edited by Igal Tabachnik.
  • Miran Lipovaca. Learn You a Haskell for Great Good!: A Beginner's Guide . No Starch Press. 2011

The course syllabus may change due academic events or other reasons.