《数据结构与算法课程设计(Design Practice of Data Structure and Algorithms)》教学大纲
制定时间:2025年4月
一、课程基本信息
(一)适用专业:本科计算机科学与技术专业、软件工程、物联网工程、智能科学与技术
(二)课程代码:3DX1157A
(三)学分/课内学时:2学分/2周
(四)课程类别:专业教育
(五)课程性质:必修/实践课
(六)先修课程:C语言程序设计与应用、数据结构与算法(上)、数据结构与算法(下)
(七)后续课程:数据库原理及应用、数字逻辑与计算机组成、操作系统原理与实现、毕业设计等
二、课程教学目标
本课程是计算机科学与技术专业的一门专业教育必修课程,目的是训练学生对目标问题的数据结构的抽象能力和算法的运用能力。要求学生对问题抽象出数据结构,并对该数据结构进行各类基本操作,如增加、删除、遍历、排序,查找等基本功能,设计解决问题的关键算法,编制可靠高效的程序。学习完《数据结构与算法(上)》、《数据结构与算法(下)》理论课程之后,将理论知识用于编程实践,用数据结构和算法解决应用问题,为《数据库原理及应用》《操作系统原理与实现》等后继课程的学习,和将来进行软件开发以及解决各行业复杂工程问题打下良好的程序设计基础。可以利用在线判题系统作为设计和验收平台,客观判定学生课程设计成绩。
课程目标及能力要求具体如下:
(一)具体目标
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。
课程思政目标2:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育,培养学生精益求精的大国工匠精神,激发学生科技报国的家国情怀和使命担当。
知识能力目标1:能通过独立查阅相关书籍资料,理解课题任务,进行综合分析之后提出可能的解决方案。具有初步的文档写作能力,能够清晰表达开发设计思路及设计情况,文档符合规范要求。
知识能力目标2:能根据课题任务要求,提出比较合理的数据存储方案。能够进行基于数据结构的基本操作和关键算法的设计与实现。熟练运用先修课程的编程语言进行程序设计和实现,要求掌握基本的程序调试方法。
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
2. 能够应用自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析计算机软件系统中的复杂工程问题,以获得有效结论。 |
2.5:能运用基本原理分析实际工程的影响因素,证实解决方案的合理性。 |
知识能力目标2 |
数据结构和算法设计、编程及调试、撰写课程设计报告 |
设计成果、课程设计报告 |
3. 能够设计针对计算机应用系统设计中的复杂工程问题的解决方案,设计满足特定需求的系统,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。 |
3.4:能够进行计算机应用系统开发文档的撰写。 |
知识能力目标1 |
数据结构和算法设计、撰写课程设计报告 |
课程设计报告 |
5.能够针对计算机应用系统的复杂工程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,实现对复杂工程问题的预测与模拟,理解其局限性。 |
5.1:能运用信息技术、大型团队开发过程管理软件等现代工程工具和信息技术工具,对计算机系统的设计开发过程进行管理。 |
知识能力目标2 |
数据结构和算法设计、编程及调试、撰写课程设计报告 |
设计成果、课程设计报告 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 (知识点) |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 教学目标 |
备注 |
1 |
课题选题 |
查阅相关书籍资料,明确课程设计的设计任务及要求,以教师指定与自选相结合的方式完成课题选题。 课程设计题目均在在线判题系统平台完成。题目涉及数据结构课程每一单元的知识,包括: (1)训练顺序表相关算法。 (2)训练链表相关算法。 (3)训练栈与队列的相关算法。 (4)训练树型结构的相关算法。 (5)训练图型结构的相关算法。 (6)训练查找相关算法。 (7)训练排序相关算法。 教师在判题系统中提供大量选题,每位学生完成其中部分题目,所完成题目要求覆盖以上知识单元。 |
选择并确定设计课题,了解题目要求和说明,熟悉要用到的知识模块,熟悉判题系统的使用方法。 |
4 |
教师指导、学生自主学习 |
目标1 |
|
2 |
数据结构和算法设计 |
进行题目分析,确定数据的存储结构、须执行的基本操作和算法设计。 |
根据题目要求,选择和定义合适的数据存储结构,确定完成该任务需要用到的基本操作模块,对关键算法进行资料查阅、深入分析并画出程序流程图。 |
4 |
教师指导、学生自主学习 |
目标2 |
|
3 |
编程及调试 |
根据数据结构和算法的设计,完善和实现单元2中构建的基本操作模块和关键算法。 |
用程序设计语言先修课中学到的编程语言实现数据结构、基本操作及相关算法,完成调试,并以在判题系统中通过为基本验收标准。进一步熟悉和掌握程序设计基础知识和调试方法。 |
24 |
教师指导、学生自主学习 |
目标2 |
|
4 |
撰写课程设计报告 |
(1) 课程设计报告格式要求:设计报告包括摘要、目录、正文、设计总结、参考文献、附录等内容,正文采用四级标题如: 1 1.1 1.1.1 1.1.1.1……,摘要、目录、正文、设计总结、参考文献的撰写格式参照重庆科技大学本科生(理科类)毕业设计论文格式规范。 (2)设计报告内容要求:题目描述,数据结构的选择,关键算法的设计(含程序流程图、关键代码说明),程序运行结果截图,包含完整的程序清单的附录(可选)。 |
报告格式规范,内容齐全,条理清晰,文笔流畅,内容充实。 |
4 |
教师指导、学生自主学习 |
目标1 |
|
5 |
设计成果验收 |
验收设计成果,包括在线判题系统中通过的程序和课程设计报告,并确定学生所获得本课程设计的成绩。 |
学生携带课程设计报告到指导教师处进行成果验收,回答教师对程序细节的提问,并按要求认真对报告进行整改,在规定时间上交课程设计报告。 |
4 |
教师检查验收 |
目标1 目标2 |
|
(二)教学方法
1.教师指导下的自主探究
(1)采用启发式教学,激发学生主动学习的兴趣,培养学生独立思考、分析问题和解决问题的能力,引导学生主动通过实践和自学获得自己想学到的知识。
(2)在设计课题内容的选择上,由线性表、堆栈、队列、树、图、查找和排序等主要教学模块延申出具有一定实用价值的课题,使学生能够灵活掌握用于解决计算机专业数据存储和处理问题的专业基础知识。
(3)引入和建设AI智辅工具,培养学生批判性思维和人机协同学习能力。
(4)理论教学与工程实践相结合,引导学生应用数学、自然科学和工程科学的基本原理,采用现代设计方法和手段,解决计算机专业相关数据存储和处理的思维方法和实践能力。
(5)利用在线判题系统平台,客观统计和密切关注学生课程设计过程中上机实验的进度和完成情况。设计成果和课程设计报告成绩以平台课题通过情况为重要依据。
(6)鼓励学生结合自己的兴趣进行自主课题设计。
四、考核及成绩评定
(一)考核内容及成绩构成
课程考核以考核学生能力培养目标的达成为主要目的,以检查学生对各知识点的掌握程度和应用能力为重要内容,包括设计成果和课程设计报告两个部分,考核方式:考察。课程目标的考核内容、成绩评定方式、目标分值建议如下:
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
知识能力目标1:能通过独立查阅相关书籍资料,理解课题任务,进行综合分析之后提出可能的解决方案。具有初步的文档写作能力,能够清晰表达开发设计思路及设计情况,文档符合规范要求。 |
课程设计报告是学生灵活运用所学数据结构知识来解决复杂问题,并编制高效可靠程序的能力在文档上的体现。锻炼学生撰写设计报告的能力,要求课程设计报告从内容到格式都要符合规范。 |
课程设计报告 |
50% |
100% |
A |
|
知识能力目标2:能根据课题任务要求,提出比较合理的数据存储方案。能够进行基于数据结构的基本操作和关键算法的设计与实现。熟练运用先修课程的编程语言进行程序设计和实现,要求掌握基本的程序调试方法。 |
利用在线判题系统完成课题任务的数据结构和算法的设计和实现,训练熟练的编程技能。全面考核学生对数据结构课程知识的掌握和运用情况。 |
设计成果 |
50% |
100% |
B |
|
总评成绩(100%)=课程设计报告(50%)+设计成果(50%) |
100% |
—— |
—— |
|
(二)考核成绩评定
评分标准如下:
对应目标 |
知识能力目标1:能通过独立查阅相关书籍资料,理解课题任务,进行综合分析之后提出可能的解决方案。具有初步的文档写作能力,能够清晰表达开发设计思路及设计情况,文档符合规范要求。 |
知识能力目标2:能根据课题任务要求,提出比较合理的数据存储方案。能够进行基于数据结构的基本操作和关键算法的设计与实现。熟练运用先修课程的编程语言进行程序设计和实现,要求掌握基本的程序调试方法。 |
考查点 |
课程设计报告 |
设计成果 |
成绩比例 |
50% |
50% |
评分标准 |
100% 至 90% |
数据结构选择合适,关键算法画出详细流程图,有详细的算法流程语言描述,关键代码有详细语言描述,运行结果有关键内容的截图。设计报告项目齐全(摘要、目录、正文、设计总结、参考文献、附录),内容充实,语句通顺,格式规范。 |
根据课题要求定义数据结构和程序框架,程序功能正确并实现题目要求。关键算法思路清晰,能熟练使用编程软件,会熟练编写、调试程序。代码能在判题系统中通过,通过率在100%以上。 |
89.9% 至 80% |
数据结构选择合适,关键算法画出流程图,有算法流程语言描述,关键代码有语言描述,运行结果有关键内容的截图。设计报告项目齐全(摘要、目录、正文、设计总结、参考文献、附录),内容充实,语句通顺,格式规范。 |
根据课题要求定义数据结构和程序框架,程序功能正确并实现题目要求。关键算法思路比较清晰,能较熟练使用编程软件,会较熟练编写、调试程序。代码能在判题系统中通过,通过率在90%以上。 |
79.9 至 70% |
数据结构选择合适,关键算法画出流程图,有算法流程语言描述或关键代码的语言描述,运行结果有部分截图。设计报告项目齐全(摘要、目录、正文、设计总结、参考文献、附录),内容充实,语句基本通顺,格式基本规范。 |
根据课题要求定义数据结构和程序框架,程序功能正确并实现题目要求。关键算法思路比较清晰,能使用编程软件,会编写、调试程序。代码能在判题系统中通过,通过率在80%以上。 |
69.9% 至 60% |
数据结构选择基本合适,关键算法画出部分流程图,有算法流程语言描述或关键代码的语言描述,运行结果有部分截图。设计报告项目齐全(摘要、目录、正文、设计总结、参考文献、附录),语句基本通顺,格式基本规范。 |
根据课题要求定义数据结构和程序框架,程序功能基本正确并实现题目要求。关键算法思路基本清晰,基本能使用编程软件,基本会编写、调试程序。代码能在判题系统中通过,通过率在60%以上。 |
59.9%至 0 |
数据结构选择不合适,关键算法未画出流程图,没有算法流程语言描述或关键代码的语言描述,运行结果没有截图。设计报告项目不齐全(摘要、目录、正文、设计总结、参考文献、附录),内容不充实,语句不通顺,格式不规范。 |
不能根据课题要求定义数据结构和程序框架,程序功能不正确并未实现题目要求。关键算法思路不清晰,不能熟练使用编程软件,不会编写、调试程序。代码不能在判题系统中通过,通过率在60%以下。 |
五、参考学习资料
(一)推荐教材:《数据结构与算法分析(C语言描述)》,马克·艾伦·维斯著,冯舜玺译,机械工业出版社,2020,第1版,ISBN:9787111621959。
(二)推荐教材:《数据结构(C语言版|第2版)》,严蔚敏、李冬梅、吴伟民编著,人民邮电出版社,2015,第2版,ISBN:9787115379504。
(三)推荐教材:《数据结构的C++伪码实现(英文版)》,Richard F.Gilberg Behrouz A.Forouzan,人民邮电出版社,2002,第1版,ISBN:9787115097668。
(一)参考资料:程序设计类实验辅助教学平台,https://pintia.cn/。