ABSTRACT
This paper describes a problem-solving course for second-year undergraduate students, designed to foster programming fluency, and explores the factors associated with the acquisition of that fluency. The course introduces algorithmic techniques such as brute force, recursion, dynamic programming and graph algorithms. The course structure revolves around repeated practice: students are required to apply programming skills using many small but challenging coding problems, combined with reflection reports and journal writing to document their thoughts and guide their design.
Progress is assessed by three practical examinations where students solve a graduated series of small open-ended programming challenges under time constraints. Challenges of this type are often used in technical interviews in industry and can be viewed as one indicator of programming fluency and problem-solving ability. However, while there is a progression in the complexity of problems that students are able to attempt during the course, it is not clear which factors are the strongest contributors to students' performance at practical exams.
This work uses a large ensemble of symbolic regression models to identify factors that related strongly to problem-solving performance. Through this stochastic analysis we are able to identify which factors are most consistently predictive of exam performance. To help validate these findings we conduct a broad analysis of coded reflections. It is hoped these findings will help identify pre-cursor skills and behaviours that can be the target of future interventions.
- B. Alexander and C. Izu. Engaging weak programmers in problem solving. In IEEE EDUCON 2010 Conference, pages 997--1005, April 2010. Google ScholarCross Ref
- O. L. Astrachan. Non-competitive programming contest problems as the basis for just-in-time teaching. In Frontiers in Education, 2004. FIE 2004. 34th Annual, pages T3H-20. IEEE, 2004. Google ScholarCross Ref
- B. Burton. Breaking the routine: events to complement informatics olympiad training. Olympiads in Informatics, 2:5--15, 2008.Google Scholar
- F. E. V. Castro and K. Fisler. On the Interplay Between Bottom-Up and Datatype-Driven Program Design. In Proc. 47th ACM Tech. Symp. Comput. Sci. Educ. - SIGCSE '16, pages 205--210, New York, New York, USA, 2016. ACM Press. Google ScholarDigital Library
- J. W. Coffey. A study of the use of a reflective activity to improve students' software design capabilities. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education, SIGCSE '17, pages 129--134, New York, NY, USA, 2017. ACM. Google ScholarDigital Library
- K. A. Ericsson, R. T. Krampe, and C. Tesch-Römer. The role of deliberate practice in the acquisition of expert performance. Psychological review, 100(3):363, 1993. Google ScholarCross Ref
- K. Falkner, C. Szabo, R. Vivian, and N. Falkner. Evolution of software development strategies. In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, volume 2, pages 243--252. IEEE, 2015. Google ScholarCross Ref
- D. Ginat. Learning from wrong and creative algorithm design. In Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education, SIGCSE '08, pages 26--30, New York, NY, USA, 2008. ACM. Google ScholarDigital Library
- H. Heath and S. Cowley. Developing a grounded theory approach: a comparison of glaser and strauss. International Journal of Nursing Studies, 41(2):141 -- 150, 2004. Google ScholarCross Ref
- C. Hu. The nature of software design and its teaching. ACM Inroads, 4(2):62, 2011. Google ScholarDigital Library
- M. Kotanchek, G. Smits, and E. Vladislavleva. Trustable symbolic regression models: using ensembles, interval arithmetic and pareto fronts to develop robust and trust-aware models. Genetic programming theory and practice V, pages 201--220, 2008.Google Scholar
- M. E. Kotanchek, E. Y. Vladislavleva, and G. F. Smits. Symbolic regression via genetic programming as a discovery engine: Insights on outliers and prototypes. Genetic Programming Theory and Practice VII, pages 55--72, 2010. Google ScholarCross Ref
- S. P. Linder, D. Abbott, and M. J. Fromberger. An instructional scaffolding approach to teaching software design. J. Comput. Small Coll., 21(6):238--250, 2006.Google ScholarDigital Library
- D. Loksa, A. J. Ko, W. Jernigan, A. Oleson, C. J. Mendez, and M. M. Burnett. Programming, problem solving, and self-awareness: Effects of explicit guidance. In Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems, pages 1449--1461. ACM, 2016. Google ScholarDigital Library
- R. E. Mayer. Cognitive, metacognitive, and motivational aspects of problem solving. Instructional science, 26(1-2):49--63, 1998. Google ScholarCross Ref
- B. McKay, M. J. Willis, and G. W. Barton. Using a tree structured genetic algorithm to perform symbolic regression. In Genetic Algorithms in Engineering Systems: Innovations and Applications, 1995. GALESIA. First International Conference on (Conf. Publ. No. 414), pages 487--492. IET, 1995. Google ScholarCross Ref
- J. Parham, L. Gugerty, and D. Stevenson. Empirical evidence for the existence and uses of metacognition in computer science problem solving. In Proceedings of the 41st ACM technical symposium on Computer science education, pages 416--420. ACM, 2010. Google ScholarDigital Library
- D. P. Searson, D. E. Leahy, and M. J. Willis. Gptips: an open source genetic programming toolbox for multigene symbolic regression. In Proceedings of the International multiconference of engineers and computer scientists, volume 1, pages 77--80. Citeseer, 2010.Google Scholar
- N. Shambaugh and S. Magliaro. A reflexive model for teaching instructional design. Educ. Technol. Res. Dev., 49(2):69--92, 2001. Google ScholarCross Ref
- TopCoder. Problem archive. https://www.topcoder.com/tc?module=ProblemArchive. Accessed: 2016-08-20.Google Scholar
Index Terms
- Using unstructured practice plus reflection to develop programming/problem-solving fluency
Recommendations
The Effect of Problem-Solving Instruction on Computer Engineering Majors' Performance in Verilog Programming
This study investigated the effect of instruction in problem-solving skills on computer engineering majors' performance in programming in the Verilog. Comparisons were made among two treatment groups (deduction and analogy) and a control group, whose ...
Use of problem-solving approach to teach scratch programming for adult novice programmers (abstract only)
SIGCSE '14: Proceedings of the 45th ACM technical symposium on Computer science educationNovice programmers usually fail to combine abstract concepts and knowledge into program design, even though they know the syntax and semantics of individual statement. Adult novice programmers with little computer background knowledge might face more ...
Comments