    Course module   SOWBKI256  Category   B2 (Second year bachelor)  Language of instruction   English  Offered by   Radboud University; Faculty of Social Sciences; Artificial Intelligence;  Lecturer(s)     Academic year   2020   Period   PER1  (01/09/2020 to 01/11/2020) 
 Starting block   PER1  
 Course mode   fulltime  
 Remarks     Registration using OSIRIS   Yes  Course open to students from other faculties   Yes  Preregistration   No  Waiting list   No  Placement procedure    
     
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 higherorder functions, polymorphism, overloading, recursive data structures
 Reason about functional programs.


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 (lambdacalculus, termrewriting) 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.

 
Basic programming experience at the level of Programming for AI1 and 2. Experience at Object Oriented Programming is advised.


Written final exam (100% of grade). Possible bonus (10%) for assignments during the course.


During the lectures the theory behind (functional) concepts is taught. During the practical sessions these concepts are put into practice using the programming language Scala.




   Instructional modesLectureAttendance Mandatory   Yes 
 Practical computer trainingAttendance Mandatory   Yes 

 TestsExamTest weight   1 
Test type   Exam 
Opportunities   Block PER1, Block PER2 


  
 
 