| lp | Narzędzie | Komentarz |
| 1 | Klasa | Projekt powinien implementować co najmniej jedną klasę |
| 2 | Atrybut | Jedna z klas powinna zawierać co najmniej jedno pole |
| 3 | Metoda | Jedna z klas powinna zawierać co najmniej jedną metodę (inną niż konstruktor) |
| 4 | Parametr | Jedna z metod powinna zawierać co namniej jeden parametr |
| 5 | Obiekt | Projekt powinien implementować stworzenie co najmniej jednego obiektu |
| 6 | Obsługa wejścia/wyjścia w konsoli | Projekt powinien sczytywać dane z klawiatury i wyświetlać w konsoli na monitorze. Co najmniej jeden obiekt powinien powstać z danych przekazanych do programu z klawiatury. |
| 7 | Hermetyzacja | Wszystkie atrybuty powinny być prywatne. Jeśli to potrzebne, powinny zostać wprowadzone metody typu "get" i "set" |
| 8 | Konwencja nazewnictwa | Wszystkie klasy, obiekty, atrybuty, metody itp. powinny mieć nazwy zgodne z konwencją węgierską oraz CamelCase |
| 9 | Operator new | Projekt powinien zawierać operator new co najmniej raz |
| 10 | Konstruktor | Projekt powinien zawierać co najmniej jeden konstruktor inny niż domyślny |
| 11 | Zmienna statyczna | Projekt powinien zawierać co najmniej jedną zmienną statyczną |
| 12 | słowo kluczowe this | Projekt powinien zawierać słowo kluczowe this co najmniej raz |
| 13 | Obiekt anonimowy | Projekt powinien zawierać co najmniej jeden obiekt anonimowy |
| 14 | Dziedziczenie | Projekt powinien implementować co najmniej jedną nadklasę i podklasę |
| 15 | Kompozycja | Projekt powinien implementować co najmniej jeden raz relację kompozycji |
| 16 | Agregacja | Projekt powinien implementować co najmniej jeden raz relację agregacji |
| 17 | super | Projekt powinien zawierać słowo kluczowe super co najmniej raz |
| 18 | Przeładowanie metody (Method overloading) | Projekt powinien zawierać co najmniej jedną przeładowaną metodę |
| 19 | Nadpisywanie metody (Method overriding) | Projekt powinien zawierać co najmniej jedną nadpisaną metodę |
| 20 | final | Projekt powinien zawierać słowo kluczowe final co najmniej raz |
| 21 | static (metoda, blok) | Projekt powinien zawierać słowo kluczowe static co najmniej raz w kontekście innym niż zmienna statyczna. Np. metoda (inne niż main) lub blok statyczny |
| 22 | Klasa Abstrakcyjna | Projekt powinien implementować co najmniej jedną klasę abstrakcyjną |
| 23 | Metoda abstrakcyjna | Jedna z klas powinna zawierać co najmniej jedną metodę abstrakcyjną |