Evaluation of a Structured Design Methodology for Concurrent Programming

2019 
Learning how to design and implement a program is hard. Teaching methods and textbooks on Java programming often treat a new subject in terms of syntax and examples. Little attention is paid to systematically designing programs with these new concepts. Research has shown that such a complex task requires not only conceptual knowledge, but also explicit procedural support. In this paper, we investigate the effect of combining conceptualand procedural guidance to teaching and learning concurrent programming. We build on earlier research in which we have introduced such a structured design methodology which divides the development of multi-threaded Java programs into a sequence of explicit, manageable steps: the Steps Plan. We present our experiences with applying the Steps Plan in an introductory course on object-oriented programming, with multithreading. The main questions addressed are: "What problems did the students encounter in direct relation to the Steps Plan?", and "What general problems surfaced?" As to the first question, two important issues were that using a relatively far developed sequential solution as a stepping stone towards a multi-threaded solution wrong-footed some students, and that remedying race condition situations turned out to be supported at a too high level of abstraction. As to the second question, two notable issues were that deciding on the right amount and type of concurrency by themselves is maybe too difficult for students at this level, and that the notion of(establishing) correctness or quality of a solution is, different from the sequential case, not intuitively clear to students. For these issues, the paper recommends remedies and indicates directions for future work. We discuss the consequences for educationas regards teaching materials and forms of teaching.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    13
    References
    0
    Citations
    NaN
    KQI
    []