• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site
Bachelor 2019/2020

Introduction to Programming

Category 'Best Course for Career Development'
Category 'Best Course for Broadening Horizons and Diversity of Knowledge and Skills'
Area of studies: Business Informatics
When: 1 year, 3, 4 module
Mode of studies: Blended
Instructors: Sergey G. Efremov
Language: English
ECTS credits: 7

Course Syllabus

Abstract

In the modern highly technological world computer skills have become essential for specialists in almost all possible areas. Programming in particular has gone beyond its traditional borders of being just a prerogative of IT specialists, instead turning into an element of general computer literacy. In the last 15 years programming languages and tools have evolved significantly, which now enables people even without a solid technical background to successfully master related skills. The present course is offered to 1st year students of the HSE and University of London Parallel Degree Programme in Management and Digital Innovation. It is based on the Python programming language, which is considered by many as the best first programming language to learn having clear and concise syntax and free cross-platform tools for development. The course is taught in a blended format with part of the content provided from a MOOC on Coursera.
Learning Objectives

Learning Objectives

  • understand the key ideas behind programmatic problem solving
  • know fundamentals of the Python programming language
  • be able to select appropriate data structures for storing information
  • perform basic processing of numeric and textual information
  • know several techniques of automated data acquisition, including web queries
Expected Learning Outcomes

Expected Learning Outcomes

  • Know the basics of modern computer architecture
  • Be able to use the Python shell mode for simple arithmetic computations on integer numbers
  • Use the Python standard functions for input and output, including formatted output
  • Apply the conditional operator to solve branching tasks
  • Know the common code templates for loops
  • Apply the loop operator to process sequences of numbers or strings
  • Write modular code using functions
  • Be able to import functions from standard Python modules
  • Know the concept of a recursive function
  • Understand the fundamentals of the Python data model
  • Use the Python list collection with its standard functions
  • Use standard functions of the str class to perform basic text processing
  • Understand the main principles of regular expressions
  • Know the additional Python features related to linear collections
  • Understand the use-cases of associative containers
  • Use the standard dict and set classes
  • Use lambda functions, iterables and generators in Python programs
  • Use text files for application data storage
  • Know main data serialization formats
  • Understand the main terms of object-oriented programming
  • Use the object-oriented programming paradigm in Python
  • Understand the concept of Web APIs
  • Know the main types of authentication and authorization in RESTful APIs
Course Contents

Course Contents

  • Overview of modern computer architecture. Data representation in computers
    Computing history. Stored program computers. Von-Neumann architecture. Binary numeral system. Data representation in computers. Software structure. Source code and executable code.
  • Introduction to programming and the Python language
    Evolution of programming languages. High-level and low-level languages. Python overview. Python shell mode. Values, expressions and data types. Integer arithmetic operators. Integer division and its applications
  • Python script mode. Conditional execution
    Python script mode. Input and output. Formatted output including f-strings. Boolean expressions. Comparison operators. Boolean algebra. The if-elif-else operator. Code indentation rules
  • Loops
    Pre-condition and post-condition loops. Algorithms on loops: number multiplication, greatest common divisor, sequence processing, nested loops
  • Functions and modules. Name scopes. Recursive algorithms
    Modular program structure. Function definition in Python. Parameters and return values. Naming conventions. Standard functions from the built-in scope. Importing functions from modules. Math and random modules in Python. Recursive functions
  • Python data model. Lists
    How are values stored? The concept of a memory reference. Reference assignment. Mutable and immutable types. Python lists: creating a list, adding, removing, extracting values. Common algorithms on lists. Multi-dimensional tables stored as lists. The “for” loop. Tuples
  • Strings. Advances techniques of text processing, regular expressions
    Storing text. Encoding tables. Specialized methods for string manipulation and processing. Regular expression language: main capabilities and samples. Extracting data to groups
  • Special Python syntactic features for linear collections
    Negative indexing. Slices and slice assignment. List comprehensions. List and tuple unpacking
  • Associative containers
    Associative containers: usage and internal structure. Special data structures – binary heap, binary tree. Container iteration. Generator functions and generator expressions
  • Elements of functional programming. Lambda functions, iterables, generators
    The concept of a pure function. Passing functions as parameters. Lambda functions. Iterables and iterators. Generator functions and generator expressions. The itertools module
  • File input-output
    File as an operating system abstraction. File attributes. File system. Absolute and relative paths. File access modes. Formats. Standard file operations. Text and binary files. The os module in Python. Serialization
  • Introduction to object-oriented programming
    Classes and objects. Instance and class members. Basics of OOP. Python syntax related to OOP
  • Integration with the Web
    Modern web architecture and the HTTP protocol. RESTful web services. Data formats. Synchronous and asynchronous communication. Open RESTful APIs. Authorization
Assessment Elements

Assessment Elements

  • non-blocking Classroom assessment
  • non-blocking Homework assignments
  • non-blocking Exam
    Examination format: The exam is taken written. The platform: The exam is taken on Canvas, Zoom platforms. Students are required to join a session 15 minutes before the beginning. The computers must meet the following technical requirements: https://docs.microsoft.com/ru-ru/microsoftteams/hardware-requirements-for-the-teams-app A student is supposed to follow the requirements below: Check your computer for compliance with technical requirements no later than 7 days before the exam; Sign in with your corporate account (@edu.hse.ru); Check your microphone, speakers or headphones, webcam, Internet connection (we recommend connecting your computer to the network with a cable, if possible); Prepare the necessary writing equipment, such as pens, pencils, pieces of paper, and others. Disable applications on the computer's task other than the Zoom, Canvas application or the browser that will be used to log in to the Zoom, Canvas If one of the necessary requirements for participation in the exam cannot be met, a student is obliged to inform a professor and a manager of a program 2 weeks before the exam date to decide on the student's participation in the exams. Students are not allowed to: Turn off the video camera; Use notes, textbooks, and other educational materials; Leave the place where the exam task is taken (go beyond the camera's viewing angle); Look away from your computer screen or desktop; Use smart gadgets (smartphone, tablet, etc.) Involve outsiders for help during the exam, talk to outsiders during the examination tasks; Read tasks out loud. Students are allowed to: Write on a piece of paper, use a pen for making notes and calculations; Use a calculator; Turn on the microphone to answer the teacher’s questions; Ask a teacher for additional information related to understanding the exam task; Interact with other students if allowed. Connection failures: A short-term communication failure during the exam is considered to be the loss of a student's network connection with the Zoom for no longer than 1 minute. A long-term communication failure during the exam is considered to be the loss of a student's network connection with the Zoom for longer than 1 minute. A student cannot continue to participate in the exam, if there is a long-term communication failure appeared. The retake procedure is similar to the exam procedure. In case of long-term communication failure in Zoom during the examination task, the student must notify the teacher, record the fact of loss of connection with the platform (screenshot, a response from the Internet provider). Then contact the manager of a program with an explanatory note about the incident to decide on retaking the exam.
  • non-blocking Lecture quizzes
Interim Assessment

Interim Assessment

  • Interim assessment (4 module)
    0.3 * Classroom assessment + 0.3 * Exam + 0.3 * Homework assignments + 0.1 * Lecture quizzes
Bibliography

Bibliography

Recommended Core Bibliography

  • Downey, A. (2015). Think Python : How to Think Like a Computer Scientist (Vol. Second edition). Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1105725

Recommended Additional Bibliography

  • Baka, B. (2017). Python Data Structures and Algorithms. Birmingham, U.K.: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1528144