Module also offered within study programmes:
General information:
Name:
Programming in C#
Course of study:
2018/2019
Code:
JIS-1-030-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Course homepage:
 
Responsible teacher:
dr inż. Jędrychowski Mariusz (Mariusz.Jedrychowski@fis.agh.edu.pl)
Academic teachers:
dr inż. Jędrychowski Mariusz (Mariusz.Jedrychowski@fis.agh.edu.pl)
Module summary

Kurs stanowi wprowadzenie do programowania w języku C# (standard 6) i platformach .NET, .netcore, ukazując najważniejsze cechy, zalety i wady tego zestawu w porównaniu do z języków JAVA i C++.

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
M_K001 Student posiada umiejętność zwięzłego i precyzyjnego opisania własnych rozwiązań oraz komunikatywnego ich przedstawienia. IS1A_K01 Activity during classes,
Execution of laboratory classes,
Participation in a discussion
Skills
M_U001 Student, stosując popularne środowiska programistyczne (Visual Studio/Visual Studio Code), potrafi stworzyć aplikacje z wykorzystaniem języka C#, platformy .NET i paradygmatów programowania oferowanych przez tę technologię. IS1A_U03, IS1A_U06, IS1A_U01, IS1A_U04 Activity during classes,
Execution of laboratory classes
M_U002 Student umie samodzielnie wyszukiwać szczegółowe informacje w dostępnych zasobach dokumentacji języka C#. IS1A_U01 Execution of laboratory classes
Knowledge
M_W001 Student zna i rozumie strukturę platformy .NET, składnię języka C# i podstawowe koncepcje programistyczne w nim zawarte oraz wie jak funkcjonuje środowisko uruchomieniowe i na czym polega kompilacja do postaci kodu bajtowego (managed). IS1A_W03, IS1A_W02 Execution of laboratory classes,
Test
M_W002 Student zna założenia paradygmatów programowania: obiektowego, uogólnionego, dynamiczmego, wielowątkowego i wie jak je realizować w języku C# oraz jakie są różnice w powyższych zagadnieniach w stosunku do języków C++ i Java. IS1A_W03, IS1A_W02 Execution of laboratory classes,
Participation in a discussion,
Test
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
M_K001 Student posiada umiejętność zwięzłego i precyzyjnego opisania własnych rozwiązań oraz komunikatywnego ich przedstawienia. - - + - - - - - - - -
Skills
M_U001 Student, stosując popularne środowiska programistyczne (Visual Studio/Visual Studio Code), potrafi stworzyć aplikacje z wykorzystaniem języka C#, platformy .NET i paradygmatów programowania oferowanych przez tę technologię. - - + - - - - - - - -
M_U002 Student umie samodzielnie wyszukiwać szczegółowe informacje w dostępnych zasobach dokumentacji języka C#. - - + - - - - - - - -
Knowledge
M_W001 Student zna i rozumie strukturę platformy .NET, składnię języka C# i podstawowe koncepcje programistyczne w nim zawarte oraz wie jak funkcjonuje środowisko uruchomieniowe i na czym polega kompilacja do postaci kodu bajtowego (managed). + - + - - - - - - - -
M_W002 Student zna założenia paradygmatów programowania: obiektowego, uogólnionego, dynamiczmego, wielowątkowego i wie jak je realizować w języku C# oraz jakie są różnice w powyższych zagadnieniach w stosunku do języków C++ i Java. + - + - - - - - - - -
Module content
Lectures:

Plan wykładów:

1. Framework .NET. Początki języka C#. Biblioteka .NET Core. Środowisko pracy (Visual Studio, Visual Studio Code).
2. Typy danych. Zarządzanie pamięcią. Garbage Collector. Klasy a struktury w C#. Opakowywanie typów (boxing). Typy: mutable i immutable, domniemane i anonimowe. String interpolation. Cechy charakterystyczne klas w C# (słowa kluczowe: sealed, partial, abstract, virtual; konstruktor statyczny; właściwości (properties); indeksery)
3. Dziedziczenie. System.Object. Interfejsy. Destruktor i interfejs IDisposable. Metody rozszerzające (extensions).
4. Typy ogólne (generics), polimorfizm statyczny, kolekcje
5. Delegaty. Zdarzenia. Wyrażenia Lambda
6. LINQ. Tworzenie własnych kolekcji
7. Serializacja – zarządzanie dokumentami xml.
8. Atrybuty i mechanizm refleksji. Dynamiczne tworzenie kodu (dynamic programming).
9. Programowanie wielowątkowe.
10. Synchronizacja. Wskaźniki. Słowo kluczowe unsafe.
11. Wybrane biblioteki .NET (WPF, UWP, Entity Framework) i zastosowania języka C# (Unity).

Laboratory classes:

W trakcie zajęć laboratoryjnych studenci będą mogli wykazać się wiedzą i praktyczną znajomością języka C#, rozwiązując zadania i problemy programistyczne.
Realizowane tematy obejmują m.in.:
1) instalację wieloplatformowego środowiska uruchomieniowego .netcore i kompilację kodu programu przy użyciu polecenia dotnet, a także zaznajomienie się z możliwościami edytora Visual Studio Code i porównanie tego rozwiązania z platformą .NET i narzędziem Visual Studio
2) Projektowanie i implementację klas/interfejsów, w tym zastosowanie wybranych wzorców projektowych, i pokazanie w ten sposób podobieństw ze składnią języka JAVA.
3) Porównanie słów kluczowych struct i class. Przegląd najważniejszych typów podstawowych w tym kontekście. Zbadanie aspektów wydajnościowych związanych z tworzeniem obiektów na stosie (struct) i stercie (class). Implementacja konstruktora domyślnego w obu tych przypadkach. Wartość null i operatory (?.) i ??
5) Nowe elementy klas dostępne w języku C#: właściwości (properties), wydarzenia (events), indeksery (indexers), delegacje (delegates)
4) Rozszerzanie klas zamkniętych (sealed class) o dodatkowe metody w oparciu o mechanizm Extensions Methods na przykładzie klasy String. Wykorzystanie klas zadeklarowanych ze słowem partial.
5) Wykorzystanie możliwości oferowanych przez konstruktor statyczny (przykład: licencjonowanie oprogramowania).
6) Zastosowanie typów generycznych
7) Zastosowanie wyrażeń lamba i rozszerzeń wprowadzonych w standardzie 6.0 do refaktoryzacji kodu napisanego w standardzie 5.0
8) LINQ i kolekcje
9) Zarządzanie dokumentami xml
10) Programowanie dynamiczne: słowo kluczowe dynamic, porównanie z typem object
11) Programowanie wielowątkowe: thread, threadpool, wzorzec Task

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 90 h
Module ECTS credits 3 ECTS
Preparation for classes 56 h
Participation in laboratory classes 30 h
Examination or Final test 4 h
Additional information
Method of calculating the final grade:

Ocena końcowa obliczana jest na podstawie testu praktycznego dotyczącego zadań wykonywanych na laboratorium i kolokwium według wzoru:
OK = 0.5 * ocena z kolokwium (testu) + 0.5 * ocena z laboratorium.

Oceny ustalane będą zgodnie ze skalą ocen obowiązującą w regulaminie AGH, przyporządkowującą procent opanowania materiału konkretnej ocenie (Par.13, pkt.1).

Prerequisites and additional requirements:

Wymagana jest praktyczna znajomość programowania obiektowego (C++, Java).

Recommended literature and teaching resources:

- Professional C# 6 and .NET Core 1.0, Christian Nagel,
- C# 6.0. Kompletny przewodnik dla praktyków (Essential C# 6.0), Mark Michaelis, Eric Lippert
- C# 6.0 w pigułce (C# 6.0 in a Nutshell), Joseph Albahari, Ben Albahari
- C# 6.0 Cookbook, Jay Hilyard, Stephen Teilhet
- https://msdn.microsoft.com/en-us/library/kx37x362.aspx

Scientific publications of module course instructors related to the topic of the module:

Prowadzący zajęcia był odpowiedzialny za rozwój oprogramowania HERIe napisanego w języku C# w okresie 12.2016 – 12.2017.

Materiały konferencyjne – IIC 2018 Turin Congress
HERIe – a web-based decision-supporting tool for assessing risk of physical damage using various failure criteria
Arkadiusz Kupczak, Mariusz Jędrychowski, Marcin Strojecki, Leszek Krzemień, Łukasz Bratasz, Michał Łukomski, Roman Kozłowski

Additional information:

Sposób i tryb wyrównania zaległości powstałych wskutek nieobecności studenta
na zajęciach laboratoryjnych:
- usprawiedliwiona nieobecność wymaga od studenta samodzielnego (z możliwością wykorzystania godzin konsultacji) opanowania przerabianego na tych zajęciach materiału,
- nieusprawiedliwiona nieobecność na więcej niż jednych zajęciach oznacza brak
możliwości zaliczenia ćwiczeń laboratoryjnych.