I was recently asked ‘what is your recommendation for the first programming language to teach in a three years academic program?’. Thinking about this question, it was clear to me the programming language itself is just a tool and the topics been taught are the ones that should be in question.

Unlike many others, I believe there is no place to waste precious time and have a course that focuses solely on teaching procedural programming. Based on my experience teaching courses during the years there shouldn’t be any problem teaching the students during the first course they take object oriented and functional programming. I do it for years in private professional courses.

The gap between the industry expectations and the knowledge students have when graduating continuously grows. The only available way for closing this gap is by leveraging the level of all practical courses starting with teaching object oriented and functional programming during the first semester of the first year.

C# is one of those very few programming languages that supports object oriented and functional programming characteristics. Java supports object oriented programming only. Other options, such as Scala and F#, do not belong to the main stream. Thinking about the students interest in acquiring practical skills it is obvious that C# should be the first programming language they learn.

Given today available programming languages, C# is the richest. Knowing C# you will find it very easy to learn other programming languages. Knowing C# you can easily learn Java (You cannot say the opposite. Java is a poor programming language comparing with C#). Knowing C# you can easily learn C++ (It would be simpler comparing with Java. C# supports many C++ capabilities Java does not). Knowing C# it would be much simpler (comparing with Java) to learn functional programming. Functional programming characteristics exist in many conventional programming languages (PHP, JavaScript…). Knowing C# it would be simpler to learn those programming languages.

Leave a Reply

Your email address will not be published. Required fields are marked *