Nauka programowania w C/C++ od podstaw.
Ambitny i intensywny bootcamp programowania w back-endzie.
Solidne warsztaty - na których przygotujesz się do zawodu młodszego programisty.
-
Tematyka:fundamenty programowania, składnia i struktura kodu C i C++, biblioteki, system Linux, wstęp do Qt
-
Czas trwania:80 godzin zegarowych zajęć na żywo
+ 40 godzin pracy w domu z naszymi
materiałami = w sumie 120 godzin -
Wymagania:zapraszamy pasjonatów IT, osoby z umiejętnością analitycznego myślenia, lubiące matematykę - nie wymagamy żadnej umiejętności programowania, uczymy od totalnych podstaw
-
Przeznaczenie:- dla osób, które chcą zostać młodszym programistą,
- dla analityków,
- dla inżynierów i naukowców, -
Tryby zajęć:
- weekendowo (sob-niedz., średnio co 2 tygodnie)
- dziennie (blok 4-dniowy i dwa 3-dniowe, co ok. 2 tyg.)
-
Grupa:Zajęcia stacjonarne - na sali max 12 osób.
Dla kursów zdalnych - do 17 osób łącznie.
-
Miejsce:Warszawa lub Zdalnie (online na żywo z trenerem i grupą)
-
Elastyczność:a) do 15 dni przed startem można zrezygnować
b) podczas zajęć można:
- przejść z trybu stacjonarnego na zdalny
- ze zdalnego na stacjonarny
- w razie potrzeby otrzymać nagrania z zajęć
- zawiesić uczestnictwo i dokończyć później
(w miarę dostępności miejsc)
-
Cena:4 790 PLN*
Podejmij wyzwanie - naucz się kodować od zera
Ten bootcamp programistyczny jest najszybszą drogą do rozpoczęcia kariery w IT. Naszym celem jest wykształcenie w Tobie konkretnych umiejętności, tak - abyś mógł podjąć pracę jako młodszy programista C/C++. Stawiamy na praktykę, pracę w grupach i kontakt z trenerem. Kurs prowadzi doświadczony programista, który na co dzień pracuje w branży i uczy tylko tego co obecnie jest wymagane na rynku pracy.
Uczymy nie tylko języka
Każdy kto chce zostać programistą musi wiedzieć, że programowanie nie sprowadza się jedynie do znajomości języka programowania. Programowanie to specyficzny sposób myślenia, rozkładania każdej złożoności na mniejsze kawałki, klocki. Programowanie to umiejętność patrzenia na coś abstrakcyjnego i niemal odruchowe wyciąganie "przed nawias" elementów wspólnych.
Na tym bootcampie uczymy właśnie tej filozofii - uczymy fundamentów programistycznych, solidnych podstaw programowania w back-endzie (składnia, struktura kody, warunki, pętle, zmienne, stałe, operacje logiczne, tablice, wskaźniki, obiektowość).
Oczywiście nie da się nauczyć programowania bez nauki konkretnego języka. Na tym bootcampie nauczysz się programowania na podstawie języka C/C++.
Inteligentne domy, systemy ABS, wysokobudżetowe gry - czyli do czego używa się języka C/C++
Język C++ to nowoczesny, wysokopoziomowy język programowania - skonstruowany z myślą o wdrażaniu złożonych programów komputerowych. W C++ napisana jest m.in. przeglądarka Mozilla Firefox, baza danych MySQL i środowisko graficzne KDE.
C++ jest elastyczny - pozwala łączyć niskopoziomowość języka C z zaawansowanymi technikami programistycznymi (przeciążanie funkcji, silna obiektowość, szablony i metaprogramowanie, “inteligentne” zarządzanie pamięcią).
Język C/C++ ma bardzo szerokie zastosowanie w przemyśle, w systemach niskopoziomowych, rozmaitych systemach wbudowanych. Wraz z postępem technologicznym systemy wbudowane, składające się z komponentów sprzętowych i programowych, stają się coraz powszechniejsze. Programiści systemów wbudowanych (embedded system) używają C++ przy pracy nad układami sterującymi pracą silnika samochodowego i ABS. Na C++ stoi również sprzęt sterujący samolotami, rakietami, pociskami rakietowymi, inteligentnymi bombami czy też sprzęt gospodarstwa domowego (zmywarki, mikrofalówki). W C++ programuje się sprzęt medyczny np. monitory holterowskie oraz bankomaty.
Język C++ jest wykorzystywany do wysokobudżetowych gier komputerowych z kategorii triple-A, obliczeń naukowych, grafiki komputerowej, systemów operacyjnych, big data, systemów rozproszonych.
Ogromny potencjał IoT - rynek potrzebuje specjalistów od C/C++
Na naszych oczach dokonuje się rewolucja związana z błyskawicznym rozwojem sektora IoT (Internet of Things) - Internetu Rzeczy (wg tej koncepcji przedmioty/urządzenia mogą gromadzić, przetwarzać lub wymieniać dane za pośrednictwem sieci komputerowej). Technologia IoT jest stworzona w C/C++.
Z najnowszych danych wynika, że w 2020 roku do sieci będzie podłączonych od 25 mld do 50 mld urządzeń (urządzenia gospodarstwa domowego, artykuły oświetleniowe i grzewcze, urządzenia noszone/ wearables). Dynamiczny rozwój nastąpi w obszarze inteligentnych samochodów, budynków oraz cyfrowych ofert sklepów. Najszybszy rozwój czeka segment inteligentnych urządzeń domowych oraz wearables (urządzenia noszone).
„Jeszcze w 2014 r. wartość inwestycji w IoT w Polsce wyniosła 2 mld USD, w 2018 r. wyniesie ona już jednak ponad 3,7 mld USD, a w 2020 r. 5,4 mld USD. Jest to wartość całego ekosystemu IoT – czyli nie tylko urządzeń końcowych, sensorów czy liczników – ale również oprogramowania, usług IT i telekomunikacyjnych czy też infrastruktury IT. Szacujemy, że do 2020 r. wydatki na IoT będą rosły średnio w tempie 20,8% rok do roku”
– mówi Jarek Smulski, analityk IDC.
Dynamiczny wzrost rynku IoT wiąże się z dramatycznym wręcz poszukiwaniem specjalistów, którzy posługują się technologią C/C++. Poniżej wycinek ogłoszenia popularnej marki Fibaro, która poszukuje developerów C++ do rozwoju swojej technologii (źródło: pracuj.pl).
C++ jako silnik do potężnych obliczeń
Język C++ to potężne narzędzie do analizy ogromnych ilości danych. W większości międzynarodowych instytutów fizyki głównym językiem programowania jest język C++.
To właśnie za pomocą C++ tworzy się systemy sterujące eksperymentami i monitorujące je. Na języku C++ opiera się cała gałąź bioinformatyki obejmująca metody obliczeniowe do badania struktury, funkcji i ewolucji genów, genomów i białek.
Czego się nauczysz na kursie?
Poznasz język C
C++ powstało jako rozszerzenie języka C, który jest obecnie używany niemal wszędzie: od sterowników sprzętowych i systemów operacyjnych przez wydajne serwery WWW po nowoczesne środowiska graficzne i aplikacje biurowe. Znając C można z niewielkim dodatkowym wysiłkiem zrozumieć programy pisane w C++, PHP czy Javie. Jego składnia wciąż inspiruje budowę nowych języków programowania.
Poznasz język C++
Mimo iż na pierwszy rzut oka te dwa języki mogą się wydawać bardzo podobne do siebie, w istocie bardzo się różnią. W języku C++ wprowadzono wiele nowych funkcji, jak chociażby możliwość programowania obiektowego. W wyniku tego powstał bardzo potężny język pozwalający pisać programy w całkiem innym sposób, niż się to robiło w języku C.
Nauczysz się podstaw programowania
Poza praktyczną nauką języka programowania poruszamy szereg fundamentalnych zagadnień związanym z programowaniem i projektowaniem systemów informatycznych, niezależnych od języka programowania, w tym: obowiązki i usługi systemu operacyjnego, metody ataków oraz obrona przed nimi, refaktoryzacja kodu, podstawy algorytmiki, techniki programowania obiektowego, charakterystyka wygodnych interfejsów użytkownika.
Poznasz system operacyjny Linux
Na bootcampie pracujemy w środowisku Linux. Kończąc ten kurs będziesz miał bardzo praktyczną wiedzę jak poruszać się w tym systemie operacyjnym.
Poznasz także bibliotekę Qt
Qt rozszerza możliwości języka C++. Zawiera narzędzia do tworzenia programów konsolowych i serwerów. Qt to framework, który pozwala w szybki sposób napisać aplikację okienkową bez potrzeby pisania wielu linii kodu. Aplikacje pisane z użyciem Qt można wypuszczać na wiele innych platform (w tym także mobilne).
Popularność C/C++ i opłacalność...
Na początku XXI wieku język C++ był najpopularniejszym językiem programowania ogólnego przeznaczenia. Około 3 miliony programistów na całym świecie zdecydowało się go używać.
A jak jest z popularnością C++ obecnie? Według jednego z najbardziej znanych rankingów języków programowania - Index TIOBE, w 2017 roku zaraz po Javie, drugie miejsce w rankingu zajmuje C (-6,94% r./r.), trzecie – C++ (-1,36% r./r.), czwarte – C# (-0,22% r./r.), a na piątej pozycji uplasował się Python (+0,13% r./r.).
Zarobki programistów c/c++
Nasze metody nauki
-
Nauka stacjonarna w małych grupach!
Bootcamp prowadzimy w specjalnie wyposażonych, klimatyzowanych salach - w największych miastach w Polsce. Podczas kursu pracujesz w małej grupie, dokładnie tak jak w szkołach języków obcych - w ten sposób nauka programowania jest szybsza. Uczysz się także pracy zespołowej, żebyś od razu po zakończeniu kursu mógł pracować w zespole programistów. -
Dużo praktyki pod okiem trenera!
Sama teoria nigdy nie wystarczy. Żeby zawodowo programować trzeba mieć konkretne umiejętności praktyczne - wtedy stajesz się atrakcyjnym kandydatem na rynku pracy. U nas nie ma wykładów z teorii - na bootcampie uczysz się tylko praktycznych rzeczy. Przez cały czas jest przy Tobie trener, którego w każdej chwili możesz zapytać i poprosić o pomoc. -
Nauka w domu w przerwie pomiędzy zajęciami.
Żeby przejść bootcamp programistyczny trzeba być mocno zmotywowanym i przyłożyć się do nauki również w domu. Pomiędzy modułami kursu jest przerwa - tydzień lub 2 tygodnie. Wykorzystaj ją na naukę, utrwalenie wiadomości i ćwiczenia. Od swojego trenera otrzymasz odpowiednio przygotowane materiały oraz zadania - tylko duża ilość ćwiczeń sprawi, że utrwalisz zdobytą wiedzę i bardzo szybko opanujesz technologię.
Schemat nauki podczas kursu
Uczymy od podstaw, ale to nie jest bootcamp dla każdego.
Przychodząc na bootcamp nie musisz mieć wykształcenia technicznego, nie musisz umieć programować, nie musisz też znać Linuksa. Wszystkie zagadnienia - krok po kroku - zostaną omówione i przećwiczone na bootcampie. Nie jest to jednak prosty kurs - nie będziemy ukrywać - program bootcampu jest bardzo ambitny i humanista, który nie przepada za matematyką może sobie nie poradzić.
Żeby przejść ten bootcamp z sukcesem - to oprócz ogólnej obsługi komputera (kopiowanie plików, korzystanie z edytora tekstu) i sprawnego korzystania z klawiatury (z doświadczenia wiemy że nie jest to oczywiste) - musisz mieć bardzo dobrze rozwiniętą umiejętność logicznego myślenia.
Języki C i C++ to potężne narzędzia - osoby, które decydują się na naukę tej technologii powinny interesować się przedmiotami ścisłymi, zagadnieniami popularnonaukowymi czy informatyką. Znakomita większość osób, które przychodzi na ten kurs to pasjonaci IT, którzy mają już za sobą pierwsze samodzielne próby pisania swoich aplikacji (nauka w domu z tutoriali czy ebooków).
Czy nauka programowania jest trudna?
Programowanie, szczególnie na początku, jest trudne, a jego nauka jest porównywalna z nauką obcego języka lub gry na instrumencie muzycznym: warunkiem skutecznego uczestnictwa w kursie jest zarezerwowanie odpowiedniej ilości czasu w domu na ćwiczenia.
Czy język C/C++ jest dobry na początek kariery?
Takiego pytania nigdy nie zadają osoby, które od samego początku wiedzą co chciałyby osiągnąć za pomocą programowania. Gracz, który chce napisać modyfikację gry komputerowej. Osoba, która ma konkretny pomysł na aplikację mobilną na telefon z Androidem. Osoby z konkretnym celem, zafiksowane na jego realizacji mają na samym początku zawężone możliwości. Dodatkowo, osoby te często mają gotowe przykłady kodu, od których mogą zacząć. Ich nauka rozpocznie się od modyfikacji i dopisywania małych fragmentów kodu do już istniejącego.
Wątpliwości mają natomiast osoby, które skuszone dobrymi zarobkami, chcą przebranżowić się i zdobyć pracę programisty. To właśnie te osoby zazwyczaj zadają pytania - „Który język programowania powinienem wybrać?”, Wielu z naszych kursantów zaraz po podjęciu decyzji “tak, chcę nauczyć się programowania” - wpada w błędne koło, gdyż nie potrafi znaleźć najlepszego dla siebie języka programowania. Fora internetowe są przepełnione argumentami, który język programowania jest najlepszy dla początkujących. Znajomi programiści zazwyczaj namawiają na te języki, w których sami się specjalizują - nie ułatwiając wyboru.
Język to nie wszystko!
ALX prowadzi szkolenia programistyczne od 15 lat - mamy bagaż ogromnego doświadczenia, tysięcy rozmów z różnymi osobami, które zaczynały karierę programistyczną. Zawsze mówimy naszym kursantom, że wybór języka, w którym będziemy uczyć się programowania jest ważny ale nie jest najważniejszy!
Otóż wielu programistów powtarza wzorce, których nauczyło się na samym początku. Jeśli będą zmuszeni zaprogramować coś w innym języku, to zrobią to tak samo jak robili do tej pory. Należy pamiętać o tym, że każdy z języków został zaprojektowany po to, aby rozwiązywać konkretny zbiór problemów. Jednak każdy język programowania zawiera pewne podstawowe pojęcia, które umożliwiają zaimplementowanie czegokolwiek, co sobie wymarzysz. Te pojęcia praktycznie nie różnią się między językami: pętle, instrukcje warunkowe, funkcje itd. Nauka języka C/C++ i to nie z tutoriali czy ebooków tylko przez doświadczonego programistę z branży - to wymarzony start w programowanie. Poznanie C/C++ otwiera wiele możliwych dróg poprowadzenia swojej dalszej nauki zawodu programisty.
Zapewniamy go! Nowoczesny sprzęt komputerowy będzie do Twojej dyspozycji podczas kursu. Oprócz motywacji i chęci do nauki nie musisz niczego ze sobą zabierać!
“Dla mnie ten bootcamp był naturalną drogą rozwoju. Na ostatnim roku studiów na Politechnice stwierdziłem, że będę miał większe szanse na znalezienie dobrej pracy jeżeli nauczę się programować. Lubię matematykę i fizykę. Obliczenia i ścisłe przedmioty nie sprawiają mi trudności. Dodatkowo bardzo podobają mi się zagadnienia inteligentnych budynków - myślę o tym żeby w przyszłości pracować nad taką technologią. Na kursie dostałem potężny zastrzyk wiedzy, podstaw programowania. Zamierzam rozwijać się w kierunku C++ dalej.”
Arek l. 27Trenerzy - wiedza połączona z praktyką
Trener, który będzie prowadził ten kurs to wykładowca i informatyk w jednej osobie. Nasi trenerzy wywodzą się z najlepszych polskich uczelni i od wielu lat wykonują projekty IT dla firm zewnętrznych, organizacji i instytucji publicznych. Na codzień pracują w zawodzie - co daje im możliwość prowadzenia ultra ciekawych zajęć, przepełnionych przykładami z realnych projektów.
którzy umieją dobrze i skutecznie komunikować się z ludźmi, dzięki temu potrafimy szkolić i przekazywać wiedzę w bardzo przystępny sposób!
którzy informatykę znają nie tylko w teorii. Cały czas jesteśmy aktywni zawodowo. To siła naszego zespołu!
Trenerzy - zawodowi programiści
Nawet najlepiej przygotowany program kursu nie zadziała bez dobrego, otwartego na słuchaczy i doświadczonego wykładowcy. Doskonale o tym wiemy!
Dlatego nasi trenerzy są najlepsi. Mają wieloletnie doświadczenie w szkoleniach, nauczaniu oraz tworzeniu oprogramowania. Są to praktycy - osoby prowadzące żywe, obfitujące w realistyczne przykłady zajęcia.
Zawodowy programista. Specjalizuje się w tworzeniu oprogramowania serwerowego w C++. Uczy programowania na Uniwersytecie Warszawskim. Wolny czas spędza na strzelnicy sportowej.
Bartosz ukończył studia na Wydziale Informatyki i Matematyki na Uniwersytecie Warszawskim. Ma niespożyty zapał do przekazywania swojej olbrzymiej wiedzy i czyni to doskonale. Jest wysoko oceniany przez Uczestników zajęć w ALX, średnia ocen trenerskich z 50 ankiet spośród 10 ostatnich szkoleń wynosi 4,6 w 5 stopniowej skali ocen.
Oprócz prowadzenia szkoleń i warsztatowych kursów zawodowych, Bartosz stale wykonuje mnóstwo projektów komercyjnych jako programista. Obecnie Bartosz jest programistą silnika gier komputerowych w Huuuge Games. Wcześniej pracował w CoreTechnology (spółka grupy Cyfrowy Polsat), gdzie projektował i programował oprogramowanie serwerowe w C i C++ (VoIP/SIP, obsługa telefonii komórkowej). Pracował również w MGBK Solutions sp. z o.o. gdzie tworzył oprogramowanie serwerowe w C++ (tracker do sieci wymiany multimediów w czasie rzeczywistym w modelu peer-to-peer). Wykonywał również projekty programistyczne dla Stowarzyszenia Talent tj.: budowa witryny edukacyjnej (PHP na PostgreSQL z domieszką Pythona), zadania algorytmiczno-programistyczne w C++, składanie skryptów shellowych do zarządzania zadaniami, budowania obrazów LiveCD na zawody programistyczne itd.
Bartosz pokochał strzelanie sportowe, szczególnie z MP-5. Rekreacyjne strzelanie do celu stało się jego pasją i sposobem na spędzenie wolnego czasu. Sam też jest sędzią i instruktorem strzelectwa.
Program szkolenia
- Dlaczego C i C++?
- Krótka i niepełna historia języków wysokiego poziomu
- Język kompilowany a interpretowany
- Gdzie, kiedy i dlaczego się programuje w C, ale niekoniecznie w C++
- Czym różni się umiejętność programowania od znajomości języka programowania
- Fundamentalne pojęcia i działania
- Program a proces
- Interakcja z systemem operacyjnym i środowiskiem wykonania
- Pamięć wirtualna i przestrzeń adresowa
- System plików
- Kodowanie znaków
- Systemy liczbowe
- Pierwszy program
- Składnia i struktura kodu
- Przestrzeń nazw biblioteki standardowej
- Przebieg wykonania i efekty uboczne
- Etapy przetwarzania kodu źródłowego na plik wykonywalny
- Zmienne, stałe i ich typy
- Operatory, operacje, działania niezdefiniowane
- Rozmiary typów liczbowych
- Konwersje i rzutowania
- Elementarna interakcja z użytkownikiem
- Problem walidacji danych
- Po co te formalizmy?
- Przepływ sterowania
- Operacje logiczne, reprezentacja prawdy i fałszu
- Instrukcje warunkowe
- Pętle
- Zmienne lokalne, zakresy widoczności nazw
- Podstawowe algorytmy
- Model pamięci
- Reprezentacja i położenie zmiennych w pamięci komputera
- Segment kodu, danych, stosu i sterty
- Systemowe mechanizmy ochrony pamięci
- Tablice, wskaźniki, napisy
- Tablice jedno- i wielowymiarowe, organizacja w pamięci
- Dualizm tablica-wskaźnik
- Napisy w C a napisy w C++
- Typowe błędy, ataki rodzaju buffer overflow
- Arytmetyka wskaźników
- Podstawowe techniki programistyczne
- Uogólnianie programu – podprogramy i funkcje
- Dynamiczny przydział pamięci
- Sposoby przekazywania parametrów do/wyników z funkcji
- Operacje plikowe
- Koncepcja programowania obiektowego
- Klasa, obiekt, metoda, atrybut, stan
- Interfejs a implementacja
- Ochrona stanu obiektu
- Const-correctness
- Metody i atrybuty klasowe (statyczne)
- Zarządzanie zasobami w modelu obiektowym
- Konstruktory i destruktory
- Wartość obiektu a jego tożsamość
- Kopiowanie obiektów – kopie płytkie i głębokie
- Mechanizm dziedziczenia
- Motywacja praktyczna
- Problem koła i elipsy
- Konstrukcja i destrukcja obiektów klas pochodnych
- Polimorfizm i metody wirtualne
- Metody i klasy abstrakcyjne
- Wirtualne destruktory
- Dziedziczenie vs składanie
- Obsługa wyjątków
- Przepływ sterowania programu po wystąpieniu wyjątku
- Generowanie i przechwytywanie wyjątków
- Najczęściej spotykane wyjątki z biblioteki standardowej
- Projekty wieloplikowe
- Jednostka kompilacji
- Deklaracje i definicje, pliki nagłówkowe
- Reguła jednej definicji
- Linkowanie, widoczność symboli
- Biblioteki statyczne i dynamiczne
- Automatyzacja budowania projektu
- Szablony
- Szablony w funkcjach
- Szablony w klasach
- Specjalizacje szablonów
- Problemy z linkowaniem
- Wstęp do metaprogramowania
- Standardowa biblioteka szablonów (STL)
- Kolekcje, kolejki, algorytmy, funkcje wyższego rzędu
- Dobór właściwej struktury danych do problemu i wpływ na wydajność programu
- Analiza kosztu czasowego i pamięciowego
- Dostosowanie własnych klas do współpracy z generycznymi algorytmami i kolekcjami
- Wstęp do programowania w Qt
- Środowisko pracy z bibliotekami Qt
- Programowanie oparte o obsługę zdarzeń
- Generowanie i przekazywanie zdarzeń: sygnały i sloty
- Projektowanie interfejsu aplikacji graficznej
- Model obiektów Qt, automatyzacja zarządzania pamięcią