Бакалавриат
2021/2022
Основы и методология программирования
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус:
Курс обязательный
Направление:
01.03.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 1-4 модуль
Формат изучения:
с онлайн-курсом
Онлайн-часы:
4
Охват аудитории:
для своего кампуса
Преподаватели:
Ахременко Анна Андреевна,
Вознесенская Тамара Васильевна,
Жуликов Георгий Александрович,
Карраскель Гамес Хулио Сесар,
Максимова Дарья Максимовна,
Пяцкий Георгий Геннадьевич,
Рудаков Кирилл Александрович,
Шершаков Сергей Андреевич
Язык:
английский
Кредиты:
10
Контактные часы:
246
Course Syllabus
Abstract
The training course “Introduction to Programming” is offered to students of Bachelor Program “Data Science and Business Analytics” at the Faculty of Computer Science of the National Research University — Higher School of Economics (HSE). The course is classified as a compulsory subject; it is a whole-year course. The course is divided into two logical parts, which do not basically depend on each other. The first part is given during semester A (quartiles 1 and 2) under the responsibility of Dr. Tamara Voznesenskaya. The second part is given during semester B (quartiles 3 and 4) under the responsibility of Lect. Sergey Shershakov. The first part of the course is intended to be taught during the first semester of the program, so it starts from the very beginning and takes into account, that some of the students may have zero experience in programming. The lectures and practical classes are closely inter-related. The lectures are primarily intended to introduce new topics, focus on more theoretical aspects whereas the practical classes are intended for solving specific problems by coding programs in Python. The second part of the course is intended to be taught during the second semester of the program. It is dedicated to the base features of the C++ programming language and C++ Standard Library (STL). The part covers all necessary topics that are needed to start developing a modern CLI1-applications in C++14. 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++.
Learning Objectives
- One of the objectives of this course is for the students to will study the methodology of programming.
- During this course, the students will develop algorithmic thinking.
- During this course, the students will study approaches and toolkits for the development of Python applications.
- During this course, the students will study approaches and toolchains for the development of C++-applications.
- During this course, the students will practice application debugging and deployment with respect to various platforms and toolchains.
Expected Learning Outcomes
- Students will acquire skills in Python programming to formalize and solve simple development tasks.
- Students will learn basic concepts and methods of software development.
- Students will learn to analyze a problem to be implemented in the form of a C++-application.
- Students will learn to create a testbed environment for essential testing of the application.
- Students will learn to design app architecture with respect to problem decomposition and known limitations.
- Students will learn to select the most appropriate toolset for app development.
- Students will practice application debugging and deployment with respect to various platforms and toolchains.
Course Contents
- Introduction.
- Dynamic typing. Operations of sequence, selection, and iteration.
- Number systems. Float in the computer memory, rounding and other aspects.
- Strings.
- Functions and recursion. Lambda-functions. Named parameters.
- Tuples. Lists. Function map. Methods Split and Join.
- Zen of python. PEP-8. Files. Exceptions and errors. Program debugging.
- Sets. Dictionaries.
- Sort and found. Introduction into the complexity theory.
- Elements of functional programming. Function Enumerate. Module Functools.
- Object-oriented programming. Main ideas: encapsulation, inheritance and polymorphism. Operator Overriding. Function Isinstance. Examples.
- Python for data analysis. Overview.
- Introduction to C++.
- Data types and Objects.
- Control flow statements.
- Expressions and Operators.
- Functions and procedures.
- C++ Memory model.
- Classes.
- Strings.
- Standard library (STL).
- Operator overloading.
- Templates.
- Exceptions and Move semantics.
- Inheritance.
- Object-Oriented Analysis and Design.
- C++ plus Python.
Assessment Elements
- 1st semester Ongoing AssessmentThe ongoing assessment grade is accumulated throughout all the classes and is related to a participant’s activity. An ongoing control structure is individual for every class. During the classes, there are some activities available for students to be involved in. They include (but are not limited by) writing code and developing applications, evaluating practical problems, solving tests, answering questions and so on.
- 2nd semester Ongoing AssessmentThe ongoing assessment grade is accumulated throughout all the classes and is related to a participant’s activity. An ongoing control structure is individual for every class. During the classes, there are some activities available for students to be involved in. They include (but are not limited by) writing code and developing applications, evaluating practical problems, solving tests, answering questions and so on.
- 1st semester ExamFirst part exam, which takes place at the end of the first quartile.
- 2nd semester ExamThe exam may be carried out online via distance learning platforms. The second part exam, which takes place at the end of the second quartile.
- Regular testsStudents’ skills in programming are tested using automated testing. This way, a student is assigned an individual task, prepares it by using a personal computer and, then, submits it by using a special service, such as Yandex.Contest or a repository-based tool. A professor decides whether to request students to defend their work (home, control, exam). The specific solution can be subject to further clarification.
- Individual Home tasksStudents’ skills in programming are tested using automated testing. This way, a student is assigned an individual task, prepares it by using a personal computer and, then, submits it by using a special service, such as Yandex.Contest or a repository-based tool. A professor decides whether to request students to defend their work (home, control, exam). The specific solution can be subject to further clarification.
Interim Assessment
- 2021/2022 2nd module0.4 * 1st semester Exam + 0.6 * 1st semester Ongoing Assessment
- 2021/2022 4th module0.4 * 2nd semester Exam + 0.6 * 2nd semester Ongoing Assessment
Bibliography
Recommended Core Bibliography
- Davis, S. R. (2014). C++ For Dummies (Vol. 7th ed). Hoboken: For Dummies. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=784132
- Gregoire, M. (2018). Professional C++ (Vol. Fourth edition). Indianapolis, IN: Wrox. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1729638
- Pilgrim, M. (2009). Dive Into Python 3. New York: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=326208
Recommended Additional Bibliography
- Olsson, M. (2015). C Quick Syntax Reference. [New York]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=944034