1 Wprowadzenie
                2 Programowanie obiektowe
                3 Zmienne
                4 Typy danych
                5 Operatory
                6 Obiekty
                7 Instrukcje sterujące i pętle
                8 Tablice
                9 Klasy, pola, metody
                10 Przeciążanie i przesłanianie metod
                11 Konstruktory
                12 Porównywanie obiektów
                13 Pakiety
                14 Modyfikatory
                15 Interfejsy
                16 Wyjątki
                17 Typy wyliczeniowe
                18 Kolekcje
                19 Java i bazy danych
                20 Klasy wewnetrzne i anonimowe
                21 Wyrażenia lambda
                22 Strumienie
            
Napisz typ wyliczeniowy z kierunkami świata (także pośrednimi, np. “north east”). Typ powinien przechowywać informacje o skrótach (np. “NE”) oraz nazwach zarówno w języku angielskim oraz polskim. Zademonstruj na przykładzie działanie nowego typu.
Napisz typ wyliczeniowy Computation, który będzie reprezentował prosty kalkulator. Niech typ ten posiada następujące wartości MULTIPLY, DIVIDE, ADD, SUBTRACT. Niech typ ten posiada metodę public double perform(double x, double y), która zwróci wynik odpowiedniej operacji. Na przykład Computation.ADD.perform(1, -5) powinno zwrócić -4.