There is much too much confusion about the difference between a “computer course” and a “computer science course” in education discussions. This is not a new problem of course. Several years ago the NCAA announced that computer courses would not count in the core courses that students have to complete for academic eligibility to play NCAA sports. Why? Well largely because a lot of courses that were not particularly rigorous were being submitted for approval. Initially even Advanced Placement Computer Science (about as rigorous an academic course as they come) was tarred with the same brush as “computer keyboarding” and “basic computer literacy” types of courses. Even today when I talk about schools not having computer science courses someone will tell me about keyboarding and applications courses and say “sure we have computer courses.” Really? Yes, really.
Today I read on Mark Guzdial’s blog (So what is “computer education”?) about two “Center(s) for Science, Mathematics, and Computer Education.” where “The words “computer science” do not even appear on either site. ” At these schools computer education apparently means using computers not what I would call computer science.
Words matter. The difference between a computer course and a computer science course is huge in the eyes of a computer scientist (or even an industry computer science professional) but is apparently not so large in the eyes of the general population. We hear it all the time that this student or that student is a computer “expert” when all they really know is a bit more about applications, games or social networking than their parents or peers. This hardly makes them computer scientists but, well, the distinction seems lost on too many people.
So what is computer science? The definition used in the ACM Model Curriculum is:
Computer science (CS) is the study of computers and algorithmic processes, including their principles, their hardware and software designs, their applications, and their impact on society.
In this context “applications” means far more than learning how to use a specific set of applications but means understanding the broader use of computers to solve problems and contribute to the functioning of society and industry as well as science and the arts. The model curriculum report goes on to say.
In our view, this definition requires that K–12 computer science curricula have the following kinds of elements: programming, hardware design, networks, graphics, databases and information retrieval, computer security, software design, programming languages, logic, programming paradigms, translation between levels of abstraction, artificial intelligence, the limits of computation (what computers can’t do), applications in information technology and information systems, and social issues (Internet security, privacy, intellectual property, etc.).
The ACM K-12 CS Model Curriculum, 2nd Edition has become the basic reference for discussing K-12 computer science curriculum and if you are interested in the topic at all this is a must read. From there you can actually go in many directions for implementation.
One can introduce programming concepts to very young children using Kodu. Middle school students will often enjoy creating programs, even fun programs, with Small Basic. Curriculum materials may be found at both of those sites and more materials are available all the time. For example there are also some third party curriculum materials for Small Basic at Microsoft Small Basic Tutorials. For older students there are many resources at the Microsoft faculty connection. Finding curriculum resources is important but there are good, teacher developed, teacher tested resources available.