Explore UCD

UCD Home >

COMP20330

Academic Year 2024/2025

Functional Programming II (COMP20330)

Subject:
Computer Science
College:
Science
School:
Computer Science
Level:
2 (Intermediate)
Credits:
5
Module Coordinator:
Assoc Professor Fintan Costello
Trimester:
Spring
Mode of Delivery:
Blended
Internship Module:
No
How will I be graded?
Letter grades

Curricular information is subject to change.

This module builds on the stage 1 Functional Programming module COMP10300. Where that module focused mainly on recursion and covered some basic functional ideas (functions as arguments, map and filter, introduction to closures) in the language Scheme, this second Functional Programming module will teach 'Pure' Functional programming in the language Haskell, focusing on the use of static types and type structures, pattern matching, list comprehensions, lazy evaluation, infinite data structures and related topics.

This module will also teach approaches to the "broader problem" of programming: producing problem descriptions that allow algorithmic solutions, verifying the correctness of solutions, and identifying problems at the levels of code, algorithm, and problem statement. These topics will be taught using generative 'AI' assistants such as chatGPT or Copilot: using these tools to generate code requires the programmer to to focus on these "broader problem" questions in depth.

About this Module

Learning Outcomes:

On completing this module students will be able to take a vague problem statement and produce working Haskell code that solves that problem in a way that that they can show (informally) is correct. They will be able to design and implement appropriate type structures, implement recursive problem solutions, and use list comprehensions and infinite data structures in Haskell. They will also be able to use generative assistants to produce Haskell code that solves more challenging problems in a demonstrably correct and efficient manner, and show a principled awareness of how to use these tools effectively.

Indicative Module Content:

1: What is 'pure' functional programming? Why is purity important?
2: Introduction to Haskell: recursive definitions
3: Introduction to generative programming assistants
4: Using types in Haskell
5: Producing effective problem statements for programming assistants
6: Introduction to list comprehensions in Haskell
7: Problem statements that generate different solutions
8: Defining types in Haskell
9: Problem statements that generate different type definitions
10: Types and program correctness
11: Verifying and assessing generated solutions to problems

Student Effort Hours:
Student Effort Type Hours
Specified Learning Activities

20

Autonomous Student Learning

50

Lectures

24

Computer Aided Lab

24

Total

118


Approaches to Teaching and Learning:
task-based learning; peer work; lectures; lab work; enquiry & problem-based learning

Requirements, Exclusions and Recommendations

Not applicable to this module.


Module Requisites and Incompatibles
Pre-requisite:
COMP10300 - Functional Programming


 

Assessment Strategy
Description Timing Component Scale Must Pass Component % of Final Grade In Module Component Repeat Offered

Not yet recorded.


Carry forward of passed components
Yes
 

Remediation Type Remediation Timing
In-Module Resit Prior to relevant Programme Exam Board
Please see Student Jargon Buster for more information about remediation types and timing. 

Feedback Strategy/Strategies

• Feedback individually to students, post-assessment
• Online automated feedback

How will my Feedback be Delivered?

Students will get automated online feedback on their assignments throughout the semester. For the practical exam they will get individual feedback and assessment.

Timetabling information is displayed only for guidance purposes, relates to the current Academic Year only and is subject to change.
Spring Lecture Offering 1 Week(s) - 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33 Thurs 09:00 - 09:50
Spring Practical Offering 1 Week(s) - 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33 Thurs 15:00 - 16:50
Spring Lecture Offering 1 Week(s) - 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33 Wed 09:00 - 09:50