non ho fatto l'uni anche se bene o male almeno l'elenco degli esami di un corso di informatica grosso modo lo conosco. Il C l'ho utilizzato per 3 anni all'itis in un programma didattico che sostanzialmente è quello che all'uni si fa in algoritmi e strutture dati. Sviluppando in .NET oggi mi rendo conto che sebbene molti aspetti relativi alla programmazione in C sono "nascosti" dagli ambienti managed messi a disposizione dai vari framework, l'esperienza passata mi è ancora utilissima per comprendere cosa e come funzionano le cose dietro le quinte e questo in molte situazioni puo fare la differenza.
A scopo didattico e per "farsi le ossa" credo che iniziare con il C ne valga la pena.
Ovvio che poi ogni corso dovrebbe usare il linguaggio giusto: avere a che fare con Ingegneria del software, e passare un ora a scovare dove hai sbagliato a dichiarare un puntatore la trovo solo una perdita di tempo, in quei casi Java (o una controparte come .NET ecc) sarebbe molto meglio.
Per quanto riguarda python io non lo prenderei nemmeno in considerazione in ambito didattico (anche se putroppo sta cosa l'ho letta piu di una volta). Python nasce come linguaggio di scripting per situazioni in cui serve velocità e praticità nel risolvere programmaticamente problemi su larga scala. In realtà lavorative vaste per DBA e sistemisti python e co. sono diventati uno strumento essenziale. Un informatico con un backgraund da sviluppatore puo benissimo utilizzare python dopo aver letto un manualetto, ma pensare di insegnare la programmazione con python lo trovo sbagliato (imho)