Słownik pojęć: Projektowanie, programowanie i testowanie aplikacji
Kluczowe pojęcia z kwalifikacji INF.04 pogrupowane tematycznie — definicje, przykłady i wyjaśnienia przydatne na egzaminie CKE.
Algorytmika i Struktury Danych(28)
Algorytm Euklidesa (NWD)
Klasyczny algorytm wyznaczania największego wspólnego dzielnika (NWD) dwóch liczb całkowitych za pomocą operacji reszty z dzielenia (modulo) lub odejmowania.
Algorytmy Najkrótszej Ścieżki w Grafie (Dijkstra, Bellman-Ford)
Algorytmy wyznaczające trasę o najmniejszej sumarycznej wadze krawędzi między wierzchołkami w grafie ważonym (np. algorytm Dijkstry dla wag nieujemnych).
Binarne Drzewo Poszukiwań (BST)
Hierarchiczna struktura danych, w której każdy węzeł ma co najwyżej dwoje dzieci, a wartości w lewym poddrzewie są mniejsze, zaś w prawym większe od węzła.
Kod uzupełnień do dwóch (U2)
Standardowy sposób reprezentacji liczb całkowitych ze znakiem w systemach cyfrowych, gdzie najstarszy bit (MSB) ma ujemną wagę pozycji (-2^(n-1)).
Kolejka FIFO i operacje: Push, Pop, Peek, IsEmpty
Liniowa struktura danych działająca w trybie FIFO (First-In, First-Out), w której nowe elementy dodawane są na końcu, a pobierane z początku, obsługiwana standardowymi metodami.
Lista powiązana (Linked List)
Dynamiczna struktura danych złożona z węzłów (Node), gdzie każdy węzeł zawiera przechowywaną wartość oraz wskaźnik na kolejny element.
Metody Heurystyczne i Problem Komiwojażera (TSP)
Praktyczne podejście algorytmiczne znajdujące wystarczająco dobre (suboptymalne) rozwiązanie w akceptowalnym czasie dla problemów trudnych obliczeniowo (np. problem komiwojażera TSP).
Numer PESEL i Algorytm Weryfikacji
11-cyfrowy identyfikator ewidencji ludności w Polsce, zawierający zakodowaną datę urodzenia, numer serii, oznaczenie płci oraz cyfrę kontrolną obliczaną z wagami modulo 10.
Odwrotna Notacja Polska (ONP / RPN)
Beznawiasowy sposób zapisu wyrażeń arytmetycznych, w którym symbol operatora umieszczany jest po swoich operandach (zapis postfiksowy).
Paradygmat Dziel i Zwyciężaj (Divide and Conquer)
Wiodąca technika projektowania algorytmów polegająca na rekurencyjnym podziale problemu na mniejsze podproblemy tego samego typu, ich rozwiązaniu i scaleniu wyników.
Pojęcie i Cechy Algorytmu
Uporządkowany, skończony i jednoznaczny ciąg instrukcji i kroków postępowania prowadzący do rozwiązania określonego problemu obliczeniowego dla poprawnych danych wejściowych.
Przeszukiwanie grafu: DFS i BFS
Dwa podstawowe algorytmy przeszukiwania grafów: DFS eksploruje ścieżki w głąb przy użyciu stosu/rekurencji, a BFS warstwami przy użyciu kolejki FIFO.
Przeszukiwanie grafów: W głąb (DFS) i Wszerz (BFS)
Fundamentalne algorytmy przechodzenia wierzchołków grafu: DFS eksploruje ścieżkę jak najgłębiej przy użyciu stosu/rekurencji, a BFS bada warstwami sąsiadów przy użyciu kolejki FIFO.
Rekurencja (Recursion)
Technika programistyczna polegająca na wywoływaniu przez funkcję samej siebie w celu rozwiązania mniejszego podproblemu, wymagająca warunku stopu.
Rekurencja (Rekursja)
Technika programistyczna polegająca na bezpośrednim lub pośrednim wywoływaniu funkcji przez samą siebie, wymagająca określonego warunku bazowego (stopu) zapobiegającego przepełnieniu stosu.
Sito Eratostenesa (Liczby pierwsze)
Wydajny algorytm wyznaczania wszystkich liczb pierwszych w przedziale od 2 do n poprzez cykliczne wykreślanie wielokrotności znalezionych liczb pierwszych.
Sortowanie bąbelkowe (Bubble Sort)
Prosty algorytm sortowania o złożoności O(n^2), wielokrotnie porównujący sąsiednie elementy i zamieniający je miejscami, jeśli są w złej kolejności.
Sortowanie przez scalanie (Merge Sort)
Stabilny algorytm sortowania dzielący tablicę na połowy, sortujący je rekurencyjnie i scalający dwa posortowane ciągi w czasie O(n log n).
Sortowanie przez wstawianie (Insertion Sort)
Algorytm sortowania budujący posortowany ciąg element po elemencie poprzez wstawianie każdego nowego elementu na właściwą pozycję.
Sortowanie przez wybieranie (Selection Sort)
Algorytm sortowania polegający na znajdowaniu najmniejszego elementu w nieposortowanej części tablicy i zamianie go z elementem na początku.
Sortowanie przez zliczanie (Counting Sort) i Kubełkowe (Bucket Sort)
Nieporównaniowe algorytmy sortowania o liniowej złożoności czasowej O(n+k), opierające się na zliczaniu wystąpień kluczy lub podziale liczb na kubełki w znanym przedziale.
Sortowanie szybkie (Quicksort)
Wydajny algorytm sortowania oparty na paradygmacie 'dziel i zwyciężaj', wykorzystujący element osiowy (pivot) do partycjonowania tablicy.
Stos (LIFO) i Kolejka (FIFO)
Liniowe struktury danych: Stos działa według zasady LIFO (ostatni wchodzi, pierwszy wychodzi), a Kolejka według FIFO (pierwszy wchodzi, pierwszy wychodzi).
System szesnastkowy (Hexadecimal / HEX)
Pozycyjny system liczbowy o podstawie 16, używający cyfr 0-9 oraz liter A-F (odpowiadających wartościom 10-15), powszechny w adresowaniu pamięci i kolorach RGB.
Tablica asocjacyjna / Słownik (Map & Dictionary)
Abstrakcyjna struktura danych przechowująca pary unikalny klucz-wartość, umożliwiająca natychmiastowe wyszukiwanie, wstawianie i modyfikację w średnim czasie O(1).
Wyszukiwanie binarne (Binary Search)
Algorytm wyszukiwania w posortowanej tablicy o złożoności O(log n), porównujący szukaną wartość ze środkowym elementem i odrzucający połowę zbioru.
Wyszukiwanie liniowe i z wartownikiem (Linear Search)
Podstawowy algorytm przeszukiwania tablicy sprawdzający elementy kolejno od początku do końca o złożoności O(n), nie wymagający posortowania danych.
Złożoność obliczeniowa (Big O Notation)
Formalna miara efektywności algorytmu określająca zapotrzebowanie na czas procesora lub pamięć w funkcji rozmiaru danych wejściowych (n).
Aplikacje Desktopowe (GUI)(5)
Kontrolki interfejsu GUI
Elementy wizualne okna programu służące do prezentacji treści i interakcji z użytkownikiem (np. Button, TextBox, CheckBox, RadioButton, ComboBox).
Windows Forms (WinForms)
Tradycyjna technologia tworzenia aplikacji okienkowych na platformę Windows w .NET, oparta na wizualnym projektancie formularzy i modelu zdarzeniowym.
Wiązanie Danych (Data Binding) w XAML / MVVM
Mechanizm automatycznej synchronizacji danych pomiędzy modelem widoku (ViewModel) a elementami interfejsu (View) w technologiach XAML/WPF/MAUI.
WPF i Język XAML
Nowoczesny podsystem graficzny .NET do tworzenia aplikacji desktopowych, wykorzystujący deklaratywny język XML (XAML) do opisu UI oraz silnik DirectX.
Wzorzec MVVM (Model-View-ViewModel)
Wzorzec architektoniczny dla aplikacji XAML dzielący projekt na: Model (dane), View (interfejs XAML) oraz ViewModel (stan i logika widoku z obsługą komend ICommand).
Aplikacje Mobilne(10)
.NET MAUI i Aplikacje Wieloplatformowe
Nowoczesny wieloplatformowy framework firmy Microsoft umożliwiający tworzenie natywnych aplikacji na Androida, iOS, macOS i Windows z jednego kodu źródłowego w C#/XAML.
Cykl życia Aktywności (Android Activity Lifecycle)
Zestaw metod wywoływanych przez system Android w trakcie życia ekranu aplikacji (onCreate, onStart, onResume, onPause, onStop, onDestroy).
Framework Xamarin / Xamarin.Forms
Wieloplatformowy framework firmy Microsoft umożliwiający tworzenie natywnych aplikacji na systemy Android, iOS i Windows przy użyciu języka C# i deklaratywnego języka XAML.
Intencja (Intent) w systemie Android
Obiekt komunikacyjny w systemie Android służący do uruchamiania nowych aktywności, serwisów lub wysyłania komunikatów rozgłoszeniowych.
Programowanie Natywne vs Wieloplatformowe
Podejście do tworzenia aplikacji dedykowanych pod jedną konkretną platformę sprzętowo-systemową przy użyciu jej oficjalnych narzędzi i kompilacji do kodu maszynowego lub bajtowego.
SharedPreferences w Androidzie
Wbudowany w system Android prosty magazyn par klucz-wartość (XML) do trwałego przechowywania ustawień użytkownika i stanu aplikacji.
Sklep Google Play (Google Play Store)
Oficjalny sklep z aplikacjami i platforma dystrybucji cyfrowej dla systemu Android, zarządzana przez firmę Google z poziomu panelu Google Play Console.
System operacyjny Android
Mobilny system operacyjny z otwartym kodem źródłowym oparty na jądrze Linuksa, rozwijany przez Google i konsorcjum OHA, przeznaczony na smartfony, tablety i telewizory.
System operacyjny iOS
Zamknięty mobilny system operacyjny firmy Apple dla urządzeń iPhone i iPad, oparty na jądrze Darwin/XNU, z aplikacjami tworzonymi w językach Swift lub Objective-C w środowisku Xcode.
Układy widoków w Androidzie (Layouts)
Kontenery widoków w plikach XML definiujące rozmieszczenie elementów na ekranie smartfona (LinearLayout, ConstraintLayout, RecyclerView).
Aplikacje Webowe (Frontend & Backend)(15)
Aplikacja Jednostronicowa (Single Page Application - SPA)
Aplikacja internetowa ładująca pojedynczy dokument HTML i dynamicznie aktualizująca zawartość strony bez konieczności przeładowywania całego dokumentu.
Architektura REST API i protokół HTTP
Styl architektury oprogramowania oparty na bezstanowym protokole HTTP, operujący na zasobach identyfikowanych przez URI za pomocą metod GET, POST, PUT, DELETE.
Biblioteka JavaScript jQuery
Popularna biblioteka języka JavaScript ułatwiająca manipulację drzewem DOM, obsługę zdarzeń, animacje oraz asynchroniczne żądania AJAX przy użyciu selektorów CSS i symbolu $.
Biblioteka React (React.js)
Deklaratywna biblioteka języka JavaScript stworzona przez firmę Meta, służąca do budowy interfejsów użytkownika w aplikacjach Single Page Application (SPA) w oparciu o komponenty i Virtual DOM.
Format JSON (JavaScript Object Notation)
Lekki, tekstowy format wymiany danych oparty na podzbiorze składni języka JavaScript, niezależny od języka programowania i czytelny dla człowieka.
Format wymiany danych JSON
Lekki, tekstowy format wymiany danych oparty na notacji obiektów JavaScript, powszechnie stosowany w komunikacji REST API i plikach konfiguracyjnych.
Framework Angular
Kompletny, oparty na języku TypeScript framework frontendowy rozwijany przez firmę Google, przeznaczony do budowy skalowalnych aplikacji SPA w architekturze komponentowej.
Framework CSS Bootstrap
Popularny framework CSS ułatwiający tworzenie responsywnych stron internetowych (RWD) w oparciu o 12-kolumnowy system siatki (Grid System) i gotowe komponenty.
Framework PHP Symfony
Wiodący obiektowy framework języka PHP oparty na wzorcu MVC i architekturze modułowej, wykorzystujący system szablonów Twig oraz mapowanie obiektowo-relacyjne Doctrine ORM.
Mechanizmy Sesji i Ciasteczek (Sessions & Cookies)
Mechanizmy podtrzymywania stanu w bezstanowym protokole HTTP: Ciasteczka przechowywane są w przeglądarce klienta, a Sesje po stronie serwera.
Metoda HTTP POST (Żądania Web)
Metoda protokołu HTTP służąca do przesyłania danych z formularzy lub zapytań API w ciele żądania (Request Body) w celu utworzenia lub przetworzenia zasobu na serwerze.
Model barw RGB (Red, Green, Blue)
Addytywny model przestrzeni barw, w którym kolory powstają przez nakładanie wiązek światła o trzech składowych: czerwonej (R), zielonej (G) i niebieskiej (B) w zakresie 0-255.
Semantyczny kod HTML5
Stosowanie znaczników HTML5 jednoznacznie opisujących znaczenie i rolę elementu w strukturze strony (np. header, nav, main, article, section, footer).
Technologie i Architektura aplikacji WEB
Zbiór technologii, standardów i protokołów (HTML5, CSS3, JS, HTTP/HTTPS, REST API, WebSocket) tworzących nowoczesne aplikacje działające w architekturze klient-serwer.
Wzorzec MVC (Model-View-Controller)
Wzorzec architektoniczny dzielący aplikację na trzy niezależne warstwy: Model (dane i logika biznesowa), Widok (interfejs użytkownika) oraz Kontroler (obsługa żądań i sterowanie).
Bazy Danych i Zarządzanie Danymi (SQL & ORM)(10)
Funkcje agregujące w SQL (COUNT, SUM, AVG, MIN, MAX)
Standardowe funkcje języka SQL wykonujące obliczenia na zbiorze wartości kolumny i zwracające pojedynczą wartość podsumowującą.
Indeksy w bazach danych (B-Tree Index)
Struktura danych (zazwyczaj B-drzewo) drastycznie przyspieszająca operacje wyszukiwania i sortowania SELECT kosztem dłuższego czasu operacji zapisu INSERT/UPDATE.
Klauzule DISTINCT, ORDER BY i LIMIT w SQL
DISTINCT eliminuje duplikaty w wynikach, ORDER BY sortuje wiersze rosnąco (ASC) lub malejąco (DESC), a LIMIT / TOP ogranicza liczbę zwracanych rekordów.
Klauzule GROUP BY i HAVING w SQL
GROUP BY grupuje wiersze o identycznych wartościach w celu wykonania agregacji, a HAVING filtruje zagregowane grupy (w przeciwieństwie do WHERE filtrującego pojedyncze wiersze).
Klucz główny (Primary Key) i Klucz obcy (Foreign Key)
Podstawa relacyjnych baz danych: Klucz główny jednoznacznie identyfikuje rekord w tabeli (UNIQUE + NOT NULL), a Klucz obcy wskazuje na klucz główny innej tabeli.
Mapowanie Obiektowo-Relacyjne (ORM)
Technologia programistyczna automatycznie odwzorowująca tabele relacyjnej bazy danych na klasy obiektowe w kodzie aplikacji (np. Entity Framework w .NET, Hibernate w Javie).
Normalizacja bazy danych (1NF, 2NF, 3NF)
Proces projektowania relacyjnej bazy danych eliminujący redundancję (nadmiarowość) danych oraz anomalie przy wstawianiu, aktualizacji i usuwaniu rekordów.
Polecenia SQL: DDL, DML i DQL
Strukturalny język zapytań podzielony na podzbiory: DDL (definicja struktur), DML (modyfikacja danych), DQL (odpytywanie) oraz DCL/TCL (uprawnienia i transakcje).
Transakcje i Właściwości ACID
Cechy gwarantujące niezawodne przetwarzanie operacji w bazach danych: Atomicity (Wszystko albo nic), Consistency (Spójność), Isolation (Izolacja) oraz Durability (Trwałość).
Złączenia tabel w SQL (JOIN)
Operacje łączące wiersze z dwóch lub więcej tabel na podstawie powiązanych kolumn (klucz obcy -> klucz główny).
Inżynieria Oprogramowania, Bezpieczeństwo i BHP(52)
Ataki XSS i CSRF
Ataki webowe: XSS wstrzykuje złośliwy skrypt JavaScript uruchamiany w przeglądarce ofiary, a CSRF wymusza wykonanie nieautoryzowanej akcji w imieniu zalogowanego użytkownika.
Bezpieczne przechowywanie haseł (Haszowanie i Sól)
Standard bezpieczeństwa zakazujący przechowywania haseł jawnym tekstem; hasła są haszowane funkcją kryptograficzną z unikalną losową solą (Salt).
BHP i Ergonomia Stanowiska Komputerowego
Zasady bezpiecznej i ergonomicznej pracy przy komputerze: odległość oczu od ekranu (40-75 cm), kąt obserwacji oraz obowiązkowe 5 minut przerwy po każdej godzinie pracy.
Cofanie zmian: git reset, git revert i git status
Narzędzia inspekcji i cofania: git status pokazuje stan plików, git reset cofa wskaźnik HEAD (z flagami --soft, --mixed, --hard), a git revert tworzy nowy commit odwracający błędy.
Cykl życia oprogramowania: Kaskadowy, Spiralny, Fry'ego
Modele inżynierii oprogramowania (SDLC) opisujące etapy tworzenia systemów IT: od analizy wymagań, przez projektowanie, implementację, testy, aż po wdrożenie i utrzymanie.
Diagram Gantta
Graficzne narzędzie zarządzania projektami przedstawiające harmonogram zadań w postaci poziomych pasków na osi czasu z uwzględnieniem zależności i kamieni milowych.
Drukarka (Urządzenie wyjściowe)
Peryferyjne urządzenie wyjściowe komputera przenoszące cyfrowy tekst i grafikę na fizyczny nośnik (papier, etykiety, folie).
Dysk HDD (Hard Disk Drive)
Magnetyczny dysk twardy wykorzystujący wirujące talerze magnetyczne i ruchome głowice elektromagnetyczne do trwałego zapisu i odczytu danych.
Dysk SSD (Solid-State Drive)
Półprzewodnikowy nośnik pamięci masowej oparty na kościach pamięci Flash NAND, cechujący się bardzo krótkim czasem dostępu i brakiem ruchomych części mechanicznych.
Dysk twardy i Pamięć masowa
Urządzenia i nośniki przeznaczone do trwałego, nieulotnego przechowywania dużych zbiorów danych, systemów operacyjnych i programów użytkowych.
Framework testowy Jasmine (JavaScript BDD)
Framework do testowania jednostkowego kodu JavaScript w metodyce BDD (Behavior-Driven Development), niewymagający przeglądarki ani bibliotek zewnętrznych.
Funkcja skrótu MD5 (Message-Digest Algorithm 5)
Kryptograficzna funkcja haszująca generująca 128-bitowy skrót (32 znaki HEX); podatna na kolizje, obecnie stosowana głównie do weryfikacji integralności plików.
Gałęzie i scalanie: git branch, git checkout i git merge
Zarządzanie równoległymi liniami rozwoju: git branch tworzy gałęzie, git checkout/switch przełącza aktywną gałąź, a git merge łączy zmiany z innej gałęzi.
Ignorowanie plików i Historia: .gitignore i git log
Plik .gitignore definiuje wzorce plików i katalogów pomijanych przez Git (np. /bin, node_modules), a git log wyświetla pełną historię zatwierdzonych rewizji.
Jednostki pamięci: Bit, Bajt, KB, MB, GB, TB
Hierarchia jednostek określających ilość informacji i pojemność nośników danych w systemie binarnym (mnożnik 1024) oraz dziesiętnym (mnożnik 1000).
Karta graficzna (GPU - Graphics Processing Unit)
Dedykowana karta rozszerzeń i procesor graficzny (GPU) wyposażony we własną pamięć VRAM, odpowiedzialny za renderowanie grafiki 2D/3D oraz obliczenia równoległe.
Kryptografia asymetryczna RSA
Powszechny algorytm kryptografii z kluczem publicznym (asymetryczny), oparty na matematycznej trudności faktoryzacji iloczynu dwóch dużych liczb pierwszych.
Kryptografia: Szyfrowanie Symetryczne i Asymetryczne
Dziedzina ochrony danych: Szyfrowanie symetryczne (np. AES) używa jednego wspólnego klucza, a asymetryczne (np. RSA) pary klucz publiczny / klucz prywatny.
Magistrala systemowa (System Bus)
Zespół linii transmisyjnych łączący procesor z pamięcią operacyjną i urządzeniami wejścia-wyjścia, podzielony na magistralę danych, adresową i sterującą.
Metodyka RAD (Rapid Application Development)
Zwinna metodyka wytwarzania oprogramowania kładąca główny nacisk na błyskawiczne prototypowanie, iteracyjny rozwój i ścisłą współpracę z użytkownikiem zamiast żmudnego planowania.
Metodyka Scrum i Podejście Agile
Zwinna (Agile) metodyka wytwarzania oprogramowania oparta na iteracyjnych cyklach (Sprintach trwających 1-4 tygodnie) i samoorganizujących się zespołach.
Model Kaskadowy (Waterfall)
Sekwencyjny model wytwarzania oprogramowania, w którym każda kolejna faza (Wymagania -> Projekt -> Implementacja -> Testy -> Wdrożenie) rozpoczyna się dopiero po całkowitym zakończeniu poprzedniej.
Narzędzia programistyczne: Kompilator, Interpreter, Debuger
Fundamentalne narzędzia wytwarzania oprogramowania: kompilator przekształca cały kod w plik binarny, interpreter wykonuje kod linia po linii, a debugger pozwala śledzić błędy w czasie działania.
Ochrona przeciwporażeniowa i Bezpieczeństwo elektryczne
Środki techniczne chroniące przed porażeniem prądem i pożarem w pracowni informatycznej: wyłączniki RCD (30 mA), uziemienie PE oraz gaśnice śniegowe CO2 do urządzeń pod napięciem.
Okna dialogowe: Modalne vs Niemodalne
Typy okien dialogowych w GUI: okno modalne blokuje interakcję z oknem nadrzędnym do momentu jego zamknięcia (np. ShowDialog()), a okno niemodalne pozwala na równoległą pracę w obu oknach (Show()).
Pamięć RAM (Random Access Memory)
Pamięć operacyjna o dostępie swobodnym, przechowująca aktualnie uruchomione programy i ich dane robocze; jest pamięcią ulotną, która traci zawartość po odłączeniu zasilania.
Pamięć USB Flash (Pendrive)
Przenośny nośnik pamięci masowej oparty na kościach pamięci Flash EEPROM, podłączany do portu USB i obsługujący technologię Plug and Play.
Podatność Path Traversal (Directory Traversal)
Krytyczna luka bezpieczeństwa polegająca na braku walidacji ścieżki pliku (np. sekwencji '../'), pozwalająca atakującemu odczytać lub nadpisać poufne pliki systemowe poza katalogiem głównym aplikacji.
Pojęcie Frameworku (Inversion of Control)
Rozbudowany szkielet programistyczny definiujący architekturę i przepływ sterowania aplikacji (Inversion of Control - framework wywołuje kod programisty, a nie odwrotnie).
Porty sieciowe (TCP/UDP)
16-bitowe liczby całkowite (0-65535) w warstwie transportowej (TCP/UDP), służące do identyfikacji i rozróżniania procesów i usług sieciowych na pojedynczym hoście.
Prawa autorskie i Licencje oprogramowania
Przepisy prawne chroniące kod źródłowy i programy komputerowe jak utwory literackie, dzielące się na niezbywalne prawa osobiste i zbywalne prawa majątkowe, regulowane licencjami.
Prawo autorskie i Licencje oprogramowania
Zasady prawne chroniące twórców oprogramowania: Autorskie prawa osobiste (niezbywalne) i majątkowe oraz warunki licencji (własnościowych i Open Source).
Procesor (CPU - Central Processing Unit)
Główny układ scalony i jednostka centralna komputera, odpowiedzialna za pobieranie, dekodowanie i wykonywanie instrukcji programowych oraz sterowanie pracą pozostałych podzespołów.
Protokół SSH (Secure Shell)
Zaszyfrowany protokół sieciowy działający na porcie 22 TCP, służący do bezpiecznego zdalnego logowania do konsoli serwera i wykonywania poleceń.
Resuscytacja Krążeniowo-Oddechowa (RKO)
Zespół czynności ratujących życie przy nagłym zatrzymaniu krążenia: sekwencja 30 uciśnięć klatki piersiowej na głębokość 5-6 cm i 2 wdechy ratownicze (30:2) w tempie 100-120/min.
RODO i Ochrona Danych Osobowych
Ogólne rozporządzenie UE o ochronie danych osobowych nakładające obowiązki na administratorów danych i gwarantujące prawa użytkownikom.
Rodzaje testów: Jednostkowe, Wydajnościowe, Kompatybilności, Wdrożeniowe
Klasyfikacja poziomów i typów testów oprogramowania sprawdzających poprawność logiki, stabilność pod obciążeniem, zgodność z platformami sprzętowymi oraz gotowość produkcyjną.
Standard dostępności cyfrowej WCAG
Zbiór międzynarodowych wytycznych (Web Content Accessibility Guidelines) określających zasady projektowania stron i aplikacji dostępnych dla osób z niepełnosprawnościami.
Synchronizacja z serwerem: git push, git pull i git fetch
git push wysyła lokalne commity na serwer zdalny, git fetch pobiera informacje o zmianach, a git pull pobiera i natychmiast scala je z lokalną gałęzią.
System kontroli wersji Git (VCS)
Rozproszony system kontroli wersji śledzący zmiany w plikach źródłowych i ułatwiający zespołową pracę programistów nad projektem.
Systemy śledzenia błędów: Jira i Bugzilla
Specjalistyczne systemy typu Bug Tracker / Issue Tracker służące do ewidencji, zgłaszania, kategoryzacji, przydzielania i monitorowania cyklu życia błędów oraz zadań programistycznych.
Szyfrowanie symetryczne AES (Rijndael)
Współczesny światowy standard symetrycznego szyfrowania blokowego o wielkości bloku 128 bitów i długości klucza 128, 192 lub 256 bitów, powszechnie stosowany w HTTPS, Wi-Fi i dyskach.
Szyfrowanie symetryczne DES i 3DES
Klasyczny symetryczny szyfr blokowy o 56-bitowym kluczu efektywnym, obecnie uznany za przestarzały i podatny na atak siłowy (brute-force); zastąpiony przez standard AES.
Technologia WPF (Windows Presentation Foundation)
Podsystem graficzny środowiska .NET służący do tworzenia aplikacji desktopowych dla systemu Windows z interfejsem definiowanym deklaratywnie w języku XAML i logiką w C#.
Tworzenie repozytoriów Git: git init i git clone
Polecenia tworzące repozytorium: git init inicjalizuje nowe puste repozytorium lokalne (.git), a git clone pobiera pełną kopię zdalnego repozytorium na komputer.
Uwierzytelnianie (Authentication) vs Autoryzacja (Authorization)
Dwa filary bezpieczeństwa: Uwierzytelnianie weryfikuje tożsamość użytkownika (Kim jesteś?), a Autoryzacja sprawdza jego uprawnienia (Co możesz zrobić?).
Wirus komputerowy i Szkodliwe Oprogramowanie
Złośliwy program komputerowy zdolny do samoczynnego powielania się (samoreplikacji) i dołączania swojego kodu do innych plików wykonywalnych, niosący szkodliwy ładunek (payload).
Wstrzykiwanie SQL (SQL Injection)
Krytyczna luka bezpieczeństwa polegająca na wstrzyknięciu złośliwego fragmentu kodu SQL do zapytania przez niezwalidowane pole formularza użytkownika.
Zatwierdzanie zmian w Git: git add i git commit
git add dodaje pliki do poczekalni (staging area), a git commit -m 'opis' trwale zatwierdza przygotowane zmiany w historii lokalnego repozytorium.
Zintegrowane Środowisko Programistyczne (IDE)
Kompleksowy pakiet oprogramowania łączący w jednym programie zaawansowany edytor kodu, kompilator/interpreter, debugger oraz narzędzia do automatyzacji budowania projektu.
Złośliwe oprogramowanie Keylogger
Złośliwe oprogramowanie lub urządzenie sprzętowe działające w tle, rejestrujące naciśnięcia klawiszy użytkownika w celu przechwycenia haseł, loginów i danych kart płatniczych.
Złośliwe oprogramowanie Rootkit
Zaawansowane złośliwe oprogramowanie zaprojektowane w celu uzyskania uprawnień administratora (root) oraz aktywnego ukrywania swojej obecności i innych procesów przed systemem i antywirusami.
Języki i Składnia Programowania(24)
Bajt (Byte – 8 bitów)
Podstawowa jednostka pamięci cyfrowej złożona z 8 bitów, mogąca przyjąć jedną z 256 unikalnych kombinacji (wartości od 0 do 255 bez znaku lub od -128 do 127 ze znakiem).
Delegaty i Zdarzenia w C#
Delegat to bezpieczny typowo wskaźnik na metodę, a Zdarzenie (event) to mechanizm powiadamiania subskrybentów o zajściu określonej akcji.
Funkcje, Metody i Przekazywanie Parametrów
Wydzielone, nazwane bloki kodu realizujące określone zadanie, przyjmujące parametry wejściowe i opcjonalnie zwracające wartość wyniku za pomocą instrukcji return.
Garbage Collector (Odśmiecacz pamięci)
Moduł środowiska uruchomieniowego (.NET CLR, Java JVM) automatycznie monitorujący stertę i zwalniający pamięć zajmowaną przez obiekty, do których nie ma referencji.
Instrukcje w językach programowania
Podstawowe elementy składniowe języka programowania nakazujące procesorowi wykonanie określonej czynności: deklaracji, przypisania, rozgałęzienia lub powtórzenia.
Inteligentne Wskaźniki w C++ (Smart Pointers)
Klasy szablonowe w C++11 zarządzające cyklem życia pamięci dynamicznej zgodnie z paradygmatem RAII, zapobiegające wyciekom pamięci bez ręcznego 'delete'.
Język PostScript (PDL)
Stosowy, wektorowy język programowania i format opisu strony (PDL) stworzony przez firmę Adobe, interpretowany bezpośrednio przez procesor rastrowy (RIP) w drukarkach.
Język programowania C# (.NET)
Wieloparadygmatowy, obiektowy język programowania stworzony przez firmę Microsoft dla platformy .NET, cechujący się silnym typowaniem, automatycznym odśmiecaniem pamięci (GC) i bogatą składnią.
Język programowania C++
Wieloparadygmatowy, kompilowany bezpośrednio do kodu maszynowego język programowania ogólnego przeznaczenia, oferujący bezpośrednie zarządzanie pamięcią i najwyższą wydajność.
Język programowania Java
W pełni obiektowy język programowania kompilowany do kodu bajtowego (bytecode), wykonywanego przez Wirtualną Maszynę Javy (JVM) zgodnie z regułą WORA ('Napisz raz, uruchamiaj wszędzie').
Język programowania PHP
Interpretowany, skryptowy język programowania wykonywany po stronie serwera (Server-Side), stworzony głównie do dynamicznego generowania stron internetowych i integracji z bazami danych SQL.
Język programowania Python
Wysokopoziomowy język programowania ogólnego przeznaczenia o dynamicznym typowaniu i czytelnej składni opartej na wcięciach blokowych, wykonywany przez interpreter.
Język TypeScript
Język programowania opracowany przez Microsoft, stanowiący ścisły nadzbiór JavaScriptu, wzbogacający go o opcjonalne statyczne typowanie, interfejsy i typy generyczne.
Komentarze w językach programowania
Niewykonywane fragmenty kodu źródłowego ignorowane przez kompilator i interpreter, służące do opisu działania programu, dokumentacji API lub tymczasowego wyłączania instrukcji.
LINQ (Language Integrated Query) w C#
Zestaw rozszerzeń języka C# umożliwiający jednolite, deklaratywne przeszukiwanie i przetwarzanie kolekcji obiektów, baz danych (EF) i dokumentów XML.
Niezmienność String i Klasa StringBuilder
Obiekty typu string są niezmienne (immutable). Klasa StringBuilder służy do wydajnego łączenia i modyfikowania tekstu w pętlach bez alokowania setek zbędnych obiektów.
Obsługa wyjątków: try, catch, throw, finally
Mechanizm sterowania przepływem programu w sytuacjach awaryjnych (błędach czasu wykonania) przy użyciu bloków try, catch (przechwytywanie), throw (rzucanie) i finally (zwalnianie zasobów).
Pakowanie i rozpakowywanie (Boxing & Unboxing)
Boxing to konwersja typu wartościowego (np. int, struct) na typ referencyjny (object na stercie), a Unboxing to odwrotna konwersja z rzutowaniem.
Podstawowe Typy Danych: int, float, char, bool
Wbudowane w język programowania elementarne typy danych (całkowite, zmiennoprzecinkowe, znakowe i logiczne) określające format pamięci i dozwolone operacje.
Podstawowe typy i struktury w Pythonie
Podstawowe kolekcje Pythona: Listy [mutowalne], Krotki (niemutowalne), Słowniki {klucz: wartość} oraz Zbiory set() o unikalnych elementach.
Wielowątkowość i Programowanie Asynchroniczne (async/await)
Równoległe lub asynchroniczne wykonywanie kodu: Wątki (Thread) wykorzystują wielordzeniowość CPU, a słowa async/await zapobiegają blokowaniu interfejsu GUI podczas operacji We/Wy.
Wskaźnik i Referencja w C++
Wskaźnik przechowuje adres w pamięci operacyjnej (*ptr), a referencja stanowi bezpieczny alias (drugą nazwę) dla istniejącej zmiennej (&ref).
Wskaźnik i Zarządzanie Pamięcią (Pointers)
Zmienna przechowująca adres innej komórki pamięci RAM zamiast bezpośredniej wartości, operująca za pomocą operatora pobrania adresu (&) i dereferencji (*).
Zmienne i Stałe w programowaniu
Nazwane obszary pamięci operacyjnej przechowujące dane robocze programu; zmienne pozwalają na modyfikację wartości podczas działania, podczas gdy stałe mają wartość niezmienną.
Programowanie Obiektowe i Paradygmaty (OOP)(24)
Dziedziczenie (Inheritance w OOP)
Mechanizm programowania obiektowego pozwalający klasie pochodnej (podrzędnej) na przejęcie pól i metod z klasy bazowej (nadrzędnej) oraz ich rozszerzenie lub modyfikację.
Dziedziczenie (Inheritance)
Mechanizm OOP umożliwiający klasie pochodnej przejęcie pól i metod klasy bazowej oraz ich rozszerzenie lub modyfikację (relacja 'jest rodzajem').
Hermetyzacja (Enkapsulacja w OOP)
Jeden z fundamentalnych filarów programowania obiektowego, polegający na ukrywaniu wewnętrznego stanu obiektu (pól prywatnych) i udostępnianiu kontrolowanego dostępu przez publiczne metody/właściwości.
Hermetyzacja / Enkapsulacja (Encapsulation)
Filar OOP polegający na ukrywaniu wewnętrznego stanu obiektu przed bezpośrednim dostępem z zewnątrz i udostępnianiu kontrolowanych metod (getterów/setterów).
Interfejs (Interface)
Czysty kontrakt określający zestaw sygnatur metod i właściwości bez pól stanu, który klasa implementująca musi w całości zrealizować.
Klasa abstrakcyjna (Abstract Class)
Klasa bazowa, z której nie można bezpośrednio utworzyć obiektu, służąca jako wzorzec dla klas pochodnych i mogąca zawierać metody abstrakcyjne oraz zaimplementowane.
Klasa i Obiekt (Class & Object)
Podstawowe pojęcia OOP: Klasa to szablon/definicja pól i metod, a Obiekt to konkretna instancja powołana w pamięci operacyjnej.
Konstruktor i Destruktor
Specjalne metody klasy: Konstruktor inicjalizuje stan nowo tworzonego obiektu, a Destruktor zwalnia zasoby przed jego usunięciem.
Konstruktor kopiujący i Kopiowanie obiektów
Konstruktor tworzący nowy obiekt jako kopię istniejącego. Płytka kopia kopiuje wskaźniki/referencje, a głęboka alokuje nowe niezależne zasoby.
Modyfikatory dostępu (Access Modifiers)
Słowa kluczowe definiujące widoczność i zakres dostępności składowych klasy (pól, metod, właściwości).
Obsługa wyjątków (Exception Handling)
Mechanizm kontrolowanego wychwytywania i reagowania na błędy wykonania programu przy użyciu bloków try, catch, finally oraz instrukcji throw.
Polimorfizm (Polymorphism)
Zdolność obiektów różnych klas powiązanych hierarchią dziedziczenia do reagowania na to samo wywołanie metody w specyficzny dla siebie sposób.
Polimorfizm (Wielopostaciowość w OOP)
Cecha programowania obiektowego pozwalająca na jednakowe traktowanie obiektów różnych klas pochodnych za pośrednictwem wspólnego interfejsu lub klasy bazowej z różną implementacją zachowań.
Szablony w C++ i Typy Generyczne (Generics)
Mechanizm parametryzacji typem w C++, C# i Javie, zapewniający bezpieczeństwo typów w czasie kompilacji oraz eliminujący kosztowne rzutowanie i boxing/unboxing.
Wzorce projektowe (Design Patterns GoF)
Sprawdzone, uniwersalne i wielokrotnie wykorzystywane schematy rozwiązań typowych, powtarzających się problemów architektonicznych w programowaniu obiektowym.
Wzorzec Adapter (Adapter Pattern)
Strukturalny wzorzec projektowy umożliwiający współpracę klasom o niekompatybilnych interfejsach poprzez przekształcenie interfejsu jednej klasy na oczekiwany przez klienta.
Wzorzec Budowniczy (Builder Pattern)
Kreacyjny wzorzec projektowy oddzielający konstrukcję złożonego obiektu od jego reprezentacji, pozwalający na etapowe konfigurowanie parametrów (Fluent API).
Wzorzec Dekorator (Decorator Pattern)
Strukturalny wzorzec projektowy pozwalający na dynamiczne dodawanie nowych odpowiedzialności i zachowań do istniejącego obiektu bez modyfikowania jego kodu źródłowego.
Wzorzec Fabryka (Factory Pattern)
Kreacyjny wzorzec projektowy delegujący proces tworzenia obiektów do wyspecjalizowanej metody lub klasy fabrycznej na podstawie przekazanych parametrów.
Wzorzec Fasada (Facade Pattern)
Strukturalny wzorzec projektowy udostępniający uproszczony, jednolity interfejs wysokiego poziomu do złożonego podsystemu wielu klas i bibliotek.
Wzorzec Obserwator (Observer Pattern)
Czynnościowy wzorzec projektowy definiujący zależność jeden-do-wielu: gdy stan obiektu obserwowanego (Subject) ulega zmianie, wszyscy zarejestrowani obserwatorzy są automatycznie powiadamiani.
Wzorzec Singleton (Singleton Pattern)
Kreacyjny wzorzec projektowy gwarantujący, że klasa ma tylko jedną instancję w całej aplikacji oraz zapewniający do niej globalny punkt dostępu.
Wzorzec Strategia (Strategy Pattern)
Czynnościowy wzorzec projektowy definiujący rodzinę wymiennych algorytmów, zamykający każdy z nich w osobnej klasie i umożliwiający ich zamianę w czasie działania programu.
Zasady SOLID
Pięć fundamentalnych zasad projektowania obiektowego: SRP, OCP, LSP, ISP oraz DIP, zwiększających czytelność, elastyczność i łatwość utrzymania kodu.
Testowanie, Jakość i Dokumentacja Oprogramowania(8)
Asercje i Frameworki Testowe (Assert)
Instrukcje sprawdzające warunki logiczne w testach jednostkowych (np. NUnit, JUnit, xUnit), których niespełnienie powoduje zgłoszenie błędu testu.
Atrapy i Zaślepki w testach (Mocks & Stubs)
Obiekty zastępcze (Test Doubles) symulujące zachowanie rzeczywistych zależności (np. bazy danych, zewnętrznego API), umożliwiające pełną izolację testów jednostkowych.
Diagramy UML (Unified Modeling Language)
Znormalizowany język modelowania graficznego używany do specyfikowania, wizualizowania i dokumentowania architektury systemów oprogramowania.
Poziomy testowania oprogramowania
Hierarchia poziomów weryfikacji oprogramowania: Testy jednostkowe -> Testy integracyjne (współpraca modułów) -> Testy systemowe (cała aplikacja) -> Testy akceptacyjne (UAT).
Raportowanie Błędów i Defektów (Bug Tracking)
Proces rejestracji defektów w systemach śledzenia (Jira, Bugzilla, Redmine) zawierający kroki do odtworzenia, rezultat oczekiwany vs faktyczny oraz ocenę wagi (Severity) i priorytetu (Priority).
Test-Driven Development (TDD)
Metodyka wytwarzania oprogramowania, w której programista najpierw pisze test jednostkowy (który nie przechodzi), następnie kod spełniający test, a na końcu refaktoryzuje rozwiązanie.
Testowanie Black-box i White-box
Dwa główne podejścia do testowania: Testy czarnoskrzynkowe weryfikują działanie wg specyfikacji bez wglądu w kod, a białoskrzynkowe badają wewnętrzną strukturę kodu i ścieżki wykonania.
Testy jednostkowe (Unit Tests)
Zautomatyzowane testy weryfikujące poprawność działania najmniejszych izolowanych fragmentów kodu (pojedynczych metod lub klas) w oparciu o wzorzec AAA.