Kompletne materiały dydaktyczne do nauki Programowania Obiektowego w C# na poziomie uniwersytetu/szkoły, od podstaw po zaawansowane koncepty, aż do praktycznego zastosowania w ASP.NET Core.
Projekt zawiera szczegółową teorię, praktyczne przykłady kodu, diagramy UML, testy jednostkowe, zadania ćwiczeniowe i rzeczywiste studia przypadków.
Materiały podzielone są na 14 modułów tematycznych, każdy obejmujący 6-12 zagadnień szczegółowych:
csharp-programming/
├── README.md (ten plik)
├── LICENSE.md
└── src/
├── 01-klasy/ # Klasy i Obiekty – Fundament OOP
├── 02-konstruktory/ # Konstruktory i Inicjalizacja
├── 03-wlasciwosci/ # Właściwości i Indeksatory
├── 04-statyczne/ # Składowe Statyczne
├── 05-dziedziczenie/ # Dziedziczenie
├── 06-polimorfizm/ # Polimorfizm
├── 07-interfejsy_abstrakcje/ # Interfejsy i Abstrakcja
├── 08-kolecje_generyczne/ # Generyki i Kolekcje
├── 09-delegacje_zdarzenia/ # Delegacje i Zdarzenia
├── 10-przeciazenie_operatorow/ # Przeciążanie Operatorów
├── 11-async/ # Programowanie Asynchroniczne
├── 12-serializacja/ # Serializacja
├── 13-refleksja_atrybuty/ # Refleksja i Atrybuty
├── 14-testy_jednostkowe/ # Testy Jednostkowe i TDD
└── A01-aspnet_core/ # ASP.NET Core – Praktyczne Zastosowanie
Każdy temat zawiera:
- 📄 README.md – Szczegółowa dokumentacja (2000-3500 słów)
- 💻 code/ – Projekt .NET 9.0 z kodem + testami xUnit
- 📊 diagrams/ – Diagramy Mermaid UML
- 📝 tasks/ – Zadania z pełnymi rozwiązaniami
git clone https://github.com/tborzyszkowski/csharp-programming.git
cd csharp-programmingcode .cd src/01-klasy/_01_oop_fundamentals/code/
dotnet runPoniższy diagram pokazuje zalecaną kolejność nauki oraz zależności między modułami. Strzałka A --> B oznacza „A jest wymagane przed B”.
graph TD
M1["Moduł 1: Klasy i Obiekty"]
M2["Moduł 2: Konstruktory"]
M3["Moduł 3: Właściwości"]
M4["Moduł 4: Statyczne"]
M5["Moduł 5: Dziedziczenie"]
M6["Moduł 6: Polimorfizm"]
M7["Moduł 7: Interfejsy i Abstrakcja"]
M8["Moduł 8: Generyki i Kolekcje"]
M9["Moduł 9: Delegacje i Zdarzenia"]
M10["Moduł 10: Przeciążanie Operatorów"]
M11["Moduł 11: Async"]
M12["Moduł 12: Serializacja"]
M13["Moduł 13: Refleksja i Atrybuty"]
M14["Moduł 14: Testy Jednostkowe i TDD"]
A01["Moduł A01: ASP.NET Core"]
M1 --> M2
M1 --> M3
M1 --> M4
M1 --> M8
M2 --> M5
M3 --> M5
M3 --> M10
M5 --> M6
M5 --> M7
M6 --> M7
M6 --> M9
M7 --> M13
M7 --> A01
M7 --> M14
M8 --> M11
M9 --> M11
M8 --> M12
M1 --> A01
M14 --> A01
Ścieżka fundamentalna (obowiązkowa): Moduł 1 → 2 → 3 → 5 → 6 → 7
Ścieżka zaawansowana (po fundamentach): Moduły 8, 9, 11, 12, 13 – można je studiować równolegle, o ile spełnione są ich zależności
Ścieżka opcjonalna: Moduł 4 (statyczne) i Moduł 10 (operatory) można studiować w dowolnym momencie po Module 1/3
Ścieżka jakościowa: Moduł 14 (testy i TDD) – wymaga Modułu 7, warto stosować równolegle z każdym kolejnym modułem
Ścieżka praktyczna (podsumowanie): Moduł A01 – wymaga zrozumienia Modułów 1-7
Każda sekcja modułu poniżej zawiera pola Wymaga i Prowadzi do z bezpośrednimi linkami do powiązanych modułów.
Cel: Zrozumienie fundamentalnych koncepcji programowania obiektowego.
Moduł obejmuje 9 tematów:
- Podstawowe pojęcia OOP (abstrakcja, enkapsulacja, dziedziczenie, polimorfizm)
- Definicja i struktura klasy
- Tworzenie i używanie obiektów
- Słowo kluczowe
this - Modyfikatory dostępu i enkapsulacja
- Klasy częściowe (partial classes)
- Metody częściowe (partial methods)
- Struktury vs klasy (value types)
- Diagramy UML – notacja i czytanie
Dla kogo: Wszyscy początkujący w OOP. Stanowi fundament dla wszystkich pozostałych modułów.
Wymaga: – (punkt startowy, brak wymagań wstępnych)
Prowadzi do: Wszystkie kolejne moduły opierają się na tym module.
Co jest tu wartościowe: Solidne zrozumienie podstaw OOP – bez tego trudno będzie pracować z pozostałymi koncepcjami. Moduł zawiera rzeczywiste diagramy UML pokazujące relacje między klasami.
Cel: Opanowanie mechanizmów tworzenia i inicjalizacji obiektów.
Moduł obejmuje 10 tematów:
- Konstruktory – podstawy, parametry
- Łańcuchowe wywołanie konstruktorów (
this()) - Inicjalizatory obiektów
- Kolejność inicjalizacji (pola, konstruktor, właściwości)
- Konstruktory struktur
- Destruktory i garbage collection
- Wprowadzenie do Design Patterns
- Wzorzec Prototypu (Prototype Pattern)
- Kod zarządzany vs niezarządzany (IDisposable, using)
- Nowoczesne C# (records, init properties, primary constructors)
Dla kogo: Po Modułu 1. Niezbędne dla każdego, kto pracuje z tworzeniem obiektów.
Wymaga: Moduł 1: Klasy i Obiekty
Prowadzi do: Moduł 5: Dziedziczenie
Co jest tu wartościowe: Poznasz różne sposoby inicjalizacji i nauczysz się zaawansowanych patternów. Szczególnie cenny jest temat destruktorów i IDisposable – częsta przyczyna wycieków zasobów.
Cel: Opanowanie właściwości (properties) i indeksatorów – klucza do dobrze zaprojektowanego kodu.
Moduł obejmuje 7 tematów:
- Właściwości vs pola
- Auto properties (
{ get; set; }) - Walidacja właściwości
- Indeksatory – dostęp do danych jak tablica
readonlyvsconst- Init properties (C# 9+) – niezmienność
- Nullable reference types – bezpieczeństwo typów
Dla kogo: Narzędzie codzienne dla każdego C# developera. Niezbędne przed Modułem 5 (dziedziczenie).
Wymaga: Moduł 1: Klasy i Obiekty
Prowadzi do: Moduł 5: Dziedziczenie, Moduł 10: Przeciążanie Operatorów
Co jest tu wartościowe: Pokażemy jak prawidłowo enkapsulować dane i chronić invarianty klasy. Nowocześni praktycy C# powinni znać init properties i nullable reference types.
Cel: Zrozumienie statycznych pól, metod i wzorca Singleton.
Moduł obejmuje 7 tematów:
- Pola statyczne – zmienne dzielane między instancje
- Metody statyczne – narzędzia utility
- Konstruktory statyczne – inicjalizacja
- Klasy statyczne – organizacja kodu
- Metody rozszerzające (extension methods) – dodawanie funkcjonalności
- Wzorzec Singleton – gwarantowanie jednej instancji
- Static properties z Lazy – nowoczesna inicjalizacja
Dla kogo: Średniozaawansowani. Niezbędny do zrozumienia wspólnych zasobów i patternów.
Wymaga: Moduł 1: Klasy i Obiekty
Prowadzi do: Moduł 6: Polimorfizm (wzorce Singleton wracają w kontekście Factory)
Co jest tu wartościowe: Extension methods to cenna umiejętność w C#. Singleton pattern należy do klasyki – poznaj go na praktycznych przykładach.
Cel: Opanowanie dziedziczenia – jednego z czterech filarów OOP.
Moduł obejmuje 7 tematów:
- Podstawowe pojęcia dziedziczenia (klasa bazowa, pochodna)
- Modyfikatory dostępu w kontekście dziedziczenia
- Konstruktory klas pochodnych (
basekeyword) overridevsnew– przesłonięcie vs ukrycie- Metody wirtualne (
virtual) – polimorfizm - Klasy abstrakcyjne – umowy dla podklas
- Sealed classes – zapobieganie dalszemu dziedziczeniu
Dla kogo: Krytyczny moduł po Modułu 1-3. Bez niego nie zrozumiesz polimorfizmu.
Wymaga: Moduł 1: Klasy i Obiekty, Moduł 2: Konstruktory, Moduł 3: Właściwości
Prowadzi do: Moduł 6: Polimorfizm, Moduł 7: Interfejsy i Abstrakcja
Co jest tu wartościowe: Zrozumienie relacji is-a i prawidłowego używania override vs new. Abstract classes to narzędzie do projektowania elastycznych architektur.
Cel: Opanowanie polimorfizmu i wzorców projektowych opartych na metodach wirtualnych.
Moduł obejmuje 6 tematów:
- Funkcje wirtualne – wstęp do polimorfizmu
- Praktyczne przykłady – payment gateway (real-world case study)
virtualvsnew– pułapki i best practices- Metody klasy Object (ToString, Equals, GetHashCode)
- Adapter Pattern + Factory Pattern – praktyczne wzorce
- Default interface members (C# 8.0+) – nowoczesne interfejsy
Dla kogo: Po Modułu 5. Fundamentalny dla zrozumienia nowoczesnych architektur.
Wymaga: Moduł 5: Dziedziczenie
Prowadzi do: Moduł 7: Interfejsy i Abstrakcja, Moduł 9: Delegacje i Zdarzenia
Co jest tu wartościowe: Payment gateway case study pokazuje jak rzeczywiście stosować polimorfizm w prawdziwych projektach. Nauczysz się implementować Adapter i Factory patterns.
Cel: Opanowanie interfejsów i abstrakcji – kluczy do słabo sprzężonego kodu.
Moduł obejmuje 7 tematów:
- Klasy abstrakcyjne – wstęp
- Metody abstrakcyjne – umowy
- Sealed keyword – finalizacja hierarchii
- Interfejsy – wprowadzenie i dependency injection
- Jawna implementacja interfejsu – zaawansowane techniki
- Konwersje i operatory castingu (
is,as, pattern matching) - Zaawansowane interfejsy (C# 8.0+, 11.0+ static abstract)
Dla kogo: Po Modułu 5-6. Niezbędny do pisania testowalnego kodu i architektur SOLID.
Wymaga: Moduł 5: Dziedziczenie, Moduł 6: Polimorfizm
Prowadzi do: Moduł 13: Refleksja i Atrybuty, Moduł 14: Testy Jednostkowe i TDD, Moduł A01: ASP.NET Core
Co jest tu wartościowe: Interfejsy to podstawa dependency injection i testowania. Nauczysz się projektować elastyczne systemy, gdzie komponenty nie zależą od konkretnych implementacji.
Cel: Opanowanie typów generycznych i nowoczesnych kolekcji.
Moduł obejmuje 7 tematów:
- Metody i klasy generyczne – wariancja typów
- Ograniczenia typów generycznych (
where) - IEnumerable i IEnumerator – iteracja
- Interfejsy porównania (IComparable, IComparer, IEquatable)
- Przegląd kolekcji – List, Dictionary, Queue, Stack, HashSet
- LINQ – wprowadzenie – Query Syntax, Method Syntax, lazy evaluation
- LINQ – zaawansowane techniki – Aggregate, SelectMany, Join, Expression Trees
Dla kogo: Średniozaawansowani. Narzędzie codzienne przy pracy z danymi.
Wymaga: Moduł 1: Klasy i Obiekty
Prowadzi do: Moduł 11: Programowanie Asynchroniczne, Moduł 12: Serializacja
Co jest tu wartościowe: Generyki zapewniają type safety i wydajność. LINQ to język zapytań w C# – nauczysz się pisać ekspresyjny, deklaratywny kod. Collection expressions (C# 12) pokazują nowoczesne podejście.
Cel: Zrozumienie mechanizmów callback'ów i event-driven architecture.
Moduł obejmuje 8 tematów:
- Idea i motywacja delegacji
- Definicja i składnia delegacji
- Predefiniowane generyczne delegacje (Action, Func, Predicate)
- Wyrażenia lambda i metody anonimowe
- Zdarzenia – fundamenty (standardowy wzorzec zdarzeń .NET)
- Wzorce pracy ze zdarzeniami
- Delegacje vs zdarzenia – kiedy co wybrać
- Event-driven architecture – praktyczne implementacje
Dla kogo: Po Modułu 6. Narzędzie do loose coupling i reactive programming.
Wymaga: Moduł 6: Polimorfizm
Prowadzi do: Moduł 11: Programowanie Asynchroniczne
Co jest tu wartościowe: Delegacje to callbacks w C#. Event-driven architecture jest wszędzie – od GUI po backend. Nauczysz się RxJS-style reactive programming w C#.
Cel: Opanowanie przeciążania operatorów dla intuicyjnego API.
Moduł obejmuje 10 tematów:
- Operatory które można przeciążać
- Operatory przeciążane pośrednio – relacje
- Metoda definiująca operator – zasady
- Operatory jednoargumentowe (+, -, !, ~)
- Operatory ++, --
- Operatory
true,false - Operatory relacyjne (==, !=, <, >, <=, >=)
- Operatory binarne arytmetyczne
- Operatory konwersji – implicit/explicit
- Kompletny przykład – system Vector3D
Dla kogo: Zaawansowani. Opcjonalny, ale cenny przy projektowaniu DSL'ów i klas domenowych.
Wymaga: Moduł 3: Właściwości i Indeksatory
Prowadzi do: – (moduł samodzielny, opcjonalny)
Co jest tu wartościowe: Przeciążanie operatorów pozwala na intuicyjne API – np. Vector3D + Vector3D zamiast Vector3D.Add(). Naucz się implementować to bezpiecznie i elegancko.
Cel: Opanowanie async/await i Task-based asynchronous pattern (TAP).
Moduł obejmuje 12 tematów:
- Fundamenty async/await i Task
- Breakfast example – sequential vs concurrent
- Operacje I/O (HttpClient, File I/O)
- CPU-bound operations (Task.Run)
- Zaawansowane patterny (CancellationToken, ConfigureAwait)
- Testowanie async kodu
- Async LINQ i Channels
- Dependency injection i async init
- Real-world integration – kompleksowy system
- Nowoczesne C# (ValueTask, async iterators)
- Benchmarking performance
- Reactive Extensions (Rx)
Dla kogo: Średniozaawansowani+. Niezbędny do nowoczesnych aplikacji webowych.
Wymaga: Moduł 8: Generyki i Kolekcje, Moduł 9: Delegacje i Zdarzenia
Prowadzi do: – (moduł zaawansowany, samodzielny)
Co jest tu wartościowe: Async/await to core feature nowoczesnego .NET. Nauczysz się pisać responsywne aplikacje i unikać deadlock'ów. Breakfast example pokazuje kiedy naprawdę potrzebna jest współbieżność.
Cel: Opanowanie serializacji dla różnych formatów danych.
Moduł obejmuje 10 tematów:
- Koncepty serializacji – object graphs
- Historia i ewolucja (.NET 1.0 → 9.0)
- XML serialization
- Binary serialization (legacy)
- JSON serialization (System.Text.Json) – nowoczesne podejście
- Niestandardowa serializacja (ISerializable)
- Circular references – grafy obiektów
- Zaawansowane patterny – versioning, compatibility
- Protocol Buffers i gRPC – nowoczesne formaty
- Performance i bezpieczeństwo (Security concerns)
Dla kogo: Średniozaawansowani. Narzędzie do komunikacji między systemami.
Wymaga: Moduł 8: Generyki i Kolekcje
Prowadzi do: – (moduł samodzielny)
Co jest tu wartościowe: JSON to standard. Nauczysz się serialize/deserialize obiekty bezpiecznie i wydajnie. Protocol Buffers pokazuje jak pracować z nowoczesnym toolingiem (gRPC).
Cel: Opanowanie refleksji do introspekcji typów i atrybutów do metaprogramowania.
Moduł obejmuje 10 tematów:
- Refleksja – wprowadzenie
- Inspekcja typów – co można odkryć
- System.Activator – dynamiczne tworzenie instancji
- Niestandardowe atrybuty
- Zaawansowane atrybuty
- Czytanie atrybutów – reflection API
- Wbudowane atrybuty – [Obsolete], [Serializable], etc.
- Plugin systems – dynamiczne ładowanie
- Expression trees i dynamic – zaawansowane techniki
- Performance i best practices
Dla kogo: Zaawansowani. Opcjonalny, ale potężny dla framework'ów.
Wymaga: Moduł 7: Interfejsy i Abstrakcja
Prowadzi do: – (moduł zaawansowany, samodzielny)
Co jest tu wartościowe: Refleksja to moc – pozwala na dynamiczne odkrywanie i uruchamianie kodu. Atrybuty to deklaratywne metadata. Plugin systems to praktyczne zastosowanie – nauczysz się budować extensible aplikacje.
Cel: Opanowanie testów jednostkowych w xUnit, podejścia Test-Driven Development oraz mokowania zależności.
Moduł obejmuje 7 tematów:
- Testy jednostkowe – wprowadzenie i filozofia, piramida testów
- Test-Driven Development – cykl Red-Green-Refactor
- Asercje, organizacja i parametryzacja testów (
[Theory],InlineData,MemberData) - Mokowanie zależności z Moq –
Setup,Verify,It.Is,Callback - Nietypowe testy – wyjątki, kod asynchroniczny, czas, losowość,
IClassFixture - Zarys testów integracyjnych –
WebApplicationFactory, EF Core InMemory, Testcontainers - Dobre praktyki i sugestywne przykłady – zasady F.I.R.S.T., anti-patterns, code coverage
Dla kogo: Po Module 7. Kluczowy dla każdego, kto chce pisać profesjonalny, utrzymywalny kod – warto stosować równolegle z każdym kolejnym modułem.
Wymaga: Moduł 7: Interfejsy i Abstrakcja
Prowadzi do: Moduł A01: ASP.NET Core
Co jest tu wartościowe: Testy jednostkowe i TDD to codzienność profesjonalnego developera C#. Mokowanie zależności z Moq pozwala testować kod w izolacji, a zarys testów integracyjnych pokazuje, kiedy warto sięgnąć po cięższą artylerię (prawdziwa baza, WebApplicationFactory). Zasady F.I.R.S.T. i anti-patterns pomogą Ci odróżnić dobry test od takiego, który tylko daje złudne poczucie bezpieczeństwa.
Cel: Praktyczne zastosowanie wszystkich koncepcji OOP w rzeczywistej aplikacji webowej.
Moduł obejmuje:
- Fundamenty ASP.NET Core
- Architektura MVC
- Entity Framework Core i bazy danych
- LINQ w praktyce
- Razor vs Blazor – frontend
- Dependency injection – praktycznie
- Real-world CRUD aplikacja
- REST API
- Authentication i Authorization
- Best practices
Dla kogo: Po zrozumieniu modułów 1-7. Praktyczne połączenie teorii z rzeczywistością.
Wymaga: Moduł 1: Klasy i Obiekty – Moduł 7: Interfejsy i Abstrakcja
Prowadzi do: – (moduł końcowy, praktyczne podsumowanie kursu)
Co jest tu wartościowe: Rzeczywisty projekt, który można uruchomić, modyfikować i rozbudowywać. Pokażemy jak architektura i wzorce stosują się w wielowarstwowej aplikacji. Entity Framework Core to ORM – narzędzie do pracy z bazami danych.
Po ukończeniu całego kursu, zdobędziesz solidne fundamenty i zaawansowaną wiedzę z OOP w C#:
- Cztery filary OOP – Abstrakcja, Enkapsulacja, Dziedziczenie, Polimorfizm (Moduł 1)
- Projektowanie klas – Konstruktory, właściwości, indeksatory (Moduły 2-3)
- Hierarchie klas – Dziedziczenie, abstract, sealed, interfejsy (Moduły 5-7)
- Polimorfizm i dispatch – Virtual methods, late binding, wzorce projektowe (Moduł 6)
- Zaawansowane koncepty – Generyki, delegacje, zdarzenia, refleksja (Moduły 8-9, 13)
- Asynchronizm – Async/await, Task, współbieżność (Moduł 11)
- Serializacja i persistence – JSON, XML, custom serialization (Moduł 12)
- Testowanie i TDD – xUnit, mokowanie z Moq, testy integracyjne (Moduł 14)
- Aplikacje webowe – ASP.NET Core, MVC, Entity Framework, LINQ (Moduł A01)
- Projektowanie – Tworzenie elastycznych architektur SOLID principles
- Kodowanie – Pisanie czystego, testowalnego kodu C#
- Testowanie – Testy jednostkowe z xUnit, TDD (Red-Green-Refactor), mokowanie zależności z Moq (Moduł 14)
- Debugowanie – Zrozumienie memory, GC, performance profiling
- Komunikacja – Dokumentacja XML comments, diagramy UML
- Real-world – Integracja i wdrażanie w rzeczywistych projektach
- Nullable reference types – bezpieczeństwo null safety
- Init properties – niezmienność
- Records – immutable data types
- Pattern matching – zaawansowane matching
- Default interface members – interfejsy z implementacją
- Top-level statements – uproszczona składnia
- Collection expressions – nowoczesne inicjalizatory
| Komponenta | Wersja | Uwagi |
|---|---|---|
| C# | 12.0+ | Nowoczesne features |
| .NET | 9.0+ | Cross-platform framework |
| xUnit | 2.6+ | Testy jednostkowe |
| Moq | 4.20+ | Mokowanie zależności (Moduł 14) |
| VS Code | Latest | Rekomendowany editor |
| Git | Latest | Kontrola wersji |
Wymagania przedwstępne:
- Podstawowa znajomość C# (zmienne, pętle, instrukcje warunkowe)
- Zainstalowane .NET 9.0 SDK
- Dowolny edytor (VS Code, Visual Studio, Rider)
- Microsoft C# Documentation – Kompletny reference
- .NET Official Documentation – Framework
- C# Language Specification – Formalna specyfikacja
- xUnit.net Documentation – Testing framework
Fundamenty OOP:
- "C# Player's Guide" – RB Whitaker (najlepsza dla początkujących)
- "C# in Depth" – Jon Skeet (zaawansowany, wszystkie wersje C#)
- "Object-Oriented Programming in C#" – Szynkarczyk (polskie źródło)
Design Patterns i Architektura:
- "Head First Design Patterns" – Freeman & Robson (wizualne i zrozumiałe)
- "Design Patterns: Elements of Reusable Object-Oriented Software" – Gang of Four (klasyka)
- "Refactoring: Improving the Design of Existing Code" – Martin Fowler (praktyczne)
- "SOLID Principles in C#" – Szymon Kulec (praktyczne SOLID)
Czysty Kod i Best Practices:
- "Clean Code" – Robert C. Martin (wszyscy powinni przeczytać)
- "The Pragmatic Programmer" – Hunt & Thomas (mindset inżyniera)
- "Code Complete" – Steve McConnell (kompletna encyklopedia)
Nowoczesny .NET:
- "ASP.NET Core in Action" – Andrew Lock (web development)
- "Entity Framework Core in Action" – Jon P Smith (bazy danych)
- "Concurrency in C# Cookbook" – Stephen Cleary (async i threading)
Testowanie i TDD:
- "The Art of Unit Testing" – Roy Osherove (klasyka, przykłady w C#)
- "Unit Testing Principles, Practices, and Patterns" – Vladimir Khorikov (dobre i złe praktyki)
- "Test-Driven Development: By Example" – Kent Beck (źródło podejścia TDD)
- Refactoring.Guru – Design patterns z C#
- C# Yellow Book – Darmowy e-book
- Microsoft Learn C# Path – Interaktywne kursy
- xUnit.net Documentation – Oficjalny przewodnik po xUnit
- Moq Quickstart – Oficjalna dokumentacja Moq
- LeetCode – Ćwiczenia algorytmiczne
Twój wkład pomaga uczynić ten projekt lepszym dla wszystkich studentów!
Jeśli znaleźć literówkę, błąd w kodzie, lub mylące wyjaśnienie:
- Otwórz GitHub Issue
- Opisz problem jasno
- Podaj link do konkretnego pliku/sekcji
- Preferownie daj sugestię jak to naprawić
Jeśli jakiś temat jest niejasny lub wymaga lepszego wyjaśnienia:
- Które koncepty były najtrudniejsze? – Pomóż nam ulepszyć objaśnienia
- Czy brakuje przykładów? – Zaproponuj konkretne case study
- Czy jakiś kod nie działa? – Zgłoś jako issue
- Czy są typy? – Małe edycje mogą oszczędzić czas innym
- Nowe przykłady praktyczne
- Dodatkowe diagramy
- Wyjaśnienia dla bardziej wizualnych uczniów
- Tłumaczenia
- Lepsze formatowanie
- Dodaj zadania ćwiczeniowe
- Rozszerz przykłady
- Podziel się swoim doświadczeniem jako komentarz do issue
- Kod: zgodny z C# Coding Conventions
- Dokumentacja: Markdown, jasne wyjaśnienia
- Diagramy: Format Mermaid
- Testy: Każdy kod powinien mieć testy xUnit
- Commit messages: Jasne i opisowe (po angielsku lub polsku)
CC BY-NC-SA 4.0 – Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
- ✅ Wolno dzielić, modyfikować i uczyć się na potrzeby edukacyjne
- ✅ Wolno używać w kursach i materiałach szkoleniowych
⚠️ Wymagane przypisanie autorstwa- ❌ Nie do celów komercyjnych
- ❌ Pochodne prace muszą mieć tę samą licencję
Pełny tekst: LICENSE.md
O: Aby przejść wszystkie moduły 1-7 (fundamenty): 40-50 godzin. Moduły 8-13 (zaawansowany): kolejne 30-40 godzin. Szacunkowo: 3-4 miesiące przy 10 godzinach tygodniowo.
O: Tak. Powinieneś znać podstawy C# (zmienne, pętle, instrukcje warunkowe, metody). Jeśli nie znasz – zacznij od Microsoft Learn C# Path.
O: Tak! Kod jest standardowy .NET. Możesz używać:
- Visual Studio Code (polecane)
- Visual Studio Community
- JetBrains Rider
- Dowolne IDE z obsługą .NET
O: Tak! Każdy temat ma testy xUnit. Możesz uruchomić dotnet test w każdym folderze tematu.
O: Nie. Licencja CC BY-NC-SA zabrania użytku komercyjnego. Jeśli chcesz użyć w kursie płatnym – skontaktuj się bezpośrednio.
O: Otwórz GitHub Issue z opisem problemu i linkiem do konkretnego pliku.
O: Dokumentacja ma linki do YouTube i Refactoring.Guru. Możesz znaleźć i dodać swoje filmy – zgłoś issue z sugestią.
Tomasz Borzyszkowski
- 🎓 Nauczyciel Programowania Obiektowego na Uniwersytecie Gdańskim
- 💻 Senior Software Engineer, C# / .NET specialist
- 📚 Autor materiałów edukacyjnych open-source
- 🌐 GitHub: @tborzyszkowski
- 🐛 Błędy i Sugestie: GitHub Issues
- 💬 Dyskusje: GitHub Discussions
- 📧 Email: Dostępny w moim profilu GitHub
- ⭐ Polubić: Daj Star jeśli projekt Ci się podoba!
Dziękuję za inspirację:
- Microsoft Learn Team – za doskonałą dokumentację
- Refactoring.Guru – za design patterns
- RB Whitaker – autor "C# Player's Guide"
- Jon Skeet – za "C# in Depth"
- GitHub Education Community – za wsparcie open-source
- Wszystkim studentom – za feedback i sugestie
Powodzenia w nauce! 🚀
Jeśli ten projekt Ci się podoba, daj ⭐ Star i podziel się z innymi!
Materiały dydaktyczne zawarte w tym repozytorium są przygotowywane przy wsparciu narzędzi sztucznej inteligencji (Generative AI), które pełnią rolę asystenta twórcy.
Sztuczna inteligencja jest wykorzystywana w celach pomocniczych, w szczególności do:
- Współtworzenia i optymalizacji bazowych przykładów kodu oraz konfiguracji.
- Formatowania, strukturyzacji oraz automatyzacji generowania dokumentacji.
- Wsparcia procesu redakcyjnego, korekty językowej oraz generowania alternatywnych wyjaśnień pojęć technicznych.
Wszystkie materiały, schematy oraz kody źródłowe podlegają weryfikacji merytorycznej i edycji przez człowieka. Ostateczna treść oraz układ dydaktyczny są wynikiem autorskiego nadzoru, co zapewnia ich poprawność oraz zgodność ze standardami akademickimi.
Last updated: 2026-08-31
Version: 2.0 – Wszystkie 14 Modułów
Licencja: CC BY-NC-SA 4.0