Section outline

  • LK - senior lecturer Pokhodenko B.O. group: MП-10-25

    PC - senior lecturer Pokhodenko B.O. group: MП-10-25

    Classes are held remotely in the format of web conferences at the link:
    On conference Zoom

    https://us04web.zoom.us/j/2272646103?pwd=Y1BGUU4xb2tsYWtVVW13eHdBUEZuUT09   

    Identification conference: 227 264 6103

    Code: 6eqvfm

  • Lesson 1. Implementation of the Main Concepts of Object-Oriented Programming in the C# Language

    Objective: the purpose of teaching this topic is to form in students a holistic system of knowledge about the object-oriented approach as a leading tool for overcoming software complexity. The student must master the main causes of complexity in industrial systems, such as conflicting requirements, the need for collective development and flexibility of software structures, as well as understand how the hierarchy of types and levels of abstraction help structure the relationships between components. During the learning process, special attention is paid to understanding the essence of an object through its state, behavior and identity, as well as a deep understanding of the concept of a class as an abstract template for creating specific instances. The practical component involves mastering the syntax of the C# language to define class members, in particular fields, methods, properties and indexers, as well as the competent use of access modifiers to ensure data encapsulation and protection. Students learn to implement various types of constructors, including static ones, and use initializers to guarantee the integrity of objects when they are created. An important aspect is the study of the life cycle of objects in the CLR managed memory, where the student must understand the mechanisms of automatic garbage collection, the principles of distributing objects by generations, and learn, if necessary, to programmatically interact with system library types to optimize resource use. As a result of studying the material, the student must be able to independently design expressive program structures that model real-world objects, are resistant to change, and are efficient in terms of memory management.
  • Lesson 2. Implementation of polymorphism in C#

    Objective: is to form in students a comprehensive understanding of polymorphism as a fundamental property of object-oriented programming, which allows using a single interface to manage objects of different types. The student must master the key concepts of the idea of ​​"one interface, many methods", realize the advantages of eliminating program complexity by delegating the choice of a specific action to the compiler, and learn to identify situations that require the use of polymorphic behavior. In the learning process, special attention is paid to distinguishing between the mechanisms of static binding, which occurs at the compilation stage based on the type of the variable, and dynamic binding, which is implemented during program execution in accordance with the real type of the object. Students must master the practical skills of creating class hierarchies using virtual methods (keyword virtual) and their overriding (override), as well as understand ways to restrict inheritance using the sealed modifier. An important aspect is the study of the role of abstract classes as high-level design tools that describe the general concept without detailing the implementation, and the assimilation of strict rules for working with them, in particular the prohibition of creating instances via new. In addition, students learn to implement polymorphism through interfaces, understand their differences from abstract classes, master the mechanisms of multiple inheritance of interfaces and resolve name conflicts when implementing several interfaces simultaneously. At the end of studying the topic, the student should be able to analyze the feasibility of choosing between abstract classes and interfaces, effectively use the type checking operators is and as for manipulating objects, and design flexible programming models that use modern features of the C# language, such as properties for isolating data access logic.
  • Lesson 3. Basic .Net libraries. Principles of operator overloading.

    Objective: is to develop students' skills in extending the functionality of custom data types through the operator overloading mechanism, which allows creating intuitive and readable program code. The student must master the principles of operations in C#, understand the mechanism for the compiler to search for the most suitable overload based on parameter types, and be aware of the limits of this technique, in particular, distinguish between operators that are subject to and not subject to overloading. During the training, special attention is paid to understanding strict syntax requirements: the mandatory presence of public static modifiers, the use of the operator keyword, and the impossibility of accessing non-static class members through the this identifier. Students must master the skills of pairwise overloading of comparison and equality operators (== and !=, > and <), as well as understand the need for synchronous overriding of the Equals() and GetHashCode() methods to ensure correct object behavior. An important aspect is the study of type conversion operators, where the student must learn to differentiate between implicit conversions that guarantee no data loss and explicit conversions that require the programmer to consciously cast types. The practical component involves the ability to design mathematical structures (for example, Vector or Point), implement arithmetic operations for them, and ensure compatibility with different types of operands through additional overloading. Finally, the student must be able to critically evaluate the appropriateness of overloading for specific types, avoiding careless use where it harms the logic of the program, and learn to duplicate the functionality of operators using standard methods to ensure cross-language compatibility within .NET.
  • Lesson 4. Basic .Net libraries. Indexers and properties. Exception handling. Data Input-Output.

    Objective: formation of a holistic system of knowledge among students about data encapsulation mechanisms, program fault tolerance, and interaction with external media in the .NET environment. The student must master the principles of properties as intelligent wrappers over closed fields, understand the role of get and set accessors and the implicit value parameter in providing control over data, and also distinguish properties from indexers that provide index access to class instances. During the training, special attention is paid to mastering the exception handling architecture: from understanding the hierarchy of System.Exception classes to the practical application of try-catch-finally blocks for isolating potentially dangerous code and correct resource cleanup. Students must learn to design reliable applications that are able to overcome exceptional situations without loss of performance. In addition, the teaching involves the formation of skills in working with input-output streams (Stream), where the student must differentiate byte (FileStream), character (StreamReader, StreamWriter) and binary (BinaryReader, BinaryWriter) streams depending on the data format and processing tasks. An important aspect is mastering methods of random access to files using Seek and techniques for redirecting standard console streams to physical files. As a result of studying the material, the student must be able to analyze the structure of complex objects to select optimal class members, effectively handle errors at different levels of nesting and implement effective application interaction with the file system.
  • Lesson 5. Basic .Net libraries. Collections.

    Objective: is to form in students a holistic system of knowledge about collections as a standardized means of processing groups of objects in the .NET environment. The student must master the fundamental concepts of abstract data types, such as list, stack, and queue, and also understand the advantages of using built-in data structures to reduce the complexity of development. During the training, special attention is paid to studying the architecture of the System.Collections namespace, the hierarchy of interfaces (IEnumerable, ICollection, IList, IDictionary), and the role of enumerators in providing standardized element-by-element access to the contents of any collection. Students must master practical skills in working with general-purpose collections, in particular dynamic arrays (ArrayList), stacks (Stack), queues (Queue), and hash tables (Hashtable), distinguishing between their LIFO and FIFO maintenance principles. An important aspect is the formation of the ability to compare dynamic structures with standard fixed-length arrays, effectively manage the capacity of collections through the Capacity property, and implement user-defined sorting criteria through the IComparer interface. In addition, the course involves mastering hashing mechanisms for quickly searching for key-value pairs and understanding the differences between general-purpose, special-purpose, and bit-oriented collections. As a result of studying the material, the student should be able to analyze applied problems to select the most adequate data structure, programmatically implement complex information processing algorithms (for example, checking the balance of parentheses or working with telephone directories), and optimize the use of system resources when manipulating large volumes of objects.
  • Lesson 6. Basic .Net libraries. Strings and regular expressions.

    Objective: is to form in students a comprehensive system of knowledge and practical skills in processing text information using the .NET platform tools. The student must master the functionality of the char character type and static methods of the System.Char class for analyzing and classifying individual characters. During the training, special attention is paid to understanding the fundamental difference between immutable string strings and dynamic StringBuilder objects, which allows optimizing application performance and effectively managing memory during text manipulation. Students must master the methods of the String class for comparing, searching, splitting, and merging strings, as well as learn to use StringBuilder for intensive editing of character information. An important aspect is studying the regular expression apparatus (Regex) as a powerful tool for pattern search and automated text editing. The student must learn to use metacharacters, qualifiers, and repeaters to build complex templates, such as phone number formats or identifiers. The practical component involves the ability to programmatically implement the search for text fragments using the IsMatch, Match and Matches methods, as well as perform mass data replacement using the Replace method of the Regex class. Finally, the student must be able to analyze text tasks to select the optimal information processing tools, ensuring correctness, speed and reliability of software solutions.