The notion of algorithm may be perceived in different levels of abstraction. In the lower levels it is an operational set of instructions. In higher levels it may be viewed as an object with properties, solving a problem with characteristics. Novices mostly relate to the lower levels. Yet, higher levels are very relevant for them as well. We unfold the importance of higher level abstractions for novices, by demonstrating the role of declarative observations of algorithmic problems, and the benefit of developing awareness of such observations in algorithmic problem solving. This is shown in a two-stage study, which first reveals the unfortunate lack of declarative observations, and then displays comparative results of experimental and control groups, which stems from different awareness and competence with declarative observations.
The notion of ''don't care'', that encapsulates the unimportance of which of several scenarios will occur, is a fundamental notion in computer science. It is the core of non-determinism; it is essential in various computational models; it is central in distributed and concurrent algorithms; and it also is relevant in sequential, deterministic algorithms. It is a valuable tool in algorithmic problem solving. Yet, in the teaching of (deterministic) algorithms it is not made explicit, and left unexplored. Its implicit exposition yields limited student invocations and limited student comprehension upon its utilization. These phenomena are also due to its rather unintuitive ''black-box'' characteristic. In this paper, we illuminate and elaborate on this notion with six algorithmic illustrations, and describe our experience with novice difficulties with respect to this notion.
In many occasions, the text describing an algorithmic task may entail a rather intuitive, operational solution scheme. Yet, such a scheme may not necessarily be efficient or correct. Nevertheless, novices demonstrate tendencies to hastily design their solutions that way, and avoid seeking insightful patterns, which may yield better solutions. In this paper, we name and shed light on this theme, and illustrate the essential importance of elaborating insightful patterns, which one may assimilate as general problem solving notions.