How to choose the first programming language (Java, Python, JavaScript, Pascal, C#, R, MatLab, Haskell) for introduction to programming code classrooms.
December 1, 2021

Which programming language should you teach first?

In 30 seconds...

Picture this: you have a classroom full of students, eager to learn and ready for their first coding course. Where do you begin? Choosing which programming language to teach is not an easy task, and the answer is complex. 

But, fear not! This article outlines some key questions to think about before picking a programming language and paradigm. Should it be Python, Java or C#? Or maybe even a functional programming language like Haskell? Find out more below.

This article is not only directed to anyone who’s designing a new introductory programming course or CS program, but also to anyone who is currently teaching a programming course, and thinking of modifying it.

Designing an introductory programming course for students is not an easy task and an important decision you’ll have to make is picking which programming language to teach. As with everything in Computer Science Education, there are many different views on this. In this article I will try to combine these and inevitably add one more view to the mix.

Before starting, let me tell you a little bit about my background. My formal education is in Computer Science, where I have also worked as a teaching assistant for a couple of years, mostly teaching programming to CS-majors. Currently, I’m CEO at CodeGrade, allowing me the pleasure and opportunity of working with coding educators globally. On a daily basis, I work with them and consult on their courses. This hopefully gives me a broader perspective of coding courses in higher education in a wide variety of settings.

In this article, I’ll try to compose four questions that you should answer when selecting the programming language for your introductory coding course, but also, importantly, the programming paradigm.

What is a programming paradigm?
‍
A paradigm for a programming language classifies the concept, methodology and features a language has and how programs written in this language should be programmed. There are two distinct paradigms: imperative and declarative. Within the imperative paradigm you have, for instance, procedural languages where instructions are grouped into procedures (such as C) and object-oriented languages (such as Java, C++, Python). Within the declarative paradigm, where you declare the properties of a program but now how to compute it, you have the functional programming languages (such as Haskell, F#) and logical programming languages (Prolog). Many languages also support multiple paradigms.


Source: somethingofthatilk.com

1: Who am I teaching?

The first question you should ask yourself is what your target student group is. Different student groups have different learning goals and thus need different types of education.

Broadly speaking, I generally see two different target groups. CS-majors (this is specific to higher education) and non-CS-majors (this is usually still higher education, but could also apply to K-12, and hopefully more and more coding education will happen at the K-12 level).

If you teach prospective IT professionals, the choice of paradigm and programming language is perhaps of less concern. As in most Computer Science degrees, students will (and I think should) learn multiple programming languages and paradigms. Different perspectives make a better problem solver and a more dynamic programmer. To give students a deeper perspective you want to pick a strongly-typed programming language, forcing them to think about typing from the get-go.

If you teach students from non-CS majors (or K-12), the goal is generally to give them an introduction in the world of computing and they often only have one or a couple computing courses. In this case, the choice of programming language might become more important. One example is that you might want to teach students a language that will help them in their future careers. For instance, when a learner needs to automate something simple which could be easily done by writing a Python script.

Another reason could be that students study a field where coding plays a supportive role, such as in the Biomedical Sciences or Physics. In that case you’d probably want to teach the students a language that’s useful in that field. Good examples of this are (again) Python, MatLab / Octave or R.

Teaching Python, Java, JavaScript, C or any other language? CodeGrade will help you design the best course for any programming language!

Continue reading

Snowball Miracle: A Terminal, a Smarter AI Assistant, and Tighter Exam Controls

CodeGrade released Snowball Miracle on 21 August 2026. A terminal with tabs, an AI assistant that reads AutoTest results, tighter exam controls, API changes.

Watch Now! CodeGrade Back to School Webinar

Watch the recap of our Back to School webinar. See the new built-in Terminal and redesigned code editor, learn how to set up your first autograded assignment on CodeGrade Free, and get a look at the latest features.

What we recommend for teaching intro to programming in 2026

Planning an intro programming course in 2026? Here is the teaching stack we recommend: editor, autograder, plagiarism, AI policy. Start free up to 50 students.

Sign up to our newsletter