Menu Zamknij

Kurs C#

Cena kursu

  • Cena spotkania grupowego wynosi 90 zł netto za 60 minut (110,7 zł brutto za 60 minut).
  • Cena spotkania indywidualnego wynosi 140 zł netto za 60 minut (172,2 zł brutto za 60 minut).
  • Płacisz zawsze za 25 kolejnych spotkań grupowych.
  • Płacisz zawsze za jedno kolejne spotkanie indywidualne.
  • Pierwsze spotkanie grupowe gratis.
  • Istnieje możliwość wystawienia faktury VAT.

Opis kursu

  • Profesjonalne przygotowanie do pracy na stanowisku programisty w wybranym języku programowania oraz powiązanymi z nim bibliotekami oraz frameworkami.
  • Nauka od podstaw po zaawansowane rozwiązania komercyjne.
  • Zoptymalizowany kod napisany zgodnie z dobrymi praktykami programistycznymi.
  • Szkolenie według planu dopasowanego do najnowszych standardów IT.
  • Nagrania ze spotkań grupowych, które możesz oglądać kiedy tylko chcesz.
  • Ogromna ilość zadań teoretycznych i praktycznych o różnym poziomie trudności.
  • Wsparcie mentora przy rozwiązywaniu problemów związanych z pytaniami teoretycznymi, zadaniami praktycznymi i projektami komercyjnymi.
  • Elastyczny kontakt z mentorem.
  • Profesjonalne przygotowanie do rozmowy kwalifikacyjnej.
  • Profesjonalnie przygotowane portfolio z rozbudowanymi projektami komercyjnymi.
  • Skuteczne techniki nauki programowania.

Plan kursu

  • Konfiguracja i uruchomienie środowiska programistycznego
  • Omówienie architektury .NET oraz .NET Core
  • Wykonywanie kodu w środowisku zarządzanym oraz platforma CLI
  • Zmienne
  • Stałe
  • Typy danych i kategorie typów
  • Literały
  • Zarządzanie znakami – typ char
  • Napisy – przegląd metod typu string
  • Interpolacja napisów
  • Formatowanie napisów
  • Typ System.Text.StringBuilder
  • Wyrażenia regularne
  • Pobieranie i prezentacja danych
  • Formatowanie dwustronne
  • Dyrektywa using oraz using static
  • Wartości null oraz void
  • Słowo kluczowe var
  • Typy bezpośrednie i typy referencyjne
  • Konwersje pomiędzy typami danych
  • Operatory
  • Instrukcje sterujące oraz pętle
  • Mechanizm pattern matching
  • Tablice
  • Metody do zarządzania tablicami
  • Typ tuple i dekonstrukcja
  • Zagadnienia uzupełniające
  • Definiowanie metod
  • Stos i sterta
  • Sposoby przekazywania parametrów do metod
  • Pomijanie parametrów wejściowych – wildcards
  • Parametry out variables
  • Wartości zwracane przez metody
  • Zwracanie przez referencję
  • Metody z ciałem w postaci wyrażenia
  • Metody o zmiennej ilości parametrów
  • Parametry opcjonalne
  • Przeciążanie metod
  • Metody lokalne
  • Rekurencja
  • Zagadnienia uzupełniające
  • Definicja klasy i obiektu
  • Referencja do obiektu klasy
  • Omówienie założeń enkapsulacji
  • Modyfikatory dostępu do składników klasy
  • Pola instancji
  • Pola tylko do odczytu – modyfikator readonly
  • Metody instancji
  • Referencja this
  • Deklarowanie właściwości
  • Właściwości przeznaczone tylko do odczytu lub tylko do zapisu
  • Konstruktory
  • Inicjatory obiektów
  • Finalizatory
  • Typy anonimowe
  • Składniki statyczne
  • Konstruktory statyczne
  • Klasy statyczne
  • Metody rozszerzające
  • Klasy zagnieżdżone
  • Klasy i metody częściowe
  • Kompozycja
  • Klasa System.Object i jej metody
  • Zagadnienia uzupełniające
  • Omówienie założeń dziedziczenia
  • Klasa bazowa i klasa pochodna
  • Modyfikatory dostępu w dziedziczeniu
  • Konstruktory w dziedziczeniu
  • Przesłanianie składowych z klas bazowych
  • Polimorfizm
  • Metody rozszerzające w dziedziczeniu
  • Składniki statyczne w dziedziczeniu
  • Rzutowanie między typem bazowym a pochodnym
  • Klasy zamknięte – modyfikator sealed
  • Modyfikatory virtual oraz new w dziedziczeniu
  • Odwołanie do składników klasy bazowej – słowo kluczowe base
  • Klasy abstrakcyjne
  • Zagadnienia uzupełniające
  • Deklaracja interfejsu
  • Implementacja interfejsu
  • Interfejsy a polimorfizm
  • Implementacja z jawnie podawanym interfejsem
  • Implementacja bez jawnie podawanego interfejsu
  • Dziedziczenie interfejsów
  • Metody rozszerzające i interfejsy
  • Interfejsy znacznikowe
  • Zagadnienia uzupełniające
  • Omówienie zasady działania delegatów
  • Deklarowanie typu delegata
  • Tworzenie instancji delegata
  • Metody anonimowe
  • Wyrażenia lambda
  • Delegaty ogólnego przeznaczenia System.Func oraz System.Action
  • Zarządzanie zmiennymi zewnętrznymi wyrażenia lambda
  • Delegaty typu multicast i wzorzec obserwator
  • Deklarowanie zdarzeń
  • Typy generyczne a delegaty
  • Zagadnienia uzupełniające
  • Algorytmy badające właściwości geometryczne
  • Algorytm badające właściwości matematyczne
  • Konwersje pomiędzy systemami liczbowymi
  • Badanie ciągów danych pod kątem wybranych właściwości
  • Sortowanie ciągów danych
  • Zastosowanie metody dziel i zwyciężaj
  • Wybrane metody numeryczne
  • Programowanie zachłanne
  • Algorytmy na tekstach
  • Wybrane algorytmy kryptograficzne
  • Rekurencja
  • Przegląd wybranych struktur danych
  • Zagadnienia uzupełniające
  • Omówienie hierarchii wyjątków
  • Sposoby zgłaszania wyjątków
  • Sposoby przechwytywania wyjątków
  • Ponowne zgłaszanie przechwyconego wyjątku
  • Wyjątki w wyrażeniach
  • Implementacja własnych klas do obsługi wyjątków
  • Dziedziczenie klas wyjątków
  • Zwalnianie zasobów z wykorzystaniem instrukcji using
  • Dobre praktyki zgłaszania i obsługi wyjątków
  • Zagadnienia uzupełniające
  • Klasyfikacja wzorców projektowych
  • Implementacja wzorców kreacyjnych
  • Implementacja wzorców strukturalnych
  • Implementacja wzorców czynnościowych
  • Zagadnienia uzupełniające
  • Omówienie hierarchii kolekcji
  • Inicjatory kolekcji
  • Interfejs IEnumerable oraz IQueryable
  • Standardowe operatory kwerend
  • Wyrażenia z kwerendami
  • Przegląd wszystkich metod technologii LINQ
  • Wzorzec Lazy Evaluation w pracy z kwerendami
  • Klauzule let, into, from
  • Wzorzec projektowy iterator
  • Podstawowe interfejsy w kolekcjach: ICollection, IList, IDictionary
  • Podstawowe klasy w kolekcjach: List, Dictionary<K, V>, SortedDictionary<K, V>, SortedList, Stack, Queue, LinkedList
  • Indeksery
  • Zagadnienia uzupełniające
  • Definicja klasy generycznej
  • Generyczne interfejsy i struktury
  • Reprezentacja typów generycznych w CIL
  • Typy Pair oraz Tuple
  • Zagnieżdżone typy generyczne
  • Ograniczenia typów generycznych
  • Metody generyczne
  • Kowariancja i kontrawariancja w typach generycznych
  • Przechwytywanie informacje o typie w runtime
  • Zagadnienia uzupełniające
  • Tworzenie, uruchamianie i zarządzanie wątkami
  • Blokowanie i usypianie wątków
  • Pule wątków
  • Wątki aktywne i działające w tle
  • Priorytety wątków
  • Wyjątki w wielowątkowości
  • Współdzielenie zasobów
  • Synchronizacja
  • Klasa Monitor
  • Słowo kluczowe lock
  • Pola jako zmienne volatile
  • Klasa System.Threading.Interlocked
  • Inne typy związane z synchronizacją
  • Zadania asynchroniczne
  • Wzorzec obsługi asynchroniczności za pomocą zadań
  • Instrukcje async oraz await
  • Asynchroniczne wyrażenia lambda
  • Pętle równoległe
  • Klasy kolekcji przetwarzanych równolegle
  • Równoległe wykonywanie kwerend LINQ
  • Zegary
  • Zagadnienia uzupełniające
  • Omówienie architektury frameworka Entity Framework
  • Zarządzanie bazą danych – podejście code-first
  • Zarządzanie bazą danych – podejście database-first
  • Budowanie modelu bazy danych – mapowanie tabel
  • Praca z migracjami
  • Dodawanie nowej tabeli
  • Modyfikowanie istniejącej tabeli
  • Usuwanie istniejącej tabeli
  • Tworzenie relacji pomiędzy tabelami
  • Wypełnianie tabel przykładowymi danymi
  • Konfiguracja tabel i wprowadzanie ograniczeń z wykorzystaniem DataAnnotations
  • Konfiguracja tabel i wprowadzanie ograniczeń z wykorzystaniem FluentAPI
  • Pobieranie i przetwarzanie danych z wykorzystaniem technologii LINQ
  • Lazy Loading
  • Problem Select N + 1
  • Eager Loading
  • Explicit Loading
  • Wykorzystanie wzorców projektowych i typów generycznych w zarządzaniu danymi
  • Narzędzia wspomagające pracę z Entity Framework
  • Architektura wielowarstwowa
  • Implementacja kompletnej aplikacji zarządzającej komunikacją bazodanową z wykorzystaniem Entity Framework
  • Zagadnienia uzupełniające
  • Dyrektywy preprocesora
  • Przestrzenie nazw
  • Obsługa zasobów zewnętrznych
  • Operator nameof
  • Porównanie działania operatorów is oraz as
  • Struktury
  • Wyliczenia
  • Przeciążanie operatorów
  • Operatory konwersji
  • Implementacja bibliotek
  • Refleksje
  • Atrybuty
  • Omówienie architektury GIT
  • Przegląd instrukcji GIT
  • Rozgałęzianie i scalanie w GIT
  • Aplikacje i wtyczki do pracy z GIT
  • Praca ze zdalnym repozytorium
  • GitHub Pages
  • Zagadnienia uzupełniające

Newsletter

Zapisz się na KURS i zyskaj - licencja JetBrains na 6 miesięcy za darmo!