Originariamente inviato da alemagno
Per prima cosa leggerei bene il testo dell'esercizio, distinguendo le "azioni" che il programma dovrebbe fare dagli "oggetti" che devo creare, ecc.
Beh, certo ma più che altro avere bene idea di quali sono le entità da "modellare". Per esempio se un esercizio ti parla di gestire una lista di studenti letta da un file, allora innanzitutto quasi sicuramente avrà senso creare una classe Studente che "modella" uno studente con le sue varie proprietà.

Originariamente inviato da alemagno
Dopodiché dovrei già sapere più o meno quanti file .java andrò a creare: uno per l'oggetto del contendere, uno che faccia da comparatore di quegli oggetti, un altro contenente la classe main ed i metodi del programma stesso.
Sì e per precisare è bene dire che dovresti in genere cercare di non far fare alle classi troppe cose. Ogni classe dovrebbe essere focalizzata su uno (o eventualmente max pochi aspetti). Questo è uno dei concetti fondamentali: "high cohesion" (alta coesione).
Se fai una classe es. Studente puoi metterci tutti i metodi setter/getter che vuoi per le proprietà, poi equals/hashCode (se servono), anche compareTo di Comparable o altro. Ma tutto quanto focalizzato solo alla definizione/gestione dei dati di uno studente.
La classe Studente cioè non dovrebbe mettersi a fare I/O su file, fare input verso l'utente o mostrare una dialog di avvertimento per qualcosa anche se fosse relativo allo studente.

Originariamente inviato da alemagno
Siccome l'argomento principale del corso di studi riguarda il "collections framework", dovrei individuare uno o più tipo di collezioni che utilizzerò per soddisfare quanto richiesto.

Avete qualche suggerimento in merito?
Qui quale è il dubbio preciso? Ci sono tante collezioni, ognuna ha le sue caratteristiche e lati positivi/negativi. Dipende ovviamente da cosa devi fare.