How to start programming in high school

Which language to pick, a realistic first month, first project ideas, and how parents can help without hovering.

By Judson Dunne. Updated November 7, 2026.

I got hooked in high school. I took Harvard's CS50 in my junior year at Hanover High, and I went from curious to certain very quickly. Here's what I'd tell a student starting now, and their parents.

Pick Python, and don't overthink it

The best first language is one that lets you build something quickly and doesn't bury you in syntax. For most students, that's Python. It's also what Hanover High uses: its Introduction to Computer Science courses teach text-based coding in Python.

There are two good exceptions. If your student mostly wants to make websites, JavaScript makes sense, because they'll see results in a browser right away. And if they're heading toward AP Computer Science A, that exam uses Java, though the concepts carry over from Python. Switching languages later is much easier than people expect.

A realistic first month

Week 1: make the computer do something. Variables, printing and taking input. Write a program that asks for your name and age and says something back.

Week 2: make it decide and repeat. Conditionals and loops. Here's what a student can realistically write by the end of this week:

import random

secret = random.randint(1, 20)
guess = None

while guess != secret:
    guess = int(input("Pick a number from 1 to 20: "))
    if guess < secret:
        print("Higher")
    elif guess > secret:
        print("Lower")

print("You got it!")

It's only a dozen lines, but it's a real game. Now change it: count the guesses, or limit them to five. Changing a program is where most of the learning happens.

Week 3: organize it. Functions and lists. Rewrite last week's game with a function for each job.

Week 4: build something of your own. Pick something small from the list below and finish it, even if it's rough.

First project ideas

  • A quiz about something you know a lot about
  • A tool that calculates something for a sport you play
  • A text adventure game with a few rooms
  • A simple personal website with a page about your hobby
  • A program that tracks your training, reading or practice

Interest matters more than ambition here. A student who cares about the thing will push through the bugs.

Avoid the tutorial trap

Watching someone else code feels like learning, and it's easy to spend months that way. The test is whether you can start from a blank file. A good rule is to spend at least as long writing your own code as you spend watching or reading. When you finish a tutorial, close it and rebuild the project from memory with one thing changed.

Getting stuck is the job

Every programmer gets error messages all day. What separates beginners from everyone else is what they do next: read the message, work out which line it means, and try one small change. AI tools can help explain an error, but if they write everything for you, you won't build the skill. Try it yourself first, and ask for an explanation instead of an answer.

For parents

  • You don't need to know how to code. Ask them to show you what they built and explain how it works. Kids love this, and explaining is great practice.
  • Watch for ownership, not hours. A student who comes to you with "look what I made" is doing great, even if the program is small.
  • Frustration is normal. The feeling usually means they're right at the edge of learning something.
  • Let it stay fun at first. Pressure about college or careers can wait until they've fallen in love with building something.

If you're at Hanover High

The school's path runs from Introduction to Computer Science A and B to Computer Science 1, and the math department notes that students can go on to a Dartmouth course after that. Students who want to get ahead can start before grade 10. I've written more about how I work with Hanover families.