• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site
Bachelor 2023/2024

Algorithms and Data Structures

Type: Compulsory course
Area of studies: Business Informatics
When: 1 year, 2 module
Mode of studies: offline
Open to: students of one campus
Instructors: Maria Gordenko
Language: English
ECTS credits: 4
Contact hours: 48

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

Learning Objectives

  • Изучить базовые возможности языка программирования Python и разобраться с основными понятиями алгоритмической сложности для оценки эффективности алгоритмов.
  • Освоить принципы выбора подходящих структур данных для реализации различных алгоритмов, обеспечивая оптимальную производительность и эффективность
  • Изучить алгоритмы бинарного поиска и сортировки, а также научиться применять их на практике для решения задач различных уровней сложности
  • Развить навыки оптимального использования системных и программных ресурсов при разработке на Python, включая управление памятью и обработку данных.
  • Понять и реализовать основные алгоритмы обработки массивов данных, включая вычисление префиксных сумм для повышения эффективности решения комплексных задач.
  • Ознакомиться с методом двух указателей и жадными алгоритмами, научиться применять их для оптимального решения задач оптимизации и поиска.
  • Изучить основные методики и техники оптимизации алгоритмов для повышения их производительности и снижения временных и пространственных затрат.
  • Понять основные структуры данных деревьев и графов, освоить методы динамического программирования для решения сложных задач, связанных с этими структурами.
Expected Learning Outcomes

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

Course Contents

  • 1. Introduction to programming and the Python language
  • 2. Python script mode. Conditional execution
  • 3. Loops
  • 4. Bitwise operations. Error handling techniques
  • 5. Functions and modules. Name scopes. Recursive algorithms
  • 6. Python data model. Lists, sets, tuples.
  • 7. Introduction to algorithmic complexity. Sorting algorithms.
  • 8. Strings. Advances techniques of text processing, regular expressions
  • 9. File input-output
Assessment Elements

Assessment Elements

  • non-blocking Final exam
    The set of small programming auto-tested tasks.
  • non-blocking Homework assignments
    Home assignments for the relevant topics discussed in the class in a form of small problems in the web IDE.
Interim Assessment

Interim Assessment

  • 2023/2024 2nd module
    0.3 * Final exam + 0.7 * Homework assignments
Bibliography

Bibliography

Recommended Core Bibliography

  • Downey, A. (2015). Think Python : How to Think Like a Computer Scientist (Vol. Second edition). Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1105725
  • Eric Matthes. (2019). Python Crash Course, 2nd Edition : A Hands-On, Project-Based Introduction to Programming: Vol. 2nd edition. No Starch Press.
  • Learning Python : [covers Python 2.5], Lutz, M., 2008
  • Lutz, M. (2011). Programming Python : Powerful Object-Oriented Programming (Vol. 4th ed). Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=415412
  • Sweigart, Al. Automate the boring stuff with Python: practical programming for total beginners. – No Starch Press, 2015. – 505 pp.
  • Программируем на Python, Доусон, М., 2015

Recommended Additional Bibliography

  • Baka, B. (2017). Python Data Structures and Algorithms. Birmingham, U.K.: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1528144

Authors

  • GLADKOVA MARGARITA ANATOLEVNA
  • YAKOVLEVA NATALIYA VADIMOVNA
  • GORDENKO MARIIA KONSTANTINOVNA