Declarative Programming
VISZAD00 | Computer Engineering BSc | Semester: 7 | Credit: 3 | Official course details
Objectives, learning outcomes and obtained knowledge
Introduction to the declarative - also known as non-imperative - programming paradigm, the two main trends - functional and logic programming - and to practice them by solving small to medium sized problems.
Synopsis
Week 1:
(4 hours lecture - introduction and functional programming): requirements, literature, website. Motivational example in logical and functional language. Main features of declarative programming: functions or procedures, non-updatable variables, accumulators, recursive algorithms and data structures, right recursion, higher order functions or procedures.
Functional programming: programming environments. Programming environments. Types, operations, variables, expressions. Syntax. Greedy and lazy evaluation of expressions. Lists, list view. Iteration and recursion, linear and branch recursion, right recursion, accumulators. Modules.
- Week 2:
(2 hours practice): Programming in functional language.
(2 hours lecture - functional programming): Built-in functions. Compound expressions. Lists and enneses. Pattern matching. Type specification. More about modules.
- Week 3:
(4 hours lecture - functional programming): Higher order functions, function values. Common library functions. Exception handling.
Complex data structures and their handling: lists, sets, graphs. Key-value pairs, binary trees. Linear and branching recursion again. Proof of program correctness. Lazy evaluation, lazy list.
- Week 4:
(2 hours practice): programming in functional language, preparation for midterm exam.
(2 hours lecture - logic programming): Introduction through examples. Basic syntax of the language, data structures. List handling.
- Week 5:
(2 hours practice): Programming in logic language.
(2 hours lecture - logic programming): The implementation algorithm. Reduction step, union, search space. Box model of tracing.
- Week 6:
(4 hours lecture - logic programming): Operators. Additional control structures: disjunction, conditional structure, negation. Right recursion, accumulators. Narrowing the search space. Determinism and indexing. Control procedures.
- Week 7:
(2 hours of practice): Programming in a logic language.
(2 hours lecture - logic programming): Meta-logic procedures. Solution gathering procedures. Higher order procedures.
- Week 8:
(4 hours lecture - declarative programming): Constraint-based programming methods.
- Week 9:
(2 hours of practice): Programming in functional and logical languages.
(2 hours of lecture - declarative programming): Breadth and depth searches.
- Week 10:
(2 hours of practice): Programming in functional and logical languages.
(2 hours of lecture - declarative programming): Summary and outlook.
- Week 11:
(2 hours of practice): Programming in functional and logical languages, preparation for the final exam.
Translated with www.DeepL.com/Translator (free version)
(4 hours lecture - introduction and functional programming): requirements, literature, website. Motivational example in logical and functional language. Main features of declarative programming: functions or procedures, non-updatable variables, accumulators, recursive algorithms and data structures, right recursion, higher order functions or procedures.
Functional programming: programming environments. Programming environments. Types, operations, variables, expressions. Syntax. Greedy and lazy evaluation of expressions. Lists, list view. Iteration and recursion, linear and branch recursion, right recursion, accumulators. Modules.
- Week 2:
(2 hours practice): Programming in functional language.
(2 hours lecture - functional programming): Built-in functions. Compound expressions. Lists and enneses. Pattern matching. Type specification. More about modules.
- Week 3:
(4 hours lecture - functional programming): Higher order functions, function values. Common library functions. Exception handling.
Complex data structures and their handling: lists, sets, graphs. Key-value pairs, binary trees. Linear and branching recursion again. Proof of program correctness. Lazy evaluation, lazy list.
- Week 4:
(2 hours practice): programming in functional language, preparation for midterm exam.
(2 hours lecture - logic programming): Introduction through examples. Basic syntax of the language, data structures. List handling.
- Week 5:
(2 hours practice): Programming in logic language.
(2 hours lecture - logic programming): The implementation algorithm. Reduction step, union, search space. Box model of tracing.
- Week 6:
(4 hours lecture - logic programming): Operators. Additional control structures: disjunction, conditional structure, negation. Right recursion, accumulators. Narrowing the search space. Determinism and indexing. Control procedures.
- Week 7:
(2 hours of practice): Programming in a logic language.
(2 hours lecture - logic programming): Meta-logic procedures. Solution gathering procedures. Higher order procedures.
- Week 8:
(4 hours lecture - declarative programming): Constraint-based programming methods.
- Week 9:
(2 hours of practice): Programming in functional and logical languages.
(2 hours of lecture - declarative programming): Breadth and depth searches.
- Week 10:
(2 hours of practice): Programming in functional and logical languages.
(2 hours of lecture - declarative programming): Summary and outlook.
- Week 11:
(2 hours of practice): Programming in functional and logical languages, preparation for the final exam.
Translated with www.DeepL.com/Translator (free version)
BME-MIT