Detail předmětu
Seminář C#
ICS Ak. rok 2023/2024 letní semestr 4 kredity
Syntaxe jazyka C#. Objektová orientace. Objektový model, objekty, třídy. Visual Studio. Ladění a profilace. Návrhové vzory. Grafické uživatelská rozhraní, WPF. Asynchronní programování - procesy, vlákna, úlohy. Dotazování nad persistentními daty pomocí LINQ a ORM Entity Framework.
Garant předmětu
Koordinátor předmětu
Jazyk výuky
Zakončení
Rozsah
- 26 hod. seminář
- 13 hod. projekty
Bodové hodnocení
- 50 bodů projekty
Zajišťuje ústav
Cvičící
Stránky předmětu
Hlavní zdroje:
- https://github.com/nesfit/ICS
- https://www.youtube.com/playlist?list=PL_eb8wrKJwYvXrooXPwA4FQ5n2UHrw0UA
Užitečné zdroje
Co se děje v .NET a co se chystá
- .NET Conf - konference, kde se představuje nová verze .NET (jednou ročně - listopad)
- Microsoft Build - největší konference pro vývojáře od Microsoftu, hromada novinek (jednou ročně - květen)
- .NET Blog - blog s high-level zprávami o aktuálních novinkách (cca 10-15 článků za měsíc)
- Themes of .NET - .NET roadmap - podrobný přehled toho, na čem se pracuje a kdy se to plánuje
- Leomaris Reyes - Blog zaměřený na .NET MAUI
- Scott Hanselman - Různorodá témata, většinou zaměrená na Microsoft technologie. Autor je zkušený speaker z řad Microsoftu.
- Steve Gordon - .NET, web development, cloud, low-level stuff...
- Jiří Činčura - performance, Entity Framework, databázy, novinky v .NET...
- Robert Haken - Blazor, webový vývoj, performance
- @davidfowl - David Fowler, jeden z hlavních lidí ve vývoji .NET a ASP .NET
- @DamianEdwards - Damian Edwards, jeden z hlavních lidí ve vývoji .NET a ASP .NET
- @davidortinau - David Ortinau, jeden z hlavních lidí v .NET MAUI
- @MadsTorgersen - Mads Torgersen, hlavní člověk odpovědný za C#
- @JamesNK - James Newton-King, autor NewtonSoft.Json, pracuje na gRPC integraci v .NET, (de)serializace, performance...
- @jaredpar - Jared Parsons, pracuje na C# kompilátoru a návrhu jazyka
- @TheCodeTraveler - Brandon Minnick, píše a točí hlavně o .NET MAUI
- @troyhunt - Troy Hunt, záměr na bezpečnost, autor projektu https://haveibeenpwned.com
- @dotnetmeme - memes ze světa .NET (ne od Microsoftu)
- Nick Chapsas - novinky v .NET, performance, webový vývoj
- James Montemagno - novinky v .NET, .NET MAUI
- Gerald Versluis - .NET MAUI
- .NET Community Standups - veřejně dostupné streamy z meetingů mezi vývojářema v Microsoftu ohledně toho, co se aktuálně děje a na čem se pracuje
- .NET Rocks - 2 hodně zkušení hostitelé - Richard Campbell a Carl Fralkin, 1 host, různá témata (hlavně) z .NET světa
Cíle předmětu
Cílem je naučit studenty objektově orientované programování v jazyce C#, principy návrhu desktopových aplikací s GUI dle standardů používaných v praxi.
Studenti se seznámí s moderními přístupy při vývoji software na platformě .NET s použitím jazyka C# při vývoji desktopové aplikace s GUI. Důraz je kladen na použití návrhových vzorů a architektury při návrhu software. Persistence dat bude zajištěna pomocí SQL databáze spolu s využitím objektově relačního mapování, které je hojně užíváno v objektově orientovaných jazycích při práci s relačními databázemi. Prací v týmu se studenti naučí vzájemné koordinaci a správnému přístupu k softwarovému vývoji. V kurzu si studenti osvojí dobré programátorské praktiky uplatnitelné v komerčním vývoji. Vybaveni nezbytnou znalostí základních návrhových vzorů a jejich implementací, vzhledem ke specifickým rysům jazyka C# a běžně používaných knihoven, budou absolventi připraveni na započetí své kariéry coby .NET vývojáře.
Proč je předmět vyučován
Předmět si klade za cíl zvýšit uplatnění studentů coby budoucích .NET programátorů. Jazyk C# se dlouhodobě dostává do popředí s popularizací .NET platformy díky multiplatformnosti. Jedná se o moderní jazyk s vysokou úrovní abstrakce, který není jen objektový, ale obsahuje i prvky funkcionálního programování. Studenti si během kurzu vyzkouší práci v týmu na projektu, který vyžaduje nejen funkční kód, ale dbá i na správný návrh, týmovou spolupráci při verzování kódu a klade důraz na použití návrhových vzorů. Po absolvování jsou studenti schopni samostatně vytvořit desktopovou aplikaci s připojením do databáze, za kterou se nebudou muset v budoucnu stydět.
Doporučené prerekvizity
- Základy programování (IZP)
Požadované prerekvizitní znalosti a dovednosti
Základní znalosti imperativního programování (jazyk C), algoritmizace a verzování kódu.
Technické vybavení
- Visual Studio Comunity / Rider / VS Code
- [Resharper]
Literatura studijní
- GAMMA, Erich. Design patterns: elements of reusable object-oriented software. Pearson Education India, 1995.
- BISHOP, J. (2007). C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems. " O'Reilly Media, Inc.".
- ALBAHARI, Joseph; ALBAHARI, Ben.; C# 7.0 in a Nutshell: The Definitive Reference. O'Reilly Media, Inc., 2017.
Osnova seminářů
- Úvod do jazyka C# a platformy .NET, základní syntaxe jazyka, instalace a představení Visual Studia.
- Úvod do objektově orientovaného programování a pokročilé konstrukce v jazyce C# - výjimky, události, delegáty, lambda výrazy a generika.
- Představení základních knihovních funkcí (BCL) a dotazování za pomocí vestavěného nástroje LINQ nad datovými zdroji (kolekcemi, XML, MSSQL). (Ing. Tibor Jašek, MSP)
- Propojení aplikace s databází pro zajištění persistence pomocí ORM rozšíření Entity Framework s návrhovými vzory UnitOfWork a Repository.
- Psaní čistého, udržovatelného kódu s respektováním Clean Code, S.O.L.I.D. zásad. Ukázky refaktorizace a práce s legacy kódem. (Martin Dybal, Microsoft MVP)
- Návrhový vzor Model-View-ViewModel (MVVM) a architektura desktopových aplikací. Mapování databázových entit na modelové třídy. (Bc. Michal Mrnuštík, MSP)
- Continous Integration v prostředí Azure DevOps a testování aplikací - smoke, unit, integrační, UI a akceptační testy. (Ing. Jiří Pokorný, Solarwinds)
- Základní koncepty tvorby uživatelského rozhraní pomocí Windows Presentation Foundation (WPF).
- Návrhové vzory pro práci s vytvářením, strukturováním a chováním - Gang of Four (GoF) v kontextu C#. (Martin Dybal, Microsoft MVP)
- WPF za pomoci MVVM, tvorba komponenty a stylování aplikací. (Ing. Roman Jašek, Microsoft MVP)
- Nástroje pro správu paměti a profilaci výkonu. (Velikonoční pondělí - odpadá)
- Paralelní a asynchronní programování, proces, vlákno, úloha z pohledu C# a použitého frameworku .NET.
- Multiplatformní programování .NET Standard, .NET Core. Konteinerizace aplikací pomocí Docker a jejich orchestrace Kubernetes, Docker Swarm.
Osnova ostatní - projekty, práce
Průběžná kontrola studia
- Odevzdání projektu je rozdělené do tří částí během semestru.
- Každá část je samostatně hodnocena a student obdrží zpětnou vazbu ke své práci, kterou zapracuje do následující fáze.
- Bodové rozdělení je dle fází: 20, 30, 50 bodů.
- Výsledný projekt bude hodnocený v třetí fázi při obhajobě.
- Vypracování týmového projektu v rozsahu 5 členů v prostředí Azure DevOps.
- Cílem je vytvořit plně funkční desktopovou aplikaci, podle OOP principů, komunikující s databází.
- V hodnocení projektu bude zohledněno správné použití S.O.L.I.D, zásad CleanCode, návrhových vzorů a architektury aplikace.
- V případě řádně ohlášené a doložené překážky ve studiu může student požádat o odložení termínu odevzdání u kterékoliv části projektu.
Podmínky zápočtu
- Získat nejméně 1 bod z každého odevzdání
- Získat nejméně 50% bodů z projektu
Způsob kontaktu s vyučujícím
Oficiálním kontaktním kanálem je email odeslaný z fakultní adresy vyučujícím dle karty předmětu.
Rozvrh
Den | Typ | Týdny | Místn. | Od | Do | Kapacita | PSK | Skup | Info |
---|---|---|---|---|---|---|---|---|---|
St | ostatní | 2024-05-22 | C304 | 08:00 | 08:15 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 08:15 | 08:30 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 08:30 | 08:45 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 08:45 | 09:00 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 09:00 | 09:15 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 09:15 | 09:30 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 09:30 | 09:45 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 09:45 | 10:00 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 10:00 | 10:15 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 10:15 | 10:30 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 10:30 | 10:45 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 10:45 | 11:00 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 12:00 | 12:15 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 12:15 | 12:30 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 12:30 | 12:45 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 12:45 | 13:00 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 13:00 | 13:15 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 13:15 | 13:30 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 13:30 | 13:45 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 13:45 | 14:00 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 14:00 | 14:15 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 14:15 | 14:30 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 14:30 | 14:45 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 14:45 | 15:00 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 15:00 | 15:15 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 15:15 | 15:30 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 15:30 | 15:45 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 15:45 | 16:00 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 16:00 | 16:15 | Odevzdání 3 - Obhajoba | |||
St | ostatní | 2024-05-22 | C304 | 16:15 | 16:30 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 08:45 | 09:00 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-02 | C228 | 09:00 | 09:15 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 09:00 | 09:15 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-02 | C228 | 09:15 | 09:30 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 09:15 | 09:30 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-02 | C228 | 09:30 | 09:45 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 09:30 | 09:45 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-02 | C228 | 09:45 | 10:00 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 09:45 | 10:00 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-02 | C228 | 10:00 | 10:15 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 10:00 | 10:15 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-02 | C228 | 10:15 | 10:30 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 10:15 | 10:30 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-02 | C228 | 10:30 | 10:45 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 10:30 | 10:45 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-02 | C228 | 10:45 | 11:00 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 10:45 | 11:00 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 12:00 | 12:15 | Odevzdání 3 - Obhajoba | |||
Čt | seminář | 1., 2., 4., 10., 11. výuky | E112 | 12:00 | 13:50 | 294 | 2BIA 2BIB 3BIT | xx | Pluskal |
Čt | seminář | 3., 8., 9., 13. výuky | E112 | 12:00 | 13:50 | 294 | 2BIA 2BIB 3BIT | xx | Jašek |
Čt | seminář | 5., 12. výuky | E112 | 12:00 | 13:50 | 294 | 2BIA 2BIB 3BIT | xx | Dybal |
Čt | seminář | 2024-02-08 | E104 E105 | 12:00 | 13:50 | 294 | 2BIA 2BIB 3BIT | xx | Pluskal |
Čt | seminář | 2024-03-14 | E112 | 12:00 | 13:50 | 294 | 2BIA 2BIB 3BIT | xx | Tichý |
Čt | seminář | 2024-03-21 | E112 | 12:00 | 13:50 | 294 | 2BIA 2BIB 3BIT | xx | Mrnuštík |
Čt | ostatní | 2024-05-16 | C304 | 12:15 | 12:30 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 12:30 | 12:45 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 12:45 | 13:00 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 13:00 | 13:15 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 13:15 | 13:30 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 13:30 | 13:45 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 13:45 | 14:00 | Odevzdání 3 - Obhajoba | |||
Čt | cvičení | 1., 2., 4., 11. výuky | D0207 | 14:00 | 15:50 | 300 | 2BIA 2BIB 3BIT | xx | Pluskal Kapacita místností je 90, kapacita 300 nastavena pouze kvůli viditelnosti v rozvrhu. |
Čt | cvičení | 8., 9. výuky | D0207 | 14:00 | 15:50 | 300 | 2BIA 2BIB 3BIT | xx | Jašek Kapacita místností je 90, kapacita 300 nastavena pouze kvůli viditelnosti v rozvrhu. |
Čt | ostatní | 2024-05-16 | C304 | 14:00 | 14:15 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 14:15 | 14:30 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 14:30 | 14:45 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 14:45 | 15:00 | Odevzdání 3 - Obhajoba | |||
Čt | ostatní | 2024-05-16 | C304 | 15:00 | 15:15 | Odevzdání 3 - Obhajoba |
Zařazení předmětu ve studijních plánech
- Program BIT, 2. ročník, povinně volitelný skupina T
- Program BIT (anglicky), 2. ročník, povinně volitelný skupina T
- Program IT-BC-3, obor BIT, 2. ročník, povinně volitelný skupina T