Oltre alle eccellenti risposte sintetiche di @ Larry e @ SteveS, voglio sottolineare un punto molto importante:
The students are skeptical that turning off non-executable stacks, turning off canaries and turning off ASLR represents a realistic environment.
Speriamo che questo sia vero per i sistemi dei tuoi studenti.
Nel resto del mondo, tuttavia, questo è ancora molto comune, sfortunatamente. Oltre alle piattaforme che non supportano queste, ci sono sempre prodotti di scarsa qualità che richiedono la chiusura di queste, versioni precedenti del sistema operativo e anche solo cattive configurazioni errate.
Ancora molto realistico, purtroppo.
In cima a tutto, altri 2 commenti di un pov educativo:
1. qualcuno deve costruire quelle difese, giusto?
2. Anche se ipoteticamente avessero ragione - you only need pointers in C/C++
non significa che uno sviluppatore Java non dovrebbe imparare come queste cose funzionano, all'interno del computer, giusto?