Bachelor
2024/2025





Advanced Programming and Data Analysis
Type:
Compulsory course (Digital Product Management)
Area of studies:
Business Informatics
Delivered by:
Department of Business Informatics
Where:
Graduate School of Business
When:
3 year, 3 module
Mode of studies:
offline
Open to:
students of one campus
Language:
English
ECTS credits:
4
Course Syllabus
Abstract
Курс нацелен на разбор задач по алгоритмам и структурам данных, а также решению кейсов по анализу данных, относящихся к задачам средней и повышенной сложности. Решение подобных задач позволит углубить знания студентов по программированию и машинному обучению.
Learning Objectives
- Изучить базовые возможности языка программирования Python и разобраться с основными понятиями алгоритмической сложности для оценки эффективности алгоритмов.
- Освоить принципы выбора подходящих структур данных для реализации различных алгоритмов, обеспечивая оптимальную производительность и эффективность
- Изучить алгоритмы бинарного поиска и сортировки, а также научиться применять их на практике для решения задач различных уровней сложности
- Развить навыки оптимального использования системных и программных ресурсов при разработке на Python, включая управление памятью и обработку данных.
- Понять и реализовать основные алгоритмы обработки массивов данных, включая вычисление префиксных сумм для повышения эффективности решения комплексных задач.
- Ознакомиться с методом двух указателей и жадными алгоритмами, научиться применять их для оптимального решения задач оптимизации и поиска.
- Изучить основные методики и техники оптимизации алгоритмов для повышения их производительности и снижения временных и пространственных затрат.
- Понять основные структуры данных деревьев и графов, освоить методы динамического программирования для решения сложных задач, связанных с этими структурами.
- Изучить возможности языка программирования Python для решения задач анализа данных, освоить ключевые библиотеки и инструменты для обработки и очистки данных, а также развить практические навыки применения Python в аналитических проектах.
- Освоить основные методы и техники визуализации данных, научиться эффективно представлять информацию с помощью графических инструментов, а также применять современные технологии и библиотеки для создания информативных и наглядных визуальных представлений данных.
- Изучить фундаментальные математические концепции и методы, необходимые для анализа данных и машинного обучения
- Получить глубокие знания о задачах Supervised Machine Learning, ознакомиться с разнообразными алгоритмами и моделями, освоить методы оценки и улучшения их производительности, а также развить практические навыки реализации и применения моделей Supervised Machine Learning в реальных задачах.
Expected Learning Outcomes
- 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
- Manipulate and Analyze Data Using Python Libraries
- Implement Data Preprocessing and Integration Techniques
- Create Diverse Data Visualizations Using Python Libraries
- Apply Principles of Effective Data Storytelling and Design
- Apply Mathematical Concepts to Data Analysis and Machine Learning
- Optimize Machine Learning Algorithms Using Mathematical Techniques
- Design and Implement Supervised Learning Models
- Evaluate and Optimize Model Performance
Course Contents
- Python & Algorithmic Complexity Basics
- Data Structure Selection for Common Algorithms
- Effective Resource Management in Python
- Binary Search & Sorting
- Data Arrays Algorithms & Prefix Sum
- Two Pointers Method & Greedy Algorithms
- Common Algorithmic Optimization Approaches
- Trees, Graphs & Dynamic Programming
- Python for Data Analysis Tasks
- Visualisations in Data Analysis
- Mathematics for Data Analysis and Machine Learning
- Tasks of Supervised Machine Learning
Assessment Elements
- HAAverage grade for all practical homework assignments provided in the course
- Activity
- ExamThe exam is a practical work performed by students based on the results of mastering the course.
- Control Work
Interim Assessment
- 2024/2025 4th moduleGrade = 0.3 * Activity + 0.3 * Control Work + 0.1 * 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
- Christopher M. Bishop. (n.d.). Australian National University Pattern Recognition and Machine Learning. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.EBA0C705
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., Stein, C. Introduction to Algorithms (3rd edition). – MIT Press, 2009. – 1292 pp.
- Grus, J. (2019). Data Science From Scratch : First Principles with Python (Vol. Second edition). Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=2102311
- 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
- Knaflic C.N. Storytelling with data: a data visualization guide for business professionals. New Jersey: Wiley, 2015.
- McKinney, W. (2018). Python for Data Analysis : Data Wrangling with Pandas, NumPy, and IPython (Vol. Second edition). Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1605925
- 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
- Rogers, S., & Girolami, M. (2016). A First Course in Machine Learning (Vol. 2nd ed). Milton: Chapman and Hall/CRC. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1399490
Recommended Additional Bibliography
- A Tutorial on Machine Learning and Data Science Tools with Python. (2017). Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.E5F82B62
- Aurélien Géron. (2019). Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow : Concepts, Tools, and Techniques to Build Intelligent Systems: Vol. Second edition. O’Reilly Media.
- 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
- McKinney, W. (2012). Python for Data Analysis : Data Wrangling with Pandas, NumPy, and IPython. Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=495822
- Robert Sedgewick, & Kevin Wayne. (2014). Algorithms, Part II. Addison-Wesley Professional.
- Vanderplas, J.T. (2016). Python data science handbook: Essential tools for working with data. Sebastopol, CA: O’Reilly Media, Inc. https://proxylibrary.hse.ru:2119/login.aspx?direct=true&db=nlebk&AN=1425081.