@Fabste: Ja, solche Kurse sind ok, aber kein Muss, um es professionell zu können. Tatsächlich entsteht die Professionalität in dem Bereich zum größten Teil aus Selbststudium.
Ich studiere Informatik und die Realität sieht so aus, dass sich die meisten Studenten das Programmieren selbst beibringen.
Das hat verschiedene Gründe. Zum einen sind die Hochschulveranstaltungen nicht ausreichend. Um es wirklich professionell zu beherrschen braucht man Jahre, wenn nicht gar ein Jahrzehnt (empfehlenswert in diesem Zusammenhang ist Peter Norvigs
Teach Yourself Programming in Ten Years). Desweiteren kommt es durchaus vor, dass man einen Professor bekommt, der didaktisch so schlecht ist (ich sage bewusst nicht fachlich, denn fachlich haben sie eigentlich immer viel drauf), dass man mit Selbstlernen tatsächlich besser (und schneller) dran ist.
Das meiste habe ich gelernt, als ich im Softwarepraktikum in einem neunköpfigen Team für ein halbes Jahr an einem Projekt arbeiten musste. Das Ende der Fahnenstange ist noch lange nicht erreicht, ich sehe mich höchstens als fortgeschrittenen Anfänger und ich bin fast fertig mit dem Studium.
Was mir sehr stark in der Lehre fehlt ist ein Fokus auf guten Programmierstil. Der wird nur selten überhaupt bewertet. Dabei ist er gerade für Teamarbeit essentiell.
@Cerberus: Welche Sprache geeignet ist, hängt ganz von Dir selbst ab. Willst Du viel lernen, bist von allein motiviert genug, auch wenn alles nicht so schnell geht und willst Du sofort mit allem konfrontiert werden? Nimm C oder C++ (wobei nur letzteres objektorientiert ist).
Brauchst Du unbedingt schnelle Erfolge am Anfang, um Dich zu motivieren? Nimm C# oder Java (beide objektorientiert).
Zuletzt ist natürlich auch wichtig, was Du genau programmieren willst. Jede Sprache hat bestimmte Anwendungen, für die sie besonders geeignet ist.