• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2019/2020


Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус: Курс обязательный (Бизнес-информатика)
Направление: 38.03.05. Бизнес-информатика
Кто читает: Кафедра управления информационными системами и цифровой инфраструктурой
Когда читается: 2-й курс, 1, 2 модуль
Формат изучения: с онлайн-курсом
Преподаватели: Вишняков Федор Николаевич, Ефремов Сергей Геннадьевич, Исхаков Фидан Ринатович, Калашников Сергей Владимирович, Репецкая Татьяна Олеговна
Язык: английский
Кредиты: 4

Course Syllabus


In the 21st century programming has become an essential skill for anyone working in the IT-field, as it provides significant insight into how numerous technical devices and systems surrounding us operate. Programming languages and tools have evolved significantly over the years, which now enables people without a solid technical background to successfully master related courses. The present course is mandatory for second year students of the 38.03.05 “Business informatics” bachelor’s program at the Higher School of Economics and is a logical continuation of the first year's course.
Learning Objectives

Learning Objectives

  • Provide students with knowledge of the main techniques of modern software development using object-oriented approach and the corresponding practical skills
Expected Learning Outcomes

Expected Learning Outcomes

  • Use generic collections in C# applications
  • Know the fundamentals of the .NET framework memory model
  • Use class aggregation to design an object-oriented model of any given subject area
  • Use inheritance to design new classes with existing code reuse
  • Know the C# features related to object-oriented programming
  • Understand the concept of polymorphism in object-oriented programming
  • Apply interfaces for loose coupling of program components
  • Apply delegates in C# programs
  • Know the main systems of collaborative software development
  • Use C# LINQ operators for data querying
  • Identify code pieces with deferred execution
  • Understand the principle of object-to-relational mapping
  • Use the Entity Framework ORM in C# applications
  • Know the main terminology in parallel programming
  • Know the mechanisms enabling concurrent access to shared resources
  • Understand the concept of Web APIs
  • Know the main types of authentication and authorization in RESTful APIs
Course Contents

Course Contents

  • Review: basics of programming, C# language and .NET Framework. Collections and generics
    Low-level and high-level programming languages. Compilers and interpreters. Platform independency. Intermediate code. Just-in-time compiling. .NET Framework and CLR. Common type system. Value types and reference types. Allocation of memory. Stack and heap. Boxing and unboxing. Debugging. Generic types. Collections
  • Object-oriented programming in detail
    Classes and objects. Fields, methods and properties. Auto-properties in C#. Encapsulation principle. Struct and class in C#. Method overloading. Static classes. Singleton template. Object lifetime. Garbage collection. Relation types between classes. Extending existing classes. Extension methods’ syntax. Inheritance
  • Abstract programming
    The principle of loose coupling and its importance. Abstract programming using delegates: function call mechanism, reference to function, delegate, delegate instances and events, anonymous delegates, generic delegate types in C#, lambda expressions. Abstract programming using interfaces and inheritance: “Object” type and its methods, polymorphism, interfaces and abstract classes, multiple inheritance, inversion of control principle
  • Libraries and packages. Collaborative software development
    Requirements for large applications. Data access layer. Business logic. Presentation tier. Designing reusable code. Dynamically linked libraries. Managing external packages. Version control systems (VCS). Centralized and distributed VCS. Branching. Conflict resolving.
  • C# iterators and deferred execution. LINQ
    Data sources. Unification of mechanisms for data access. LINQ. Extension method syntax and SQL-like syntax of LINQ. Immediate and deferred execution. C# iterators. Main LINQ operators: filtering, ordering, grouping, joining, merging
  • Interfacing databases. Object-to-relational mapping
    Database and database management systems. Relational model basics. Communicating with databases. Object-to-relational mapping. Entity Framework. Database-First, Model-First and Code-First approaches. Developing a demo application using code-first approach. Context class and its functions. Data sets. Lazy loading. Migrations. LINQ to SQL
  • Basics of parallel programming
    Processes and threads. Executing an external process. Thread lifetime. Thread state. Task switching mechanisms within the OS. Thread priority. Accessing shared resources. Debugging multithreaded applications. Typical pitfalls of multithreaded applications
  • 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 In-class assessment 1
  • non-blocking In-class assessment 2
  • non-blocking Homework assignment 1
  • non-blocking Homework assignment 2
  • non-blocking Homework assignment 3 (team project)
  • non-blocking Exam
Interim Assessment

Interim Assessment

  • Interim assessment (2 module)
    The second year’s scores on classroom assessment (CA), homework assignments including the final team project (HW) and the final exam (EX). FG=(0.3+w_a)∙HW+(0.3-w_a)∙CA+0.4∙EX The weight adjustment coefficient w_a can be set by each student individually within the following limits: |w_a |≤((LQ+Act))/20 where LQ – average score for lecture quizzes normalized to [0,1] Act – practice session activity, can be one of the three possible values [0, 0.5, 1]


Recommended Core Bibliography

  • Troelsen, A., & Japikse, P. (2017). Pro C# 7 : With .NET and .NET Core (Vol. Eight edition). [Place of publication not identified]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1637725

Recommended Additional Bibliography

  • Lerman, J., & Miller, R. (2012). Programming Entity Framework: Code First. Sebastopol: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=414857
  • Lerman, J., & Miller, R. (2012). Programming Entity Framework: DbContext. Sebastopol: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=438950
  • Somasundaram, R., & Ebooks Corporation. (2013). Git : Version Control for Everyone: the Non-coder’s Guide for Everyday Version Control for Increased Efficiency and Productivity: Beginner’s Guide. Birmingham: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=533211