Page under construction!!

Description of ProCoSK material

The ProCoSK website is targeted at computing educators and researchers. The purpose of the ProCoSK website is to present the learning material from a teaching point of view.

Target students

The exercises presented here were designed for students who have already attended an introductory undergraduate course on (imperative) programming but have not reached a sufficient proficiency level.

Thus, the aim of the exercises is not to introduce language syntax or programming constructs. Instead, this learning material serves as a way to review these constructs when the course is over, with the goals of improving the ability to reason about code and design programs by using typical programming patterns. The most brilliant students build these abilities on their own, from the examples they have seen; students who struggle need help in building this knowledge and may be supported in their learning process by this kind of material.

Covered topics

The ProCoSK material presented focuses in particular on three topics:

  1. Input handling - recurrent issues to be considered when dealing with input, and goals in handling them: how to store the input in memory, where to retrieve it from, how to identify its end, whether it comes in a format directly ready for processing.

  2. Iteration plans - concepts and terminology related to goals and plans [Soloway, 1986)], in particular basic algorithmic iteration plans, as those listed in [DeRaadt, 2009] and [Ginat, 2013].

  3. Plan composition - the different ways in which plans can be composed to achieve aggregate goals.

The ProCoSK material is organized in worksheets.

For each topic, there is a brief and schematic sheet presenting the topic, and a corresponding RAT (Reading Assessing Test). The RAT is aimed at verifying that the students did read the text, and it contains only straightforward questions whose answers are explicitly written in the text.

The final assignments –for each topic– ask to write programs from scratch, starting from requirements specifications written in natural language. These final assignments are prepared by a sequence of decreasingly scaffolded exercises. For instance: * at first, students are assigned program comprehension tasks that help them identify and recognize plans in code snippets, while associating them with the corresponding goals; * they are guided in completing, fixing or writing given plans; * they are guided in analyzing program requirements in order to identify the goals to achieve and to design the appropriate plan/composition of plans.

Here we present, for each topic, the related sequence of exercises, and comment on how the sequence is designed. Each exercise is described with a short “teaching sheet” that illustrates the purpose of the exercise, classifies its type and topic, and provides links to the assignment text, the related code, and a solution.

Exercise types

References

[De Raadt, 2009]
Michael de Raadt, Richard Watson, and Mark Toleman. 2009. Teaching and Assessing Programming Strategies Explicitly. In Proceeding of ACE ’09. Australian Computer Society, Inc., AUS, 45–54.

[Ginat, 2013]
David Ginat, Eti Menashe, and Amal Taya. 2013. Novice difficulties with interleaved pattern composition. In Prooceedings of ISSEP ’13, Vol. 7780 LNCS. Springer, 57–67.

[Soloway, 1986]
Elliot Soloway. 1986. Learning to Program = Learning to Construct Mechanisms and Explanations. Communication of the ACM 29, 9 (1986), 850–858.