Бакалавриат
2024/2025





Алгоритмы и структуры данных в прикладных задачах
Статус:
Курс обязательный (Управление цифровым продуктом)
Направление:
38.03.05. Бизнес-информатика
Кто читает:
Департамент бизнес-информатики
Где читается:
Высшая школа бизнеса
Когда читается:
2-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
английский
Кредиты:
4
Course Syllabus
Abstract
The course is dedicated to the basics of design and analysis of algorithms. It also involves learning advanced algorithms, data structures and basics of the automata theory. The lectures and practical classes are closely inter-related. The lectures are primarily intended to introduce new topics, whereas the practical classes are intended for solving specific problems by coding programs in C++ or Python. Successful completion of “Introduction to Programming” course is the sole prerequisite for being enrolled in this course.
Learning Objectives
- Изучить базовые возможности языка программирования Python и разобраться с основными понятиями алгоритмической сложности для оценки эффективности алгоритмов.
- Освоить принципы выбора подходящих структур данных для реализации различных алгоритмов, обеспечивая оптимальную производительность и эффективность
- Изучить алгоритмы бинарного поиска и сортировки, а также научиться применять их на практике для решения задач различных уровней сложности
- Развить навыки оптимального использования системных и программных ресурсов при разработке на Python, включая управление памятью и обработку данных.
- Понять и реализовать основные алгоритмы обработки массивов данных, включая вычисление префиксных сумм для повышения эффективности решения комплексных задач.
- Ознакомиться с методом двух указателей и жадными алгоритмами, научиться применять их для оптимального решения задач оптимизации и поиска.
- Изучить основные методики и техники оптимизации алгоритмов для повышения их производительности и снижения временных и пространственных затрат.
- Понять основные структуры данных деревьев и графов, освоить методы динамического программирования для решения сложных задач, связанных с этими структурами.
Expected Learning Outcomes
- Be able to set up python environment under any operating system;
- Understand key concepts of programming (procedural, functional paradigms, OOP, data types, algorithm complexity, TDD, etc.) and apply them;
- Be able to write scripts in python for the variety of different tasks;
- Be able to cover and support code with unit tests, linters, and formatters;
- Be able to find and read documentation on python libraries not covered by the course.
- Be able to set up python environment
- Understand key concepts of programming and apply them
- Be able to write scripts in python
- Develop and Debug Python Programs
- Evaluate and Compare Algorithmic Complexity
- Identify and Select Appropriate Data Structures
- Implement and Optimize Algorithms Using Selected Data Structures
- Implement Search and Sort Algorithms
- Analyze and Compare Algorithmic Efficiency
- Optimize Memory and Resource Usage
- Identify and Resolve Performance Bottlenecks
- Implement Array-Based Algorithms and Prefix Sum Techniques
- Analyze and Optimize Algorithm Performance
- Apply the Two Pointers Technique to Solve Complex Problems
- Design and Implement Greedy Algorithms for Optimization Tasks
- Implement Advanced Optimization Techniques
- Evaluate and Select Appropriate Optimization Strategies
- Design and Implement Tree and Graph Algorithms
- Apply Dynamic Programming Techniques to Optimize Solutions
Course Contents
- Python & Algorithmic Complexity Basics
- Data Structure Selection for Common Algorithms
- Binary Search & Sorting
- Effective Resource Management in Python
- Data Arrays Algorithms & Prefix Sum
- Two Pointers Method & Greedy Algorithms
- Common Algorithmic Optimization Approaches
- Trees, Graphs & Dynamic Programming
Assessment Elements
- HAAverage grade for all practical homework assignments provided in the course
- Seminars ActivityPlusses for activity at seminars
- Lectures ActivityPlusses for activity at lectures
- ExamThe exam is a practical work performed by students based on the results of mastering the course.
Interim Assessment
- 2024/2025 4th moduleGrade = 0.2 * (Lectures Activity) + 0.25 * (Seminars Activity) + 0.25 * (Home Assignments) + 0.3 * (Exam); Final Grade = min(Grade, 8)
Bibliography
Recommended Core Bibliography
- Algorithms and complexity, Wilf, H. S., 2002
- Álvaro Scrivano. (2019). Coding with Python. Minneapolis: Lerner Publications ™. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1947372
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., Stein, C. Introduction to Algorithms (3rd edition). – MIT Press, 2009. – 1292 pp.
- Kleinberg, J., & Tardos, E. (2014). Algorithm Design: Pearson New International Edition. Harlow, Essex: Pearson. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1418332
- Robert Sedgewick, & Kevin Wayne. (2014). Algorithms : Part I. [N.p.]: Addison-Wesley Professional. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1600534
Recommended Additional Bibliography
- Hetland, M. L. (2017). Beginning Python : From Novice to Professional (Vol. Third edition). New York: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1174463
- Introduction to the design and analysis of algorithms, Levitin, A., 2012
- Robert Sedgewick, & Kevin Wayne. (2014). Algorithms, Part II. Addison-Wesley Professional.