Attrition in the introductory Computer Science course is high. One of the reasons for the high attrition is the mis-alignment of assessment and instruction in the course. If we are to ensure the success of larger number of students in the course, we must explicitly teach algorithm formulation, program design and proper coding techniques. This project is currently developing and evaluating practice software for these three steps in the process of programming.
Computing skills are in great demand today. Computational thinking skills are now being recognized as critical to all STEM majors. This project attempts to help students develop their computing and computational thinking skills.
When addressing computing and computational thinking skills, most existing systems focus on motivation more than ability, through the use of specialized hardware (e.g., robots, tablets) and software environments (e.g., game playing, story-telling). Our approach will focus on ability more than motivation.
We are developing, evaluating and will disseminate practice software that will help improve the ability of students at algorithm formulation, program design and proper coding techniques. The software can be used by students on their own time, at their own pace. It will be evaluated for the effectiveness of its design and features, and for its effectiveness at promoting computing and computational thinking skills. It will be disseminated to K-16 audience.
Our approach consists of the following:
* Algorithm formulation and program design are elicited / teased out through a series of carefully selected questions, and is taught as a process of questions and answers. This process is automated using the wizard metaphor.
* Coding techniques are taught using formative rather than the traditional summative feedback; correctness of the code is determined from the source code rather than through test cases.
The software is configured so that a student can complete a problem only by solving it correctly. So, the software incorporates feedback that can guide the student towards the correct solution regardless of the student's starting point.
Lessons learned from Intelligent Tutoring Systems research, intent-driven program development, bug libraries and AI techniques of scripts and schema are all being used.
The measurable outcomes of this project are: 1) Practice software to teach the process of programming, along with a repertoire of 40 problems; 2) Number of adopters of the practice software and the number of problems solved by their students; 3) Number of refereed conference and journal papers published on the results of evaluation.
The project has the potential for broader impact through the following means:
ﾕ The practice software developed in the project will help improve learning in the introductory programming course, thereby potentially improving grades and retention in the course and in turn increasing the quantity and quality of Computer Science graduates entering the workforce.
ﾕ The findings of evaluation activities will contribute to the literature on the use of practice software for learning and have the potential to benefit all STEM disciplines, since solving problems is a learning activity integral to all STEM disciplines.
ﾕ Given prior results that the use of practice software boosts the self-confidence of women, the practice software developed in this project has the potential to increase the retention of women in Computer Science.
Since the proposed practice software targets the entire process of programming, it helps improve the computational thinking skills of students. Given the increasing importance of computational thinking skills for STEM majors, the practice software has the potential to transform STEM education.
None so far