Jan Bródka - main page


Programming 3 - Advanced


Course page in usos portal


Unit Tests


Lecture 1 introduction, history of C# language, .NET platform, namespaces
introductory example

Lecture 2 classes - static members, access modifiers, constants, readonly fields, inheritance, virtual methods,
abstract classes, sealed classes, constructors, finalizers, new operator
example - "factory" methods

Lecture 3 reference and value types, structures, tuples, parameters, method overloading, deconstruction
example - reference and value types
example - tuples and deconstruction
example - parameters
example - method overloading

Lecture 4 conversions, is and as operators, local functions, enumeration types
example - conversions and operations on dynamic variables

Lecture 5 user-defined operators and conversions, properties, indexers
example - complex numbers
example - indexers

Lecture 6 interfaces, foreach statement, yield iterators, extension methods
example - foreach statement and yield iterators
example - stack "with foreach":     version without yield iterators     version using yield iterators     Main method
example - extension methods

Lecture 7 generic types, nullable and non-nullable types, operators related to null
example - nullable and non-nullable reference types

Lecture 8 delegates, anonymous methods and lambda expressions
example - sorting by different comparison criteria
example - anonymous methods and lambda expressions
example - outer variables in loops
example - complex numbers with expression-bodied members

Lecture 9 exceptions, using and lock statements, checked and unchecked
example - exceptions
example - exceptions with when clauses (C# 6.0)
example - using statement

Lecture 10 event driven programming, asynchronous and parallel programming
example - events - timer
example - synchronous computations
example - asynchronous computations
example - parallel loops

Lecture 11 streams and files, serialization, string class, formatting, StringBuilder class
example - serialization
example - "partial" serialization
example - user-defined formatting
example - operations on objects of string and StringBuilder types - efficiency comparison

Lecture 12 LINQ technology (part I) - introduction, query expressions, clauses
example - select clause
example - join and join...into clauses

Lecture 13 LINQ technology (part II) - query expressions continuations, IEnumerable interface extension methods, Parallel LINQ (PLINQ)
example - varied joins (including cross joins)
example - query expressions - efficiency comparison
example - IEnumerable interface extension methods
example - Parallel LINQ (PLINQ)

Lecture 14 unsafe code, C# and C/C++ interoperability
example - C# and C/C++ interoperability:     C++ source code     C# source code
example - C#/C callback invocations:     C source code     C# source code


Laboratory slides