Introduction to Programming
Curriculum for a High School-level Introduction to Programming course using JavaScript
Goals and Non-Goals
This course is geared towards individuals who have never programmed before. It may also be useful for those who have played around and are possibly interested in getting a deeper knowledge of programming. At the same time, this course is designed to work well for individuals who are planning to enter the field of Computer Science.
The primary goal of this course is to:
- Teach students the basic elements of programming: how to break problems down and how to build solutions up.
- Endow students with sufficient skill to tackle basic programming problems on their own.
- Help students learn what is possible to do with programming. Even if they don't know the specifics, they should be able to recognize which problems are a good fit for a program.
The following are non-goals:
- Classic Computer Science knowledge is not included. Topics such as algorithm analysis, data storage design, multithreading, operating system design, and hardware architecture details are all important for Computer Scientists to know, but are not within scope of this course.
- APIs and language details. There is no need to teach the specifics of any API. Details are for Google.
Notes on JavaScript
Why JavaScript?
JavaScript was chosen for several reasons:
- It's everywhere. JavaScript programmers are in high demand, and that demand is growing daily. Learning JavaScript instead of a "non-programmer's language" gives students experience and skills in a real-world programming language.
- It's fairly easy for beginners to pick up. Aside from some corner cases (see below), the fundamental components of JavaScript are simple and easy to learn.
- Every computer has JavaScript already installed. This course starts with nothing more than a web browser. With JavaScript, there's no need to install a runtime or even an IDE until later.
Topics to Avoid
I recommend avoiding the following topics. Again, these are all important for Computer Scientists to know, but they are out of scope for an Introduction to Programming course.
- Floating-point inaccuracies.
- Character encodings.
If these topics do come up (i.e., students notice odd behavior), then I recommend a brief description of the problem and then moving on.
Language-Specific Notes
- Always use
let
. Never usevar
orconst
. - Always use
===
and!==
. Never use==
or!=
. - Avoid
undefined
.