Ich kann mich Miss*Sunflower nur anschließen. Was mich persönlich ein gutes Stück in Java weitergebracht hat, war das Software-Praktikum im Grundstudium ("Entwickle eine KI, die sich übers Netzwerk mit einem Gameserver verbindet und eine modifizierte Version von Reversi gewinnt") und die Übung in Designing Interactive Systems II ("Entwickle eine Referenzimplementation eines einfachen Window Systems*").
Zu solchen Projekten gehört natürlich immer auch ein entsprechender theoretischer Hintergrund. Wenn du dir aber an einer der beiden Aufgaben die Zähne ausbeißen willst, kann ich dir die Unterlagen dazu gerne an eine RWTH-Adresse weiterleiten.
Ansonsten such dir halt einfach ein (künstliches) Problem aus deinem persönlichen Umfeld aus, das du mit einer Software lösen möchtest und versuche, es zu programmieren. Lies dazu Doku deiner Programmiersprache/-umgebung und erkunde einfach mal die Möglichkeiten.
Hiwi-Jobs sind zum Lernen vermutlich ungeeignet, weil die schon so ausgeschrieben werden, dass der Arbeitgeber am Ende etwas davon hat und nicht (nur) du. :)
* Wenn man nicht weiß, was ein
Window System ist, und vor allem, welche strukturellen Anforderungen da im Design stecken, klingt das leicht. Lasst euch gesagt sein: Das ist es nicht.