Available under a Creative Commons Attribution Non-Commercial Share Alike 4.0 International Licence
A software development process is a mechanism for problem solving to help software developers plan, design and structure the development of software to solve a problem. Without a process to guide the structured evolution of a solution, it is extremely likely that at least some aspect of the resulting software will be omitted or incorrectly implemented. Even though the importance of utilising a software process for solving problems is accepted in the business and academic communities, it is a topic that is addressed very lightly (if at all) in most freshman undergraduate computing courses with most courses focussing on programming procedures rather than the process of how to develop a solution. A consequence of this is that some students go on to develop maladaptive cognitive practices where they rush to implement solutions to problems with little planning. Typically these maladaptive practices involve surface practices such as coding by rote learning and cutting and pasting code from existing projects. Such practices can be very difficult to unlearn and can result in students lacking skills in planning and designing solutions to problems which can persist to graduation.
Despite these issues, little active research has been found on the development of software processes aimed at freshman third level learners and consequently there are few approaches available to help freshman students through all stages of the software process. However, there is a wealth of current research into computational thinking (CT) as a mechanism to help solve computational problems. Even though CT is seen as a key practice of computer science, most of the research into CT (as a named area) is aimed at 1st and 2nd level education with CT being a more implicit part of third level computing courses. This suggests that there is an exciting opportunity to explicitly exploit the affordances and skills of CT into a software process aimed at freshman third level learners.
This paper presents work which has been carried out as part of an ongoing research project into this issue in which the key skills associated with computational thinking are incorporated into a conceptual framework which will provide a structure for a software process aimed at freshman undergraduate computing students. This research is not tied to any particular programming paradigm but its use is assumed to be in the context of imperative, commercial programming languages. The framework is centred on declarative knowledge (in the form of threshold concepts) and procedural knowledge (in the form of CT skills) scaffolding freshman software development from initial planning through to final solution. The framework known as Computational Analysis and Design Engineered Thinking (CADET) – once operationalised as a software process with an accompanying support tool - aims to support the structured development of both software and student self-efficacy in the topic.
Higgins, C., O'Leary, C., Hanratty, O., Mtenzi, F. (2017). A conceptual framework for a software development process based on computational thinking. Proceedings of the 11th International Technology, Education and Development Conference (INTED17), Valencia, Spain, pp.455-464. ISBN: 978-84-617-8491-2 doi: 10.21125/inted.2017.024