C dla Zaawansowanych
C dla Zaawansowanych
Informacje podstawowe
Informacje podstawowe
- KategoriaInformatyka i telekomunikacja / Programowanie
- Grupa docelowa usługi
Szkolenie jest skierowane do programistów embedded i osób, które chcą wejść do branży. Z kursu mogą również skorzystać programiści C spoza embedded i studenci kierunków technicznych oraz hobbyści, którzy opanowali podstawy języka C i chcą dalej rozwijać się w tym kierunku.
- Minimalna liczba uczestników1
- Maksymalna liczba uczestników1000
- Data zakończenia rekrutacji22-03-2027
- Forma prowadzenia usługizdalna
- Podstawa uzyskania wpisu do BURCertyfikat systemu zarządzania jakością wg. ISO 9001:2015 (PN-EN ISO 9001:2015) - w zakresie usług szkoleniowych
Cel
Cel
Cel edukacyjny
Szkolenie przygotowuje uczestnika do samodzielnego projektowania, implementowania i analizowania zaawansowanego oprogramowania w języku C, ze szczególnym uwzględnieniem systemów Embedded. Uczestnik będzie potrafił identyfikować błędy i niezdefiniowane zachowania, analizować kod wynikowy kompilatora, stosować dobre praktyki programistyczne oraz wykorzystywać narzędzia do poprawy jakości, niezawodności i utrzymywalności kodu.Efekty uczenia się oraz kryteria weryfikacji ich osiągnięcia i Metody walidacji
| Efekty uczenia się | Kryteria weryfikacji | Metoda walidacji |
|---|---|---|
| Analizuje nieoczywiste zachowania języka C i identyfikuje potencjalne błędy. | Rozpoznaje pułapki związane z typami danych, konwersjami, wskaźnikami, pamięcią i kolejnością ewaluacji. Rozróżnia zachowania niezdefiniowane, nieokreślone oraz zależne od implementacji. | Test teoretyczny z wynikiem generowanym automatycznie |
| Ocenia poprawność zastosowania zaawansowanych i mniej znanych mechanizmów języka C. | Interpretuje złożone deklaracje, modyfikatory, makra i konstrukcje preprocesora. Rozpoznaje różnice między standardami C i rozszerzeniami kompilatorów oraz ocenia ich wpływ na przenośność kodu. | Test teoretyczny z wynikiem generowanym automatycznie |
| Dobiera praktyki programistyczne ograniczające ryzyko błędów. | błędów. Identyfikuje antywzorce i ryzykowne konstrukcje językowe. Wybiera rozwiązania ograniczające możliwość powstawania błędów oraz poprawiające czytelność i utrzymywalność kodu. | Test teoretyczny z wynikiem generowanym automatycznie |
| Analizuje działanie kompilatora, linkera i pozostałych narzędzi budowania oprogramowania. | Interpretuje etapy budowania programu, pliki wynikowe, flagi kompilacji i komunikaty narzędzi. Dobiera opcje kompilatora do określonych wymagań projektu. | Test teoretyczny z wynikiem generowanym automatycznie |
| Ocenia wpływ konstrukcji językowych i optymalizacji na kod wynikowy oraz wydajność. | Interpretuje wybrane fragmenty asemblera generowanego przez kompilator. Identyfikuje źródła problemów wydajnościowych i dobiera sposoby optymalizacji na podstawie przedstawionych wyników pomiarów. | Test teoretyczny z wynikiem generowanym automatycznie |
| Ocenia architekturę oprogramowania Embedded i dobiera rozwiązania ograniczające zależności. | Analizuje podział aplikacji na warstwy i moduły. Ocenia zastosowanie interfejsów, callbacków, mapperów oraz wzorców projektowych w przedstawionych przykładach. | Test teoretyczny z wynikiem generowanym automatycznie |
| Dobiera techniki poprawiające jakość i niezawodność oprogramowania. | Wybiera odpowiednie metody testowania, analizy statycznej, Code Review i debugowania. Identyfikuje problemy w organizacji procesu tworzenia oprogramowania. | Test teoretyczny z wynikiem generowanym automatycznie |
| Ocenia rozwiązania usprawniające utrzymanie i rozwój projektu Embedded. | Rozpoznaje problemy związane z konfiguracją projektu, zależnościami, automatyzacją budowania i integracją kodu. Dobiera narzędzia i praktyki ograniczające koszty utrzymania projektu. | Test teoretyczny z wynikiem generowanym automatycznie |
Kwalifikacje i kompetencje
Kwalifikacje i kompetencje
Kompetencje
Usługa prowadzi do nabycia kompetencji.Warunki uznania kompetencji
Program
Program
1. Wprowadzenie do szkolenia
- Cele szkolenia i organizacja nauki.
- Sposób realizacji ćwiczeń i prac domowych.
2. Typy danych – pułapki, dobre praktyki i mniej znane mechanizmy
- Reprezentacja liczb całkowitych i zmiennoprzecinkowych oraz jej konsekwencje.
- Konwersje typów, promocje całkowitoliczbowe i typowe błędy.
- Dobór typów danych w projektach Embedded.
- Stałe liczbowe, inicjalizacja i mniej znane konstrukcje językowe.
- Różnice między standardami C i rozszerzenia kompilatorów.
3. Struktury, unie, wskaźniki i tablice – typowe błędy i antywzorce
- Pułapki związane ze strukturami, uniami i polami bitowymi.
- Wyrównanie pamięci i reprezentacja danych.
- Zaawansowane zastosowania wskaźników i arytmetyki wskaźników.
- Różnice między tablicami i wskaźnikami.
- Typowe błędy związane z dostępem do pamięci.
- Dobre praktyki i bezpieczniejsze sposoby implementacji.
4. Instrukcje sterujące i funkcje – dobre praktyki i zaawansowane zastosowania
- Mniej oczywiste zachowania instrukcji warunkowych i pętli.
- Pułapki, antywzorce i poprawa czytelności kodu.
- Funkcje, wskaźniki na funkcje i funkcje inline.
- Callbacki, interfejsy i mappery.
- Wykorzystanie konstrukcji językowych do ograniczania zależności między modułami.
5. Preprocesor – możliwości, ograniczenia i pułapki
- Mechanizmy działania preprocesora i dyrektywy.
- Makra, ich rozwijanie i typowe antywzorce.
- Kompilacja warunkowa i zarządzanie konfiguracją projektu.
- Predefiniowane symbole i mniej znane mechanizmy preprocesora.
- Dobre praktyki korzystania z preprocesora.
6. Operatory, modyfikatory i zarządzanie pamięcią
- Kolejność ewaluacji, konwersje i rzutowania typów.
- Zastosowania i pułapki modyfikatorów const, volatile i restrict.
- Widoczność, zakres i czas życia obiektów.
- Static, extern i łączenie modyfikatorów.
- Stos i dynamiczna alokacja pamięci.
- Niezdefiniowane, nieokreślone i zależne od implementacji zachowania języka C.
7. Czytelność kodu, dobre praktyki i antywzorce
- Zasady tworzenia czytelnego i łatwego w utrzymaniu kodu.
- Nazewnictwo, organizacja funkcji i modułów.
- Dokumentowanie kodu i obsługa błędów.
- Identyfikacja antywzorców i dobór lepszych rozwiązań.
8. Proces budowania i konfiguracja projektu
- Etapy kompilacji i linkowania.
- Flagi kompilatora, ostrzeżenia i standardy języka C.
- Konfiguracja toolchaina i procesu budowania.
- Skrypty linkera, kod startowy i organizacja pamięci.
- Biblioteki, pliki wynikowe i narzędzia diagnostyczne.
9. Analiza kodu wynikowego i asembler
- Zależność między kodem C a kodem maszynowym.
- Podstawy architektury procesora i asemblera.
- Interpretacja kodu generowanego przez kompilator.
- Wpływ konstrukcji językowych i opcji kompilacji na kod wynikowy.
10. Optymalizacja oprogramowania
- Metody pomiaru i analizy wydajności.
- Optymalizacje kompilatora i ich ograniczenia.
- Dobór algorytmów i struktur danych.
- Mikrooptymalizacje i typowe błędy optymalizacyjne.
- Weryfikacja skuteczności optymalizacji na podstawie pomiarów.
11. Projektowanie i architektura aplikacji Embedded
- Projektowanie i wizualizacja architektury oprogramowania.
- Podział na warstwy, moduły i interfejsy.
- Zarządzanie zależnościami między komponentami.
- Wzorce projektowe i techniki izolowania kodu.
- Projektowanie kodu pod kątem testowania i utrzymania.
12. Narzędzia i techniki wspierające pracę programisty
- Systemy kontroli wersji i Continuous Integration.
- Test Driven Development i Code Review.
- Analiza statyczna i debugowanie.
- Dokumentacja i automatyzacja pracy.
- Dobór narzędzi do potrzeb projektu.
13. Podsumowanie i walidacja
- Utrwalenie kluczowych zagadnień szkolenia.
- Automatycznie oceniany test końcowy weryfikujący osiągnięcie efektów uczenia się.
Cena
Cena
Cennik
| Rodzaj ceny | Cena |
|---|---|
Rodzaj ceny Koszt przypadający na 1 uczestnika brutto | Cena 1 999,00 PLN |
Rodzaj ceny Koszt przypadający na 1 uczestnika netto | Cena 1 625,20 PLN |
Rodzaj ceny Koszt osobogodziny brutto | Cena 39,98 PLN |
Rodzaj ceny Koszt osobogodziny netto | Cena 32,50 PLN |
Liczba godzin usługi
| Rodzaj godzin | Liczba godzin |
|---|---|
Rodzaj godzin Liczba godzin zegarowych usługi | Liczba godzin 50:00 |
Informacje dodatkowe
Informacje dodatkowe
Informacje o materiałach dla uczestników usługi
Uczestnik szkolenia otrzymuje dostęp do platformy e-learningowej zawierającej:
- Lekcje wideo obejmujące pełny program szkolenia (około 30 godzin nagrań).
- Materiały dodatkowe rozszerzające omawiane zagadnienia (ponad 22 godziny nagrań).
- Przykładowe projekty i kody źródłowe wykorzystywane podczas lekcji.
- Zadania domowe i ćwiczenia praktyczne pozwalające utrwalić zdobytą wiedzę.
- Dostęp do społeczności kursantów na platformie Discord, umożliwiającej zadawanie pytań i dyskusję.
Materiały szkoleniowe pozostają dostępne bezterminowo, również po zakończeniu usługi w BUR. Uczestnik otrzymuje także dostęp do przyszłych aktualizacji kursu.
Szczegółowe informacje o kursie, pełna agenda oraz opinie uczestników dostępne są na stronie: https://cdlazaawansowanych.pl/
Warunki uczestnictwa
Kurs C dla Zaawansowanych jest przeznaczony dla osób, które:
- Znają podstawy programowania w C
- Znają co najmniej jedną rodzinę mikrokontrolerów
- Znają podstawy elektroniki
- Zrealizowały co najmniej jeden projekt programistyczny
Informacje dodatkowe
Szkolenie odbywa się online w formie asynchronicznej. Uczestnik realizuje materiał we własnym tempie, korzystając z nagrań wideo, ćwiczeń i zadań domowych.
Po zakończeniu szkolenia uczestnik zachowuje bezterminowy dostęp do materiałów oraz ich przyszłych aktualizacji. Może również korzystać ze wsparcia i społeczności kursantów na Discordzie.
Warunki techniczne
Warunki techniczne
Do udziału w szkoleniu wymagany jest komputer z dostępem do internetu, aktualna przeglądarka internetowa oraz możliwość odtwarzania materiałów wideo.
Do wykonywania ćwiczeń praktycznych potrzebne jest środowisko programistyczne obsługujące język C. Uczestnik może korzystać z bezpłatnych narzędzi.