Wprowadzenie
Kurs obejmuje naukę techniki programowania na podstawie języka C# firmy Microsoft. Uczeń ćwiczy umiejętności programowania na podstawie zadań dla zawodowych programistów. Dodatkowo, uczestnik poznaje podstawy programowania interfejsu użytkownika oraz zarządzanie bazami danych. Zajęcia z gier komputerowych prowadzone są w języku C#.
Podczas kursu poznamy przydatne narzędzia AI, które wspomogą naszą pracę i naukę.
Program kursu
1Lekcja 1. Wstęp do C#
Celem lekcji jest stworzenie pierwszego programu w C# oraz zapoznanie ze środowiskiem Visual Studio Code.
2Lekcja 2. Zmienne i stałe
Celem lekcji jest przedstawienie pojęcia zmiennych oraz pokazanie najczęściej
stosowanych typów zmiennych.
3Lekcja 3. Operacje matematyczne
Celem lekcji jest przedstawienie pojęcia stałych oraz pokazanie najczęściej
stosowanych operacji matematycznych.
4Lekcja 4. Operatory logiczne i rzutowanie
Celem lekcji jest przedstawienie operatorów matematycznych i logicznych. Drugim
celem jest przedstawienie inkrementacji i dekrementacji w języku C#.
5Lekcja 5. Instrukcja warunkowa IF cz. I
Celem lekcji jest przedstawienie instrukcji warunkowej IF.
6Lekcja 6. Instrukcja warunkowa IF cz. II
Celem lekcji jest utrwalenie informacji o instrukcji warunkowej IF oraz zrozumienie działania klasy Random.
7Lekcja 7. Switch
Celem lekcji jest przedstawienie instrukcji warunkowej Switch.
8Lekcja 8. Dobre praktyki programistyczne
Celem zajęć jest nauka testowania i naprawiania swojego kodu oraz efektywne wykorzystywanie IDE w celu ułatwienia pracy.
9Lekcja 9. Wstęp do pętli
Celem lekcji jest zapoznanie się z pojęciem pętli.
10Lekcja 10. Pętle
Celem lekcji jest dalsze zgłębianie tematu pętli.
11Lekcja 11. Tablice
Celem lekcji jest omówienie zastosowania i używania tablic.
12Lekcja 12. Metody cz. I
Celem lekcji jest wprowadzenie do dzielenia kod na części i przedstawienie metod.
13Lekcja 13. Metody cz. II
Celem lekcji utrwalenie wiedzy o metodach na praktycznym przykładzie gry.
14Lekcja 14. Powtórzenie materiału
Celem lekcji jest podsumowanie zdobytych w trakcie semestru wiadomości.
15Lekcja 15. Brick Game
Celem lekcji jest wykorzystanie dotychczas zdobytej wiedzy podczas przygotowywania gry w konsoli systemowej, inspirowanej grami znanych z konsol Brick Game.
16Lekcja 16. Brick Game. Kontynuacja
Celem lekcji jest ulepszenie gry z poprzednich zajęć. Ulepszenie będzie polegać między innymi na przyśpieszaniu gry, boostach możliwych do zebrania, implementacji mechaniki nitro.
17Lekcja 17. Zgadywanka
Celem lekcji jest utrwalenie wiedzy na praktycznym przykładzie gry zgadywanka.
18Lekcja 18. Chatbot z NPC
Celem lekcji utrwalenie wiedzy na praktycznym przykładzie rozmowy z chatbotem o
tematyce danej gry na wzór NLP. Stworzymy dla AI własną bazę pytań i odpowiedzi.
19Lekcja 19. Przetwarzanie obrazu
Celem lekcji jest stworzenie programu przetwarzającego gotowe obrazy, z
wykorzystaniem prostych filtrów macierzowych.
20Lekcja 20. Wstęp do OOP
Celem lekcji jest zapoznanie uczestników z podstawowymi zagadnieniami, koncepcją programowania obiektowego oraz pracą w Solution Eksplorerze.
21Lekcja 21. Dziedziczenie
Celem lekcji jest pogłębienie wiedzy w tematyce programowania obiektowego.
Przedstawione zostaną zagadnienia takie jak dziedziczenie, nadpisywanie metod oraz elementy statyczne w programowaniu.
22Lekcja 22. Dziedziczenie cd., elementy statyczne, listy
Celem lekcji jest powtórka i utrwalenie materiału z podstaw programowania
obiektowego oraz poznanie elementów takich jak przeładowanie metod, pętla
foreach oraz listy.
23Lekcja 23. Powtórka OOP gra RPG
Celem lekcji jest powtórka i utrwalenie materiału z podstaw programowania obiektowego.
24Lekcja 24. Wstęp do Raylib
Celem lekcji jest zapoznanie uczestników z instalacją i konfiguracją projektów
używających Raylib na podstawie implementacji projektu ze spadającą piłeczką.
25Lekcja 25. Gra Snake część 1
Celem lekcji jest rozpoczęcie pracy nad projektem popularnej gry Snake, w której
będziemy tworzyć podstawową mechanikę gry, implementować ruch węża,
generowanie jedzenia oraz obsługę kolizji.
26Lekcja 26. Gra Snake część 2
Celem lekcji jest kontynuacja pracy nad projektem popularnej gry Snake.
27Lekcja 27. Gra Flappy Bird część 1
Celem lekcji jest rozpoczęcie pracy nad grą Flappy Bird. Uczniowie nauczą się, jak
kontrolować ruchy postaci, jak generować przeszkody oraz jak zliczać punkty, aby
stworzyć w pełni funkcjonalną grę.
28Lekcja 28. Gra Flappy Bird część 2
Celem lekcji jest kontynuacja pracy nad grą Flappy Bird.
29Lekcja 29. Zadania samodzielne
Celem lekcji jest wykorzystanie wiedzy z poprzednich lekcji w procesie
rozwiązywania zadań samodzielnych.
30Lekcja 30. Space Invaders część 1
Celem lekcji jest rozpoczęcie pracy nad grą Space Invaders.
31Lekcja 31. Space Invaders część 2
Celem lekcji jest kontynuacja pracy nad grą Space Invaders. W tej części zajmiemy
się dodaniem obcych statków kosmicznych, ich ruchem i kolizjami z graczem i
pociskami.
32Lekcja 32. Pong
Celem lekcji jest nauczenie się pracy z kodem napisanym przez inne osoby oraz
naprawienie projektu gry Pong.
33Lekcja 33. Gra w życie
Na zajęciach przygotujemy własną implementację Gry w
życie. Jest to symulacja, w której nie ma typowego gracza, a jedyny wpływ na grę
ma się podczas ustalania warunków początkowych. W symulacji biorą udział
komórki, które ewoluują i tworzą różne struktury.
34Lekcja 34. Gra w życie. Kontynuacja
Na zajęciach ulepszymy nasz projekt Gry w życie. Poprawimy działanie programu
oraz dodamy różne sposoby na uruchomianie symulacji. Dzięki temu będziemy
mogli przetestować działanie z góry przygotowanego organizmu.
35Lekcja 35. Sposoby przechowywania danych
Celem lekcji jest omówienie sposobów przechowywania danych w języku C#. Przedstawione zostaną koncepcje rekordów, słowników, kolejek oraz zbiorów.
36Lekcja 36. Bazy danych w C#
Celem lekcji jest poruszenie tematu baz danych oraz wykonanie komend SQL przy pomocy
języka programowania C#. Wiedza ta będzie wykorzystywana przy późniejszym tworzeniu
aplikacji webowej.
37Lekcja 37. Bazy danych w C# cz. II
Celem lekcji jest dalsze omówienie tematu baz danych z użyciem języka C#. Wiedza ta
będzie wykorzystywana przy późniejszym tworzeniu aplikacji webowej.
38Lekcja 38. LINQ
Celem lekcji jest omówienie LINQ w języku programowania C#. Poznamy też nowe operacje,
które można wykonać do uzyskania elementów z bazy danych.
39Lekcja 39. Testy
Celem lekcji jest omówienie w jaki sposób pisze się testy w programowaniu na przykładach
testów jednostkowych i integracyjnych.
40Lekcja 40. LeetCode oraz HackerRank
Celem lekcji jest omówienie stron z zadaniami programistycznymi oraz wspólne zrobienie
tych zadań.
41Lekcja 41. LeetCode oraz HackerRank część 2
Dalsze wykonywanie zadań. Pokazanie i wspólne wykonanie zadań, które mogą występować na rozmowach kwalifikacyjnych w korporacjach.
42Lekcja 42. Interfejsy i klasy abstrakcyjne
Celem lekcji jest omówienie różnic między interfejsami a klasami abstrakcyjnymi w C# oraz
pokazanie, jak je właściwie stosować w złożonych projektach. Nauczymy się
implementować interfejsy i tworzyć klasy abstrakcyjne, korzystając z dobrych praktyk
projektowych.
43Lekcja 43. Singleton
Celem lekcji jest zrozumienie, czym są wzorce projektowe i dlaczego są istotne w
programowaniu. Poznamy zasady działania i zastosowanie wzorca Singleton.
44Lekcja 44. Odczytywanie danych z plików
Celem lekcji jest nauczenie się metod oraz bibliotek w C# służących do odczytu danych z
różnych formatów plików (PDF, JSON). W trakcie zajęć omówione zostaną aspekty obsługi
wyjątków przy obsłudze uszkodzonych plików oraz praktyki walidacji poprawności danych.
45Lekcja 45. Sztuczna inteligencja w C#, omówienie ML.NET część 1
W tej lekcji poznajemy podstawowe pojęcia sztucznej inteligencji i uczenia maszynowego w
kontekście języka C# oraz biblioteki ML.NET. Uczymy się także, jak w prosty sposób
wczytywać dane, trenować model i wykonywać podstawowe przewidywania w oparciu o
realne przykłady (np. klasyfikację ulubionych filmów).
46Lekcja 46. Sztuczna inteligencja w C#, omówienie ML.NET część 2
W tej lekcji poznamy podstawowe miary oceny jakości modelu (accuracy, precision, recall).
Nauczymy się dzielić dane na zbiór treningowy i testowy. Wzbogacimy model o nowe cechy
(np. rok wydania, ocena użytkowników) i zaobserwujemy wpływ tych zmian na wyniki.
Dodamy interakcję z użytkownikiem w konsoli.
47Lekcja 47. Kino Gigant część 1
Celem lekcji jest zaprojektowanie i zaimplementowanie aplikacji konsolowej do rezerwacji
miejsc w kinie, która obejmuje tworzenie seansów, zarządzanie miejscami i obsługę
rezerwacji. Nauczymy się pisać klasy odzwierciedlające logikę biznesową i przechowywać
informacje o rezerwacjach w pliku lub prostej bazie danych.
48Lekcja 48. Kino Gigant część 2 oraz wstęp do Unity
Celem lekcji jest zaprojektowanie i zaimplementowanie aplikacji konsolowej do rezerwacji
miejsc w kinie, która obejmuje tworzenie seansów, zarządzanie miejscami i obsługę
rezerwacji. Nauczymy się pisać klasy odzwierciedlające logikę biznesową i przechowywać
informacje o rezerwacjach w pliku. Poznamy silnik graficzny Unity.

