• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2026/2027

Основы промышленной разработки

Статус: Курс обязательный (Прикладной анализ данных)
Когда читается: 1-й курс, 4 модуль
Охват аудитории: для своего кампуса
Язык: английский
Кредиты: 3
Контактные часы: 60

Course Syllabus

Abstract

The course teaches students to turn “study code” into a maintainable software product. Working in teams of 3–4 on one end-to-end project — Data Quality Reporter, an application that validates CSV/JSON data against configurable rules and generates a human-readable report — students pass through the full industrial development cycle: project and environment setup, team Git workflow, clean code and refactoring, modular architecture, SOLID and design patterns, unit testing, SQL storage, a REST API, CI/CD with Docker, logging and benchmarking, and a final release with documentation and a public defense. Every lecture is immediately applied at a seminar to the team project (live coding, pair work, mutual code review), so by the end of the course each team ships a working, tested, documented and reproducible product. The main language of the course is Python; C++ is used in selected examples (build systems, testing, static analysis) as an optional track. Prerequisites: basic Python and C++ (syntax, OOP, simple data structures).
Learning Objectives

Learning Objectives

  • The course develops the engineering practices that distinguish industrial code from homework solutions: students learn to design, build, test, document and release a small production-grade software product in a team, using the standard modern toolchain (Linux, Git, pytest, SQL, FastAPI, Docker, CI/CD).
Expected Learning Outcomes

Expected Learning Outcomes

  • Be able to organize a software project: repository structure, README, dependency management (venv, pyproject.toml), reproducible run instructions.
  • Be able to work in a team Git workflow: feature branches, pull requests, code review, merge-conflict resolution, atomic commits.
  • Be able to write maintainable code: clear naming, small functions, separation of concerns; find and fix basic code smells by refactoring.
  • Know basic architectural principles (layered architecture, separating core logic from I/O and interfaces) and apply SOLID pragmatically, without overengineering.
  • Be able to use basic design patterns (Strategy, Factory, Adapter, Repository) where they solve a real design problem, and recognize common anti-patterns.
  • Be able to write unit tests with pytest: behavior-oriented tests, edge cases, fixtures, mocks, parametrization; interpret coverage metrics.
  • Know SQL basics and be able to add a relational storage layer (SQLite/PostgreSQL) to an application.
  • Be able to design and implement a simple REST API (HTTP basics, FastAPI, Pydantic validation) and test it.
  • Be able to set up automated quality gates: linters and formatters, pre-commit hooks, a CI pipeline (lint → test → build) and Docker-based reproducible environments.
  • Be able to prepare a project for handover and release: logging and error handling, documentation, known limitations, changelog, presentation and defense of engineering decisions.
Course Contents

Course Contents

  • From study script to software product. Developer working environment
  • Git and team development
  • Clean code and style automation
  • Modularity and application architecture. Dependency management
  • SOLID and design patterns
  • Testing
  • Data and storage
  • Networking and API
  • CI/CD, Docker and reproducibility. Operations basics
  • Release, documentation and project defense
Assessment Elements

Assessment Elements

  • non-blocking SemTasks
    Seminar assignments (individual practical tasks)
  • non-blocking Project
    Team project (group development of the Data Quality Reporter product)
  • non-blocking Review
    Code review and teamwork (continuous assessment)
  • non-blocking Quiz
    Quizzes (short written tests at lectures)
  • non-blocking Defense
    Final project defense (examination)
Interim Assessment

Interim Assessment

  • 2026/2027 4th module
    0.1 * Quiz + 0.25 * SemTasks + 0.35 * Project + 0.15 * Review + 0.15 * Defense
Bibliography

Bibliography

Recommended Core Bibliography

  • Clean code : a handbook of agile software craftsmanship, Martin, R.C., 2009
  • Scott Chacon, & Ben Straub. (2014). Pro Git (Second Edition). Web server without geographic relation, Web server without geographic relation (org): Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.E86D0407

Recommended Additional Bibliography

  • The passionate programmer : creating a remarkable career in software development, Fowler, C., 2009

Authors

  • Voznesenskaia Tamara Vasilevna
  • Kopylov Ivan Stanislavovich