Most of today’s introductory computer science education is based on an immediate programming approach, that is, students are directly confronted with learning a programming language and writing code. While this approach can be quite effective, it can also have two negative side effects. First, it can scare off students who get the wrong impression that computer science is all about coding. This is particularly unfortunate because the students who leave are often those whose interest extend beyond programming and who would provide more diversity for the field. Second, programming exposes and amplifies the differences between incoming students in what they already know and can do, which often discourages those students who have little or no prior experience in programming. Again, this carries the danger of scaring off particularly those students that could infuse diversity into the field of computer science.
An alternative approach to teaching computer science concepts is to delay programming activities and introduce concepts through metaphors and examples that do not directly draw from programming examples. Specifically, we can identify principles of computing in everyday activities and well-known stories and thus explain technical ideas through referencing well-known, nontechnical domains. After concepts have been firmly established, programming can be introduced gently by implementing the very stories and activities that were used for illustration (instead of using generic programming example problems). We call this the Story Programming approach.