Automated teaching of efficient programming practices using feedback

  • Дмитрий Андреевич Тимофеев Peter the Great St. Petersburg Polytechnic University
  • Александр Викторович Самочадин Peter the Great St. Petersburg Polytechnic University

Abstract

In this paper, we discuss the question of transferring knowledge about the efficient processes software developers use when solving specific tasks. The traditional way of learning informal processes, the apprenticeship, requires watching the master at work and asking questions. This method is not possible when dealing with the mass education, especially the distant one.

We propose to model the process of programming practiced by experts using a hidden Markov model associated with a set of hints. A plugin to an integrated development environment uses the model to detect the student's activity and implements the feedback by proving relevant hints.

Author Biographies

Дмитрий Андреевич Тимофеев, Peter the Great St. Petersburg Polytechnic University

Dmitrii A. Timofeev: Lead programmer, Mobile Device Management Systems Lab dtim@comitative.com

Александр Викторович Самочадин, Peter the Great St. Petersburg Polytechnic University

Alexander V. Samochadin: Professor, Higher School of Software Engineering samochadin@gmail.com

References

1. Чиксентмихайи М. Поток: Психология оптимального переживания / Пер. с англ. — 7-е изд. — М.: Смысл; Альпина нон-фикшн, 2017.
2. Atlassian 2016 Report — Software Development Trends and Benchmarks. 2016. Available at https://www.atlassian.com/whitepapers/software-trends-2016
3. Carter A., Sangler C. The Programmer’s Stone. 1997. Available at http://www.programmersstone.com
4. Baum L. E., Petrie T. Statistical Inference for Probabilistic Functions of Finite State Markov Chains, 1966 // The Annals of Mathematical Statistics. 37 (6): 1554–1563.
5. Guzdial M. Is There a 10x Gap Between Best and Average Programmers? And How Did It Get There? ACM Blog, 2014. Available at https://cacm.acm.org/blogs/blog-cacm/180512-is-there-a-10x-gap-between-best-and-average-programmers-and-how-did-it-get-there/fulltext
6. Hunt A. Thomas D. The Pragmatic Programmer: From Journeyman to Master. Addison Wesley Longman Inc, 2000.
7. Kamma D. Study of Task Processes for Improving Programmer Productivity. PhD thesis. IndraprasthaInstitute of Information Technology, Delhi, 2007. Available at https://repository.iiitd.edu.in/jspui/bitstream/handle/123456789/513/PhD1004.pdf
8. Jeffries R. et al. The processes involved in designing software // Cognitive skills and their acquisition. 1981, pp. 255-283 С. 283.
9. McConnell S. Code Complete. 2nd edition. Microsoft Press, 2004.
10. Martin R. C. et al. Clean Code: A Handbook of Agile Software Craftmanship. Pearson Education, 2009.
11. Rabiner L. R. A tutorial on hidden Markov models and selected applications in speech recognition. // In: Proceedings of the IEEE, vol. 77, issue 2, pp. 257–286, 1989.
12. Šrámek R. The on-line Viterbi algorithm. Master’s Thesis, Dept. of Computer Science, Comenius University, Bratislava, 2007.
13. Viterbi A. J. Error bounds for convolutional codes and an asymptotically optimum decoding
algorithm. // IEEE Trans. Inform. Theory, vol. IT–13, pp. 260–269, April 1967.
Published
2017-10-30
How to Cite
Тимофеев, Д. А., & Самочадин, А. В. (2017). Automated teaching of efficient programming practices using feedback. Computer Tools in Education, (5), 35-44. Retrieved from http://cte.eltech.ru/ojs/index.php/kio/article/view/1493
Section
Computers in the teaching process