NWI-IBC015
Functional Programming for Artificial Intelligence Students
Course infoSchedule
Course moduleNWI-IBC015
Credits (ECTS)3
CategoryBA (Bachelor)
Language of instructionEnglish
Offered byRadboud University; Faculty of Science; Informatica en Informatiekunde;
Lecturer(s)
Coordinator
dr. P.M. Achten
Other course modules lecturer
Lecturer
dr. P.M. Achten
Other course modules lecturer
Contactperson for the course
dr. P.M. Achten
Other course modules lecturer
Examiner
dr. P.M. Achten
Other course modules lecturer
Academic year2018
Period
KW1  (03/09/2018 to 04/11/2018)
Starting block
KW1
Course mode
full-time
Remarks-
Registration using OSIRISYes
Course open to students from other facultiesYes
Pre-registrationNo
Waiting listNo
Placement procedure-
Aims
After following this course, you can:
  • Solve problems in a functional way
  • Choose and develop suitable data structures for given problems
  • Use and deploy modern programming language concepts such as higher-order functions, polymorphism, overloading, recursive data structures
  • Reason about functional programs.
Content
Functional programming is a programming discipline that is based on the mathematical notion of a “function”. By using (higher order) “pure” functions, algebraic data types and a strong and flexible typing system results in a highly expressive programming language in which one can define computations in a concise and clear way. The underlying fundamental mathematical computation model is well known and investigated (lambda-calculus, term-rewriting) and enables one to reason about programs using relatively simple mathematical techniques such as substitution and induction.
Functional languages play a prominent role in computer science research when investigating new (programming language) concepts. They are also important in the domain of artificial intelligence. Because of their high level of expressive power, they are increasingly used to develop complex software systems.
Topics
expressions; functions; type systems; polymorphism; recursion; rewriting; basic types; algebraic data types; overloading; tuples; records; lists; list comprehensions; ZF-expressions; lambda abstraction; higher order functions; evaluation strategies; recursive data structures; correctness proofs.

Test information
written final exam, 'closed book'

Prerequisites
Programming experience at the level of the computing science courses Imperative Programming. In particular it is assumed that you know how to program systematically, use functions and recursion.

Contact information
Peter Achten

Required materials
Blackboard
Lecture slides

Recommended materials
Book
Online book: ftp://ftp.cs.kun.nl/pub/Clean/papers/cleanbook/CleanBookI.pdf
Articles
Clean language report: ftp://ftp.cs.kun.nl/pub/Clean/Clean20/doc/CleanRep2.0.pdf.

Instructional modes
Course

Lecture

Practical computer training
Attendance MandatoryYes

Tutorial

General
The lectures present the theoretical background of new topics. In the assignments, the student actively engages in solving problems using functional programming. In a seminar assignments are discussed. We use the state-of-the-art functional programming language Clean.It is obligatory to participate in the assignments. Feedback on part of these assignments is provided by students. This is not by means of a result value.

Tests
Exam
Test weight1
Test typeExam
OpportunitiesBlock KW1, Block KW2

Participation practical
Test weight0
Test typeParticipation
OpportunitiesBlock KW2