Semester: 2
ECTS: 5
Lectures: 30
Practice sessions: 30
Independent work: 90
Module Code: 24-000-0157
Semester: 2
ECTS: 5
Lectures: 30
Practice sessions: 30
Independent work: 90
Module Code: 24-000-0157

Module title:


Information theory and finite automata

Lecturers and associates:


Zlatan Morić, Senior Lecturer

Module overview:


The objective of this course is to provide students with an in-depth understanding of:
• Fundamental Concepts of Information Theory: Students will learn about the core principles of information theory, including entropy, information content, and data compression techniques. This forms the basis for understanding how information is quantified, encoded, and transmitted in computer systems.
• Essentials of Finite Automata: The course will cover the basic concepts of finite automata, including deterministic and non-deterministic automata. Students will explore how these theoretical models form the foundation of computational theory and are applied in various computer science areas.
• Practical Applications and Analysis: The module aims to connect theoretical concepts with real-world applications. This includes understanding how information theory and finite automata are used in modern computing tasks like data compression, error detection and correction, and automating tasks in software development.
• Analytical Skills in Computing: By focusing on low-level details, the module encourages students to develop a detailed analytical approach to understanding and designing complex computer systems. This includes understanding the theoretical underpinnings that drive the efficiency and functionality of modern computing architectures.
• Design and Implementation: Students will engage in practical tasks and projects that involve designing and implementing systems based on the principles of information theory and finite automata. This hands-on approach ensures that they not only understand the theory but also can apply it in practical computing scenarios.

This course is crucial for students as it lays the foundation for understanding complex computer systems and algorithms. It equips them with the necessary skills to analyze, design, and implement efficient and effective computing solutions, a critical aspect for anyone pursuing a career in computer science or related fields.


Literature:


1. Ben-Naim, A. (2017) Information Theory: Part I: An Introduction to the Fundamental Concepts. World Scientific.
2. Kandar , S. (2016) Introduction to Automata Theory, Formal Languages and Computation. Pearson Education India