Programming in Haskell
Students will learn the basic concepts of functional programming in Haskell, know and understand the basics of syntax and semantics of Haskell, they will be able to recognize and apply functional idioms and functional design patterns, use Haskell to solve simple practical problems, find and use available programming libraries to solve complex problems, compare alternative Haskell programs to determine which are better according to selected criteria, and they will learn the basics of software development in Haskell.
- define the basic concepts of functional programming in Haskell
- Explain the syntax and semantics of a Haskell program
- Use Haskell to solve simple practical problems
- Apply functional idioms and functional design patterns
- Use available programming libraries to solve complex problems
- Compare alternative Haskell programs to determine which are better according to selected criteria
- Design Haskell programs
Forms of Teaching
Three hours lecture per week for 15 weeks.Laboratory Work
Each two-hour lecture is intertwined with one-hour practical session.Programming Exercises
Students will receive homework programming assignments, which they must demonstrate to the instructor or lab assistent.
|Type||Threshold||Percent of Grade||Comment:||Percent of Grade|
|Laboratory Exercises||50 %||70 %||0 %||0 %|
|Seminar/Project||50 %||30 %||0 %||0 %|
|Mid Term Exam: Written||50 %||0 %||0 %|
The midterm does not contribute to the total score, but students need to solve at least 50% of the midterm correctly to be able to proceed to the second half of the course.
Week by Week Schedule
- Introduction to functional programming. GHC compiler and other on-line resources.
- Basic language constructs. Tuples and lists.
- Types and type classes.
- Syntax of functions.
- Recursive functions. Corecursive functions.
- Higher-order functions 1.
- Higher-order functions 2.
- Custom data types 1.
- Custom data types 2. Modules.
- Custom data types 3. Standard library.
- Input-output operations 1.
- Input-output operations 2. Random number generator.
- Monads and monadic programming 1.
- Monads and monadic programming 2.
- Strictness. Code documentation. Packages.