Bachelor
2020/2021
Introduction to Programming
Type:
Compulsory course (HSE University and University of London Parallel Degree Programme in Management and Digital Innovation)
Area of studies:
Business Informatics
Delivered by:
Bachelor's Programme in Digital Product Management
Where:
Graduate School of Business
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
- Provide students with knowledge of fundamental programming principles and the corresponding practical skills
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
- Overview of modern computer architecture. Data representation in computersComputing 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 languageEvolution 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 executionPython script mode. Input and output. Formatted output including f-strings. Boolean expressions. Comparison operators. Boolean algebra. The if-elif-else operator. Code indentation rules
- LoopsPre-condition and post-condition loops. Algorithms on loops: number multiplication, greatest common divisor, sequence processing, nested loops
- Bitwise operations. Error handling techniquesStoring 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 algorithmsModular 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. ListsHow 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 algorithmsBig-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 expressionsStoring 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 collectionsNegative indexing. Slices and slice assignment. List comprehensions. List and tuple unpacking
- Associative containersAssociative containers: usage and internal structure. Special data structures – binary heap, binary tree. Container iteration. Generator functions and generator expressions
- File input-outputFile 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, generatorsThe 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 programmingClasses and objects. Instance and class members. Basics of OOP. Python syntax related to OOP
Interim Assessment
- Interim assessment (4 module)0.3 * Final exam + 0.3 * Homework assignments + 0.3 * Problem solving session + 0.1 * Quiz
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