Programming Paradigms and Languages
Students will get to know programming concepts commom to different programming languages, which will facilitate further learning of new languages. They will consolidate their knowledge of object-oriented programming paradigm and be introduced to functional programming. They will also gain practical knowledge of programming in a variety of programming languages.
- distinguish between different programming paradigms
- choose an adequate programming paradigm in solving specific software engineering problems
- apply at least one language from imperative, object-oriented and declarative paradigm
- classify programming languages according to the paradigms they belong to
- recognize the concepts of same kind from different programming languages and paradigms
- employ adequate naming and code organization conventions
Forms of Teaching
Course lectures through 13 weeks.Exams
The knowledge will be tested with a mid-term exam and a final exam. During the semester, homeworks will be assigned.Laboratory Work
In the laboratory excercises students will work on their own programming solutions and demonstrate their correctness.Experiments
During the lectures, the work in various programming languages will be demonstrated to students in an interactive manner.Experimental Exercises
Demonstration exercises will demonstrate the use of technology to complete the laboratory exercises and to illustrate real practical use.Consultations
During the consultation hours the students will be able to supplement their knowledge on all course topics.
|Type||Threshold||Percent of Grade||Threshold||Percent of Grade|
|Laboratory Exercises||0 %||50 %||0 %||50 %|
|Homeworks||0 %||5 %||0 %||5 %|
|Mid Term Exam: Written||0 %||15 %||0 %|
|Final Exam: Written||0 %||15 %|
|Final Exam: Oral||15 %|
|Exam: Written||0 %||30 %|
|Exam: Oral||15 %|
In order to get the pass grade, students have to get at least 7.5 points on the oral exam.
Week by Week Schedule
- Abstract machines. Interpreters. Compilers. Expressiveness of programming languages.
- Names and environments. Blocks. Static and dynamic scope. Static and dynamic memory management. Scope rules implementation.
- Control structures. Structured programming. Tail recursion.
- Procedures. Higher-order functions. Exceptions.
- Data types. Static and dynamic type checking. Complex types. Type equivalence. Polymorphism. Type inference. Dangling references. Garbage collectors. Abstract data types. Information hiding. Modules.
- Demonstration lecture: writing program code.
- Exam preparation hours.
- The object-oriented programming paradigm. Dynamic method lookup. Single and multiple inheritance. Dynamic method dispatch. Polymorphism in object-oriented programming paradigm. Generics. Covariant and contravariant overloading.
- Demonstration lecture: application development in an object-oriented programming language.
- The functional paradigm. Computations without state. Evaluation strategies. Pattern matching. The basics of lambda calculus.
- Demonstration lecture: programming in a functional programming language.
- Logic paradigm. Deduction as computation. Theory of unification. Logic programming with constraints.
- Paralellism. Historical overview of programming languages and paradigms.