Will you tell students that Algorithms + Data Structures = Programs now(21st century)? Algorithms + Data Structures = Programs occurs in 1976 (in Niklaus Wirth's book). In the past, we (teachers) may usually cite this equation to emphasize the importance of algorithms/data structures.

But, as far as I know, some fundamentalists don't agree on it. They think this equation is out of date and is possible to mislead students into overlooking other skills' significance (like unit test, design pattern, low-level knowledge...). 

So, what do you think? Will you tell students that Algorithms + Data Structures = Programs now(21st century)?
The Wirth formula, Algorithms + Data Structures = Programs is still valid. It is also complete. A program is nothing more than algorithms acting on data structures. That formula does not make explicit the difference between a bad, error-riddled program and a good, error-free efficient program. Looking at the formula, however, can show how to improve the first and make it into the second.

Stating that programs are built of exactly two components, data structures and algorithms, means that the only way to improve a program is to improve one, or both, of its components.


  Algorithms + Data Structures = Programs
  Sloppy Algorithms + Mediocre Data Structures = Buggy Programs
  Better Algorithms + Data Structures = Better Programs
  Excellent Algorithms + Efficient Data Structures = Superior Programs.


The Science part of Computer Science in programming is finding the way to create the better, or excellent, algorithms and develop the efficient data structures. That's where the skills, whatever the instructor wants to focus on, come in to effect. Design patterns help to sort out the options, and provide an established pattern to follow when creating a new algorithm or data structure. Unit testing helps to validate the operational correctness of the written code. Low level knowledge of the target system may allow the coder to increase efficiency, and low level knowledge of the chosen language might allow the coder to utilize "tricks" or "quirks" built in to the language (be they bugs or features is unimportant).

Bottom line is that the only way to make a program better is to make its components better. There are only two components to work with; data structures and algorithms.


  Will you tell students that Algorithms + Data Structures = Programs now(21st century)? 


Not only will we tell students that, we should have that on the door lintel
of every classroom and lecture hall where programming is taught.