What programming languages should every computer science student be taught

paradigmsprogramming-languages

What languages (or classes (as in paradigms) of programming languages, plus a recommended language of that class) should every computer science student be taught in college according to you? Motivate your answers; why that language? What use will one have from it? What concepts does it teach (better than language X does)?

Note/clarification: This question is about computer science with heavy focus on software engineering, not pure computer science. It is still computer science education and not software engineering education which is the focus.

Best Answer

I'm going to give a list:

  • Assembly (a relatively simple dialect): It's important to understand at least a little of the fundamentals
  • C: Procedural language, used in many places. Does not burden new students with whole new concepts like OOD all at once.
  • Java / C# / Eiffel / C++: Something Object-Oriented is good, any one of these would accomplish the goal of teaching the students OOD and once they understand one of these languages, they should be able to learn the others.. There are many good languages, I listed Eiffel because it also has design-by-contract.
  • LISP and Prolog: Teaches students a whole new way to think, which is imporant, even if they never use either of these "in the real world".
  • SQL and XML: Introduces new ways to think about data and how to retrieve it and manage it.

Students should be exposed to all of these paradigms at the very least. Not just one or two.

I suppose many people will suggest Python to cover the procedural style, OOP style, and maybe others, but I don't have enough personal experience with Python to be able to confidently recommend it.

Related Topic