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

Introduction to Programming

Area of studies: Business Informatics
When: 1 year, 3, 4 module
Mode of studies: offline
Instructors: Sergey G. Efremov
Language: English
ECTS credits: 6
Contact hours: 60

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.
Learning Objectives

Learning Objectives

  • Provide students with knowledge of fundamental programming principles and the corresponding practical skills
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
  • Know the bitwise operations on integer numbers
  • Write modular code using functions
  • Understand the fundamentals of the Python data model
  • Know the approaches to evaluating algorithmic complexity, the Big-O notation
  • Understand the differences between standard sorting algorithms, their algorithmic efficiency
  • Understand the use-cases of associative containers
  • 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
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
  • Bitwise operations. Error handling techniques
    Storing bit states as numbers. Setting, clearing and inverting bits. Checking bit states with masks. Shift operators. Errors and their sources. Handling exceptions
  • 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
  • Introduction to algorithmic complexity. Sorting algorithms
    Big-O notation. Algorithmic complexity. Linear and binary search. Simple sorting algorithms: selection sort, bubble sort, insertion sort. Divide and conquer techniques. Mergesort and quicksort
  • 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
  • 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
  • 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
  • Introduction to object-oriented programming
    Classes and objects. Instance and class members. Basics of OOP. Python syntax related to OOP
Assessment Elements

Assessment Elements

  • non-blocking Quiz
  • non-blocking Homework assignments
  • non-blocking Problem solving session
  • non-blocking Final exam
Interim Assessment

Interim Assessment

  • Interim assessment (4 module)
    0.3 * Final exam + 0.3 * Homework assignments + 0.3 * Problem solving session + 0.1 * Quiz
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