Semestr I
- Wstęp do programowania
		
- Kod maszynowy i kod źródłowy, kompilacja
 - Narzędzia potrzebne do pracy na naszym kursie
 - Pierwsze proste programy
 
 - Zmienne i typy
		
- Co to jest zmienna i do czego służy?
 - Wybrane typy języka C++ dla liczb i napisów
 
 - Komunikacja z użytkownikiem
		
- Wypisywanie informacji na ekran za pomocą cout
 - Wczytywanie danych od użytkownika z terminala za pomocą cin
 - Programy w trybie tekstowym wykonujące różne obliczenia
 
 - Warunki logiczne
		
- Instrukcja warunkowa if/else
 - Porównywanie liczb i napisów
 - Spójniki logiczne (“i” oraz “lub”) i negacja
 - Typ logiczny bool
 
 - Pętle
		
- Budowa i zasada działania pętli while
 - Pisanie programów wielokrotnie powtarzających czynności
 - Wykorzystanie zmiennych w pętli i jej warunku
 - Pętla do-while i jej zastosowania
 - Pętla for i jej zastosowania niezwiązane z tablicami
 
 - Funkcje
		
- Co to jest funkcja w programowaniu i do czego służy?
 - Korzystanie z wbudowanych funkcji języka C++
 - Definiowanie własnych funkcji
 - Parametry i wynik funkcji
 - Wykorzystywanie własnych funkcji w programach. Dobre praktyki programowania
 - Pierwsze przykłady aplikacji składających się z wielu plików źródłowych
 
 - Tablice
		
- Deklaracje i korzystanie z tablic o stałej długości
 - Zastosowanie pętli for do pracy z tablicami
 - Pisanie prostych algorytmów w oparciu o tablice
 
 - Operacje na tekście w języku C++
		
- Tablice znaków i typ string
 - Badanie charakterystyki napisów
 - Palindrom
 - Szyfr Cezara i szyfry podstawieniowe
 
 
Semestr II
- Wskaźniki
		
- Wskaźnik do zmiennej – co to jest, jak można wykorzystać?
 - Zmienne typu wskaźnikowego, operatory * i &
 - Parametry przekazywane przez wskaźnik i przez referencję
 - Arytmetyka wskaźników („przechodzenie po pamięci”)
 - Tablice a wskaźniki
 - Dynamiczna alokacja pamięci, instrukcje new i delete
 
 - Algorytmy związane z systemami liczbowymi
		
- Rozumienie systemów liczbowych, w tym sytemu dziesiętnego i systemu dwójkowego
 - Algorytmy zamiany liczb między systemami liczbowymi
 - Operacje arytmetyczne w różnych systemach liczbowych
 
 - Algorytmy związane z liczbami pierwszymi i złożonymi
		
- Sprawdzanie pierwszości liczb
 - Najmniejsza wspólna wielokrotność i największy wspólny dzielnik; algorytm Euklidesa
 - Sito Eratostenesa
 - Rozkład liczby na czynniki pierwsze
 
 - Algorytmy poszukiwania
		
- Poszukiwanie elementu w dowolnej tablicy
 - Schemat „pętla + warunek”
 - Poszukiwanie elementu w tablicy uporządkowanej
 - Minimum i maksimum
 - Poszukiwanie podciągów
 
 - Algorytmy sortowania
		
- Sortowanie bąbelkowe
 - Sortowanie przez wstawianie
 - Algorytm quicksort
 
 - Wstęp do złożoności obliczeniowej
		
- Złożoność czasowa i pamięciowa
 - Złożoność asymptotyczna i notacja dużego O
 
 
Semestr II (wersja dla grup uczących się Javy)
- Wstęp do języka programowania Java
		
- Instalacja niezbędnego oprogramowania i przegląd narzędzi do Javy
 - Zasada działania platformy Java, bajtkod, maszyna wirtualna
 - Pierwsze programy z podkreśleniem podobieństw i różnic względem C++
 - Komunikacja z użytkownikiem
 
 - Klasy i obiekty w języku Java
		
- Co to jest obiekt i do czego służy?
 - Metody, czyli funkcje definiowane w klasach
 - Tworzenie obiektów za pomocą konstruktora domyślnego oraz własnych konstruktorów
 - Jak ma się zmienna do obiektu?
 - Wzmianka o klasach w języku C++. Różnice między Javą a C++
 
 - Obiektowy styl programowania
		
- Dziedziczenie (rozszerzanie) klas
 - Nadpisywanie metod i „polimorfizm”
 - Poziomy dostępu i „enkapsulacja”
 - Interfejsy i ich przeznaczenie w Javie
 
 - Graficzny interfejs użytkownika Swing
		
- Okno i jego komponenty
 - Podstawy obsługi zdarzeń
 - Tworzenie aplikacji „okienkowych” z wykorzystaniem edytora do projektowania wizualnego
 - Przykładowe aplikacje z polami tekstowymi, liczbowymi, listami wyboru i przyciskami
 - Bezpośrednie rysowanie grafiki 2D w programach Java. Przykład prostej gry
 
 - Kolekcje i struktury danych
		
- Czym jest lista (List), jak się jej używa i czym się różni od tablicy?
 - Pętla „for-each”
 - Inne rodzaje kolekcji i ich przeznaczenie
 - Słowniki (Map) i ich zastosowanie w programach
 
 - Programy służące do pracy z danymi (podstawy)
		
- Czytanie i zapisywanie plików
 - Przykładowe programy obliczające statystyki na podstawie danych z pliku
 - Tradycyjny styl programowania oparty o pętle i warunki
 - Rzut oka na funkcyjny styl programowania oparty o strumienie i wyrażenia lambda