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.

PROMOCJA – pierwsze spotkanie GRATIS
Już teraz
zapisz się na kurs
- C#
Zostaw swoje namiary, a skontaktuję się z Tobą w sprawie kursu
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