Course: Paradigms of Programming

» List of faculties » FAV » KIV
Course title Paradigms of Programming
Course code KIV/PPG
Organizational form of instruction Lecture + Tutorial
Level of course Bachelor
Year of study not specified
Semester Summer
Number of ECTS credits 6
Language of instruction Czech
Status of course Compulsory, Compulsory-optional, Optional
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Cmorej Vlastimil, Ing. Ph.D.
Course content
Lectures outline (not aligned to the weekly schedules): 1. A brief look into the history of computers and programming languages. 2. Regular expressions 3. Overview of basic programming paradigms 4. Object-oriented programming 5. Lambda calculus 6. Introduction to Haskell 7. Introduction to the Prolog language 8. Comparison of selected algorithms in different paradigms

Learning activities and teaching methods
  • Individual project (40) - 40 hours per semester
  • Preparation for formative assessments (2-20) - 15 hours per semester
  • Contact hours - 52 hours per semester
  • Preparation for an examination (30-60) - 50 hours per semester
prerequisite
Knowledge
use theoretical knowledge from data structures
use theoretical knowledge of discrete mathematics
understand the meaning of parameters of procedures and functions
to describe the process of program execution in a computer, especially from the point of view of memory allocation in stack and on heap
determine the computational complexity of operations
Skills
actively program in a higher level programming language
use some of the common IDE at the basic user level
use MS Windows and Linux operating systems at the basic user level
analyze and compare algorithms in terms of class of computational and memory complexity
implement programs using the principles of imperative programming
Competences
N/A
N/A
N/A
N/A
N/A
learning outcomes
Knowledge
characterize the principles and advantages or disadvantages of programming in different paradigms
knowledge of the principles creation of object design of the application
knowledge of encapsulation, inheritance and polymorphism principles
basics of component theory and modular design
understand the issue of lambda calculus
knowledge of the principles of functional and logical programming
Skills
interpret and create regular expressions
design and implement an application using OOP principles
implement recursive programs in Haskell language
implement recursive programs in Prolog language
Competences
N/A
teaching methods
Knowledge
Lecture
Lecture with visual aids
Task-based study method
Self-study of literature
Skills
Practicum
Skills demonstration
Individual study
Competences
Interactive lecture
assessment methods
Knowledge
Combined exam
Seminar work
Continuous assessment
Skills
Seminar work
Skills demonstration during practicum
Individual presentation at a seminar
Competences
Combined exam
Seminar work
Recommended literature
  • Bramer, M. A. Logic programming with Prolog. Second edition. 2013. ISBN 978-1-4471-5486-0.
  • Martin, Robert C.; Feathers, Michael C.; Ottinger, Timothy R.; Langr, Jeff; Schuchert, Brett L.; Grenning, James W.; Wampler, Dean. Clean code : a handbook of agile software craftsmanship. 2009. ISBN 978-0-13-235088-4.
  • Pecinovský, Rudolf. OOP ? Naučte se myslet a programovat objektově. Brno, 2010. ISBN 978-80-251-2126-9.
  • Scott, Michael Lee. Programming language pragmatics. Fourth edition. 2016. ISBN 978-0-12-410409-9.
  • Sebesta, Robert W. Concepts of programming languages. Eleventh edition, global edition. 2016. ISBN 978-1-292-10055-5.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester