• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Бакалаврская программа «Прикладной анализ данных»

Introduction to Programming

2022/2023
Учебный год
ENG
Обучение ведется на английском языке
10
Кредиты
Статус:
Курс обязательный
Когда читается:
1-й курс, 1-4 модуль

Преподаватели

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

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

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

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.
  • Introduction to relational databases. SQL Basics.
  • 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

Assessment Elements

  • non-blocking 1st semester Ongoing Assessment 0.6
    The 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.
  • non-blocking 2nd semester Ongoing Assessment 0.6
    The 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.
  • non-blocking 2nd semester Exam
    The exam may be carried out online via distance learning platforms. The second part exam, which takes place at the end of the second quartile.
  • non-blocking Regular tests
    Students’ 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.
  • non-blocking 1st semester exam 0.4
    First part exam, which takes place at the end of the first quartile.
  • non-blocking Individual Home tasks
    Students’ 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

Interim Assessment

  • 2022/2023 2nd module
    0.4 * 1st semester exam 0.4 + 0.6 * 1st semester Ongoing Assessment 0.6
  • 2022/2023 4th module
    0.4 * 2nd semester Exam + 0.6 * 2nd semester Ongoing Assessment 0.6
Bibliography

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