As we move into planning season for the next school year, let's think about the ideal mixture of programming languages and courses that should be offered to high school students.
MOST POPULAR PROGRAMMING LANGUAGES
If you want to identify the most popular programming language to teach your high school students, a little online searching will produce a variety of rankings and lists. For example, back in 2018, a couple of different sources ranked the top languages as shown below.
Clearly there is little agreement between rankings, but you can see that the main, general-purpose languages like Java, Python, C#, and C++ are well-represented. If we fast-forward 5 years (about the length of time it will take a high school senior to graduate with a BSCS degree from college), a new picture emerges.
We can see there is still little agreement between sources. There are some new languages, while the major languages remain in the mix. Our main takeaway from these rankings is that you shouldn't worry about finding the "top" language to teach your students. By the time your high school students enter the workforce, the answer will have changed!
It's not WHAT you teach, it's HOW you teach it.
THE BIG QUESTION
We are frequently asked...
"What language should my high school student learn to ensure success in the job market?"
Our answer is always...
"It doesn't matter. At all."
When planning for success in the job market, know that software engineering companies generally require a 4-year degree and don't consider your high school experience. Because popular languages change over time, and companies often own code bases in multiple languages, the best job candidates should be multi-lingual. Students will gain experience in multiple languages throughout their college careers.
What does impact a college student's ability to land that first job? Their grades and college coursework, any related internships or job experience, their ability to communicate and answer questions, and references or connections they have within the company are all big factors.
CTE and Computer Science GOALS
Because computer science courses are often under a CTE umbrella, those courses tend to have a heavy focus on job-ready skills. High school teachers have to worry about preparing kids for the job market with software development processes, certifications, and soft skills like customer service or professional behavior. Unfortunately, that focus is misguided. Remember, computer science jobs generally require a 4-year degree, so your goal at the high school level is not preparing job-ready candidates!
What should be our goal for a high school computer science experience? Simply put, to encourage students to pursue computer science in college if it's a good fit. That's it! Students who do not enjoy their high school coding experience are unlikely to consider computer science in college.
We can encourage high school students in computer science by...
- Offering a variety of fun, introductory-level computer science classes
- Ensuring students can schedule those classes at any time with minimal prerequisites
AVOID THE PYRAMID TRAP
With our CS goals firmly in mind, think about a typical computer science "pathway" defined at the state or district level. Students are funneled into an introductory computer programming course first, then subsequently harder programming courses (usually with the same language).
Why did we draw the sequence as a pyramid? Because you might start with many kids at the introductory level, but you lose them rapidly as you get into more advanced classes. By the time you reach the top, you have few kids, few teachers able to teach those advanced topics, and little available curriculum to support your program. As a fun statistic, consider the state of Texas, which defines "Computer Science I" and "Computer Science II" courses. Texas estimates about 25K students will take CS I each year, while only 5K students will take CS II. We've lost 80% of our students just moving up the first step in the pathway!
A BETTER APPROACH
Keeping our goal firmly in mind - "Encourage students to pursue CS in college" - how should we arrange high school courses? We recommend offering a variety of introductory courses that expose students to multiple languages and computer science topics. Computer science is a diverse field, so give kids a chance to explore simple programming, video game design, web design, and so forth. It only takes one high-quality experience to make students think "this is for me"!
With this approach, schools can offer 4 years of computer science courses that all have a chance for high popularity and student counts. Introductory courses have few prerequisites, so even a high school senior can give computer science a try at the last minute. It is easier to find teachers who can teach introductory classes, and you will find plenty of curricula to support those classrooms. Naturally, we recommend CompuScholar's courses for a comprehensive lineup :).