guardando listati di altri non capisci la logica della programmazione, bensì la scelta del programmatore in quel frangente (che è diversa). Sbattere la testa su codice altrui lo trovo alquanto inutile e frustrante, così come iniziare scopiazzando codice altrui (che non è detto si comprenda a pieno) è alquanto controproducente, perché per te sarà corretto quel metodo senza capire perché.
A molti la programmazione oop non piace, modi di operare, onestamente vedere programmi in C con un migliaio di righe di codice per funzione è davvero irritante (specie quando devi capire perché quella funzione non fa quello che vuoi).
Ma qui si parla di modi di programmare, per cui ognuno ha le sue opinioni.
Riguardo il libro: non è stimolante, è un testo fatto per consentire a chi non ha mai programmato di fare programmi banali, vuoi che ti faccia vedere come si fa un attacco al sito della nasa? come si crea un prodotto? Se ti scoccia leggere/studiare, non ti lamentare che il prof spiega male, perché cmq il metodo scelto dal tuo insegnante è quello giusto (e questo te lo dice chi è già fuori dall'uni e lavora).
Non puoi nemmeno aspettare degli esempi reali d'uso di tutte le feature di un linguaggio in un corso, non ci sarebbe tempo né sarebbe utile.
Il programma stupido con "se" al posto dell'"if" serve a farti capire la logica di scrittura di un algoritmo, che se hai chiara saprai scrivere un algoritmo in C, C++, C#, java o quello che ti pare, se non hai chiara capisci bene che non puoi andare avanti.
Tu o i tuoi colleghi di corso siete in grado di descrivere un algoritmo di ordinamento? tipo il bubble sort che è il più semplice.
Se lo sapete descrivere capisci bene che questo va oltre il linguaggio, quindi è inutile farti sbattere sul bubblesort scritto in java quando la stessa logica la usi per altri linguaggi di programmazione.
Il professore non può e non deve spiegarti tutto, siete anche studenti universitari, spesso le lezioni sono solo spunti da integrare con altre fonti.