Versions (taught during): v2020.1, v2021.1 (Fall 2020, Fall 2021)
Venue: Skolkovo Institute of Science and Technology
Taught for: Master of Science in Data Science (other programs eligible)
Abstract
This course is intended to serve as an introduction into basics of everyday industrial software engineering. Oftentimes students seek to obtain proficiency in complicated subjects such as machine learning, algorithms, or computer vision, but lack basic literacy in software engineering and therefore have little practical skills required to carry out research or industrial projects. In this course, our goal is to bridge the gap between basic programming skills commonly taught during BSc programs and the industrial-grade engineering required by top-notch MSc, Ph.D., or R&D positions.
Course Contents
Topics include:
Unix fundamentals: shell and command line, scripting, filesystem, streams and pipes, parameter parsing, remote machine, and ssh, etc.,
Software engineering in teams: code review and version control, reproducibility and containers, testing and test-driven development, improving code style, software deployment, and APIs, etc.,
Software design: team organization, software specifications, software project management, software design methodologies, object-oriented software design, etc.
As a project, the students will be required to work in teams to design, engineer, test, and deploy a real large software system using the principles described in this course.