Combining Theory and Practice in Data Structures & Algorithms Course Projects: An Experience Report

Combining Theory and Practice in Data Structures & Algorithms Course Projects: An Experience Report
复制标题

数据结构理论与实践相结合

DOI:
--
复制
发表时间:
2021
期刊:
Technical Symposium on Computer Science Education
影响因子:
--
通讯作者:
J. King
J. King
中科院分区:
--
文献类型:
--
作者:
J. King

文献摘要

被引文献

相似文献

CS2课程项目告诉学生有效解决给定问题所必需的算法或数据结构,往往过于苛刻。学生可能不完全理解为什么选择这些算法或数据结构,并且他们可能没有机会从经验上观察此类设计决策的影响。2019年,我们重新设计了北卡罗来纳州立大学的CS2课程项目,以帮助展示批判性思维和分析活动在开发软件时的重要性。重新设计的课程项目的目标是通过将算法设计和分析、数据结构选择和实验分析作为软件开发生命周期的一部分,将计算机科学理论与软件开发实践联系起来。对于该项目,学生首先创建一份设计方案,其中包括算法设计和分析、数据结构选择以及其他软件设计任务。接下来,学生实现并测试他们的软件,而教师测试用例则对不正确和/或低效的实现施加评分处罚。最后,学生进行实验分析,经验地观察使用不同数据结构时的性能差异。在2019年1月至2020年5月期间,我们从536名学生中收集了202名学生的期末调查回复(回复率为37.7%)。总体而言,90.6%的受访者表示,该项目有助于理解在开发软件时分析和设计的重要性。在本文中,我们详细讨论了我们的项目活动,以及在其他CS2课程中采用类似项目的经验教训和建议。
CS2 course projects can often be too prescriptive by telling students which algorithms or data structures are necessary to efficiently solve a given problem. Students may not fully understand why these algorithms or data structures were chosen, and they may not have an opportunity to empirically observe the impact of such design decisions. In 2019, we redesigned our CS2 course projects at North Carolina State University to help demonstrate the importance of critical-thinking and analysis activities when developing software. The objective of the redesigned course project is to connect computer science theory with software development practice by incorporating algorithm design and analysis, data structure selection, and experimental analysis as part of the software development lifecycle. For the project, students first create a design proposal that incorporates algorithm design and analysis, data structure selection, and other software design tasks. Next, students implement and test their software, while teaching staff test cases impose grade penalties for incorrect and/or inefficient implementations. Finally, students perform experimental analysis to empirically observe performance differences when using different data structures. Between January 2019 and May 2020, we collected end-of-course survey responses from 202 out of 536 students (37.7% response rate). Overall, 90.6% of respondents indicated that the project helped with understanding the importance of analysis and design when developing software. In this paper, we discuss our project activities in detail, along with lessons learned and suggestions for adopting similar projects in other CS2 courses.