Massive Open Online Courses (MOOCs) focus on manifold subjects, ranging from social sciences over languages to technical skills, and use different means to train the respective skills. MOOCs that are teaching programming skills aim to incorporate practical exercises into the course corpus to give students the hands-on experience necessary for understanding and mastering programming. These exercises, apart from technical challenges, come with a series of questions to be addressed, for example: which fraction of the participants' time should they take (compared to video lectures and other course activities), which difficulty should be aimed for, how much guidance should be offered and how much repetition should be incorporated? The perceived difficulty of a task depends on previous knowledge, supplied hints, the required time for solving and the number of failed attempts the participant made. Furthermore, the detail and accuracy of the problem description, the restrictiveness of the applied test cases and the preparation provided specifically for a given exercise also influence the perceived difficulty of a task. In this paper, we explore the data of three programming courses to find criteria for optimal practical programming exercises. Based on over 3 million executions and scoring runs of participants' task submissions, we aim to deduct exercise difficulty, student patterns in approaching the tasks and potential flaws in task descriptions and preparatory videos. We compare our findings to in class trainings and traditional, mostly video and quiz based MOOCs. Finally, we propose approaches and methods to improve programming courses for participants as well as instructors.
Prof. CI: Employing Continuous Integration Services and Github Workflows to Teach Test-driven Development
使用大规模开放式在线课程(MOOC)进行编程教学由于其可扩展性和知识分布效率而越来越受欢迎。然而,参加这些课程通常意味着完全致力于浏览器中提供的编程环境。虽然这允许一致和可控的设置,但学习者无法获得实际开发工具的经验,例如本地代码编辑器,测试框架,问题跟踪器或持续集成(CI)服务,这对后续的真实项目至关重要。此外,要开发的功能的测试通常已经在MOOC中可用,并且只需执行即可,从而减少了开发适当测试的参与。为了解决这些问题,同时保持高度的自动化和可扩展性,我们开发了CI教授,这是一种进行在线练习的新方法。CI教授利用开发人员日常使用的现有自动化基础设施,即CI服务和Github工作流,来教授测试驱动开发(TDD)实践。参与者在Github中使用自己的存储库,并在推送代码时从CI服务器接收反馈和新挑战。我们已经在一个试点项目中成功地应用了这种方法,30名本科生正在学习Ruby on Rails Web开发框架。我们的评估表明,该练习有效地提高了学生为他们的代码编写测试的动机。我们还介绍了参与者调查的结果,学生的经验和教师的观察。
Predicting Struggling Students in CS1 Programming Using Keystroke-Level Editing Features
Graduate School of Science and Technology Nara Institute of Science and Technology(奈良先端科学技术大学院大学);Faculty of Systems Engineering Wakayama University(和歌山大学系统工程系)