CS141 Functional Programming Skip to main content Skip to navigation Sign in Study Research Business Alumni News Engagement Search Warwick Search Department of Computer Science Study with us Undergraduate Degrees Postgraduate Taught Degrees Degree Apprenticeships Teaching Coronavirus(Restricted permissions) DCS Self Isolation Notification Student Support Appointment Booking Form Course Structures Student Handbook(Restricted permissions) Modules Taught Research Doctoral Studies Interdisciplinary Research Centres Impact and Innovation Applied Computing Artificial Intelligence and Human-Centred Computing Data Science, Systems and Security Theory and Foundations People News Events Computer Science Colloquium Outreach News Upcoming Events Past Events Projects Staff Resources(Restricted permissions) Report(Restricted permissions) Welfare Athena SWAN Dignity at Warwick Equality, Diversity and Inclusion News Vacancies Intranet(Restricted permissions) Teaching Modules Taught CS141 CS141 Functional Programming CS141-15 Functional Programming Academic year 21/22 Department Computer Science Level Undergraduate Level 1 Module leader Mike Joy Credit value 15 Module duration 10 weeks Assessment Multiple Study location University of Warwick main campus, Coventry Download as PDF Description Study Assessment Availability Introductory description The principal aim of this module is to introduce students to the functional programming paradigm. Module aims Students should be able to understand the differences between imperative and functional programming, apply functional programming techniques, and write programs in Haskell. Outline syllabus This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ. Differences between imperative and functional programming. Functional programming basics: expressions and reduction. Types, including parametric polymorphism. Ad-hoc polymorphism via type classes. Recursive and higher-order functions. Algebraic data types. Strict vs Lazy evaluation. Equational reasoning and inductive construction. Functors, Applicatives, Foldables, Traversables, and Monads. Type-level programming. Learning outcomes By the end of the module, students should be able to: Understand the differences between programming paradigms as well as their strengths and weaknesses in order to identify suitable programming languages for a particular task's needs. Apply key techniques of the functional programming paradigm to solve programming problems. Identify and exploit patterns in programs to design and implement programming abstractions. Apply formal reasoning techniques to prove properties about programs and calculate faster programs. Use different evaluation strategies to evaluate programs. Indicative reading list Please see Talis Aspire link for most up to date list. View reading list on Talis Aspire Subject specific skills Understanding of Functional Programming as a programming paradigm, including intermediate knowledge of programming abstractions and formal reasoning. See syllabus for details. Transferable skills Technical skills. Critical thinking. Multitasking. Study time Type Required Lectures 30 sessions of 1 hour (20%) Practical classes 10 sessions of 1 hour (7%) Private study 110 hours (73%) Total 150 hours Private study description Background reading of recommended texts. Work on unsupervised practical assignments. Exam revision. Costs No further costs have been identified for this module. You do not need to pass all assessment components to pass the module. Students can register for this module without taking any assessment. Assessment group D3 Weighting Study time Coursework 1 15% Coursework 2 25% Coursework 2. This assignment is worth more than 3 CATS and is not, therefore, eligible for self-certification. On-campus Examination 60% CS141 exam ~Platforms - AEP Answerbook Pink (12 page) Assessment group R1 Weighting Study time Online Examination 100% CS141 resit examination ~Platforms - AEP Online examination: No Answerbook required Feedback on assessment Individual feedback on coursework via Tabula Past exam papers for CS141 Courses This module is Optional for: Year 1 of UCSA-G500 Undergraduate Computer Science Year 1 of UCSA-G503 Undergraduate Computer Science MEng Year 1 of UCSA-I1N1 Undergraduate Computer Science with Business Studies Year 1 of UCSA-G406 Undergraduate Computer Systems Engineering Year 1 of UCSA-G408 Undergraduate Computer Systems Engineering Year 2 of UCSA-G5N1 Undergraduate Computer and Management Sciences This module is Option list B for: Year 1 of UCSA-G4G1 Undergraduate Discrete Mathematics Year 1 of UCSA-G4G3 Undergraduate Discrete Mathematics Further Information Term 2 15 CATS (7.5 ECTS) Online Material Additional Information Department of Computer Science, University of Warwick, CV4 7AL E-mail: comp-sci at dcs dot warwick dot ac dot uk, Telephone: +44 (0)24 7652 3193 DCS Intranet FacebookTwitterLinkedIn Page contact: Jennifer Mills Last revised: Thu 11 Nov 2021 Powered by Sitebuilder © MMXXI Terms Privacy Cookies Accessibility Coronavirus (Covid-19): Latest updates and information Let us know you agree to cookies We use cookies to give you the best online experience. Please let us know if you agree to functional, advertising and performance cookies. You can update your cookie preferences at any time. Cookie policy Essential cookies Functional cookies Advertising cookies Performance cookies Accept all Remember my preference More information