Programming languages and paradigms 1000-216bJPP
1.Models of computation and programming paradigms.
2. Functional programming.
- fundamentals of functional paradigm, lambda calculus
- Haskell programming language
- functions, types, type classes
- polimorphic and higher-order functions
- functors
3. Imperative programming.
- I/O and other effects
- applicative functors
- monads
- monad transformers
4. Types and typechecking
5. Semantics of programming languages, interpreters and compilers.
6. Logic Programming.
- predicate logic: theories and models
- Horn clauses and resolution
- Prolog programming language
7. Object-oriented programming.
8. Concurrency-oriented programming and Erlang
Type of course
Requirements
Course coordinators
Learning outcomes
Knowledge
1. Students have systematic general knowledge of programming languages and paradigms (K_W02)
2. Students know methods of defining programming language syntax (K_W02)
3. Students have basic knowledge of problems and meythods of syntax analysis (K_W02)
4. Students have general knowledge about programming languages and paradigms (imperative, object-oriented, logical, fundaments of translation, declarations and types, garbage collection, abstraction mechanisms) (K_W09)
Skills
1. Students can write, debug and test programs in a functional language (K_U05)
2. Students can write, debug and test programs in a logic programming language (K_U05)
3. Students can write, debug and test programs in a object-oriented language (K_U05)
4. Students can solve problems using a range of programming paradigms and assess the usefulness of each paradigm and related programming environments for a particular problem (K_U20)
5. Students can create an interpreter for a simple programming language (K_U32)
Competence
1. Students know the limits of their knowledge and understand the need of further education (K_K01).
2. Students are able to manage their time, undertake responsibilities and fulfill time constraints (K_K05).
Assessment criteria
Final grade based upon credits earned from final exam and lab programs.
Passing labs requires submitting all programs on time and get at least 60% of credits.
Passing labs is required to sit the first exam term.
Passing labs is not required for the reexam, however, the lab credits are still counted towards the final grade.
Bibliography
1. R. Sebesta, Concepts of Programming Languages, Addison Wesley, 2005
2. Adele Goldberg, David Robson. Smalltalk-80 : the language and its implementation, Addison-Wesley, 1983.
3. R. Bird, Introduction to Functional Programming using Haskell, Prentice Hall, 1988
4. Benjamin C. Pierce, Types and Programming Languages,The MIT Press 2002
5. J. Reynolds, Theories of Programming Languages, Cambridge University Press, 1998
6. U. Nilsson, J. Małuszyński, Logic, Programming and Prolog, John Wiley & Sons, 1995
Additional information
Information on level of this course, year of study and semester when the course unit is delivered, types and amount of class hours - can be found in course structure diagrams of apropriate study programmes. This course is related to the following study programmes:
Additional information (registration calendar, class conductors, localization and schedules of classes), might be available in the USOSweb system: