1.1课程背景
对于计算机科学与技术、信息安全与物联网专业大二学生,在前三个学期已经学习了C语言程序设计、数据结构两门面向编程知识与技术的基础理论课,以及C语言程序设计实验、数据结构实验两门编程实践课程,不仅具有较为系统性的C语言、常用数据结构基本知识,而且具有初步的程序设计、数据抽象与建模、问题求解与算法设计的能力,奠定了进行复杂程序设计的知识基础。但两门实验课仍属于对基本编程模型与技术的验证性训练,而“综合程序设计”课程设计正是使大家从简单验证到综合应用,甚至在编程中实现智慧与风格升华的重要实践环节,为后续学习与进行计算机系统编程打下坚实的基础,让综合编程技能成为大家的固有能力与通向未来专业之门的钥匙。
1.2 课程目标
基于“综合程序设计”课程设计实践课程规划原则及其在计算机相关专业人才培养中的地位,其应该体现与达到如下目标:
⑴综合性训练目标:在该课程中涉及C语言的主要编程要素,如典型的数据类型与控制结构;覆盖多种典型的数据结构如线性结构、二叉树与树结构、图结构及查找表结构等。从先前实验课的单要素或单一结构训练向多要素,多结构综合应用训练转变。
⑵培养应用问题的求解能力:程序设计是为问题求解服务的,提高对应用问题进行分析,数据抽象与建模,及问题定义与功能划分等综合分析与表示能力。
⑶程序编写向程序设计转化:在实验课程中,老师基本描述了相关数据结构,程序框架及主要算法,基于此进行程序编写训练,其属于验证与复现性编程实践。“综合程序设计”要求同学们基于对应用问题的分析,建立求解模型,设计数据结构与主要算法,从而进行程序设计,更多地体现“设计”的内涵与份量。
⑷进一步培养编程规范性与工程化素养:通过“综合程序设计”实践进一步培养良好的规范性编程习惯,以及一定的程序设计与软件开发的工程化素养,按照问题定义、必要的需求分析、系统设计、编程实现、程序测试分析及编制综合程序设计课程设计报告的流程组织本实践课程的开展与进行,形成初步的工程化程序设计素养。
1.3 课程任务
在选择与确定了“综合程序设计”课程设计问题之后,按工程化的基本流程分别完成如下任务:
⑴阅读“综合程序设计”课程设计任务书,熟悉问题,查阅文献,了解问题背景及相关知识。
⑵对设计问题进行需求分析,分析问题中所涉及的数据对象,划分功能,人机交互需求与数据文件读写等,并对问题进行形式化表示。
⑶基于上述需求分析,进行系统设计,明确程序的模块结构;设计数据结构(逻辑结构及其物理结构),参考并设计主要子问题的求解算法。
⑷程序实现,基于系统设计,制定相应的实现方案,编写各程序模块,完成程序编写与调试任务。
⑸程序测试,设计测试用例对程序进行功能测试,性能测量及理论分析。
⑹程序优化,对设计方案中的结构,算法进行一定优化,测试与分析性能改善结果。
⑺设计总结,按规范化要求撰写“综合程序设计”课程设计报告。
⑻成果提交:将程序源代码/工程文件、可独立运行的可执行程序、简要操作手册及“综合程序设计”课程设计报告电子版打包,文件夹名称格式为“专业班级-学号姓名”,如:CS1702-U201714999李某某。并将设计报告打印为纸质版(A4双面打印),然后以班为单位在指定时间(一般在设计课结束后两周内)集体提交到指导老师。
后面将对一个或多个候选设计问题进行问题与要求描述及设计指导,每个同学选择其中一题作为自己的综合程序设计课程设计问题。