PB006 Principles of Programming Languages and OOP

Faculty of Informatics
Autumn 2024
Extent and Intensity
2/0/0. 2 credit(s) (plus extra credits for completion). Type of Completion: zk (examination).
In-person direct teaching
Teacher(s)
doc. Mgr. Jan Obdržálek, PhD. (lecturer)
Jindřich Halabala (assistant)
Mgr. Anna Řechtáčková (assistant)
Guaranteed by
doc. Mgr. Jan Obdržálek, PhD.
Department of Computer Science – Faculty of Informatics
Contact Person: doc. Mgr. Jan Obdržálek, PhD.
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Wed 25. 9. to Wed 18. 12. Wed 10:00–11:50 D1
Prerequisites
( IB111 Foundations of Programming || NOW( IB111 Foundations of Programming )) && ( PB071 Principles of low-level prog. || PB111 Principles of low-level prog. )
The course is, due to its synthetic nature, intended for students with some knowledge of a modern imperative programming language (Python), some low-level language (C) and a functional programming language (Haskell).
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
Course objectives
The goal of this course is to introduce students to the various concepts present in modern programming languages. The course also serves as an introduction to object-oriented programming.
Learning outcomes
By the end of the course, the student will:
know basic concepts present in modern programming languages;
be able to quickly obtain an in-depth understanding a of new programming language and start using it;
understand the principles of object-oriented programming;
able to assess suitability of a given programming language for a particular problem domain;
to analyze both strong and weak aspects of a given programming language,
Syllabus
  • Names, bindings, scopes. Block structure. Representing object in memory.
  • Primitive and composite types. Typechecking. Lists. Pointers and references. Type derivation.
  • Control flow: expressions, statements, control structures.
  • Subprograms: local definitions, parameter passing, overloaded and generic functions. Coroutines.
  • Abstract data types: basic concepts, encapsulation, case studies. Parameterized ADT, generics. Namespaces.
  • Object oriented programming: principles, inheritance, dynamic binding.
  • Exceptions: basic concepts, case studies, exceptions in functional programming languages.
  • Support for name handling and encapsulation in large programs.
Literature
    recommended literature
  • SEBESTA, Robert W. Concepts of Programming Languages. 10th Edition. Addison-Wesley, 2012, 816 pp. ISBN 978-0-13-139531-2. info
  • Programming language pragmatics. Edited by Michael Lee Scott. 2nd ed. Oxford: Elsevier Science [distributor], 2006, xxxi, 875. ISBN 9780126339512. info
Teaching methods
The course is organized as a series of lectures.
Assessment methods
6 shorter homeworks during the semestr. Final exam at the end of semester. The exam consists of two parts: a theoretical (written) part and a practical part (programming on a computer).
Language of instruction
Czech
Further Comments
Study Materials
The course is taught annually.
Listed among pre-requisites of other courses
Teacher's information
https://is.muni.cz/el/1433/podzim2020/PB006/index.qwarp
The course is also listed under the following terms Autumn 2002, Autumn 2003, Autumn 2004, Autumn 2005, Autumn 2006, Autumn 2007, Autumn 2008, Autumn 2009, Autumn 2010, Autumn 2011, Autumn 2012, Autumn 2013, Autumn 2014, Autumn 2020, Autumn 2021, Autumn 2022, Autumn 2023.
  • Enrolment Statistics (recent)
  • Permalink: https://is.muni.cz/course/fi/autumn2024/PB006