2024-2025 学年第 1学期

 

 

 

 

课程名称: 程序设计算法与数据结构(一)实验

课程性质:    基础实践课

授课学时:    46学时

授课对象:    计算机科学与技术专业

任课教师:    郑莹

 

 

 

 

长沙理工大学计通学院

2023.8


全课程教案

 

一、基本信息

课程名称

程序设计、算法与数据结构实验(一)

课程编号

0812000317

课程性质

基础实践课

学分

1.5

教学安排

总学时46。其中讲授0学时,实验 46 学时,上机 0 学时,实训 0 学时

授课时间:第6 周至第17

周学时

4

相关课程与环节

先修课程:无

后续课程:程序设计、算法与数据结构(二)实验、程序设计、算法与数据结构(三)实验。

 

二、授课对象

基本情况

专业

计科

年级

24

班级

2403

修读人数

40

授课对象分析

计算机科学与专业大新生,学生高考素质较好,但对计算机相关知识了解不多,没有产生计算机理论的相关认识。对计算机的使用不够熟悉,对计算机操作系统和系统软件的使用不熟悉,对计算机的UI使用不熟练。

 

三、教学内容与安排

课程简介与要求

1、课程思政教学目标:筛选适合教学和专业拔高的特色案例;精心设计融入思政元素的上机实践作业和综合实践项目;为整个课程选定诸如科技强国、大国重器、大国工匠等课程主题,确定专业课程的思政色彩;构建实时动态更新的计算机领域前沿成果库;搜集学生的优秀作品,建设学生优秀作品库。以此形成多层次、多维度的课程特色立体资源库,为课程思政的实施提供丰富教学资源。在实验进行的过程中,学生基于建构主义学习理论的合作探究式学习,涉及任务分工、交流意见、指导操作等过程,在此过程中培养学生的合作精神、集体主义、理解与表达等重要思政元素

2、课程教学总目标:在学习C语言过程中,通过编程实验使学生能够针对具体的问题,输入数据获得运行结果,并在编程过程中提炼解题算法,得到有效的结论并获得编程经验。能够搭建合适的软件环境,掌握C语言的编辑、编译、运行、调试的流程,并完成验证自己所编写的程序。并能灵活运用OpenJudge平台,进行大量的编程实训,使学生在实训中加强编程能力并对系统进行验证。

3、课程目标与学生能力培养的关系:课程思政目标的实施有利于培养学生职业责任感,团队合作、组织、沟通等社会能力。

课程教学目标的实施有利于培养学生的系统分析和程序设计能力,培养学生分析实验数据,进行故障进行定位与排查的能力。

课程目标

课程目标

支撑毕业要求指标点

与课程关联度

课程目标1:本实验课程通过搭建codeblocks编程环境、OJ在线测试平台、学宝、头歌等课程管理工具,构建了面向学生编程学习及效果考核的实践教学体系,学生能熟练顺利的开展实验,记录实验结果,分析实验数据。实验开展的过程中,在深入理解理论课程知识的基础上,模拟真实的应用场景,设计贴近现实的项目背景案例,以此为基础引导学生对项目进行分析,能探讨各种可能的开发路线的优劣,拟定合理的开发方案。学生在实践中进行充分的演练,为后续分析更大规模的复杂问题做好准备。

4.2能够基于软件工程专业知识,确定技术路线,设计可行的实验方案。

H0.3

课程目标2:通过使用codeblocks 、GCC编译器和GDB调试工具,掌握代码编译、调试及生成可执行文件的过程;掌握编程过程中一般语法错误及运行错误出现的原因与解决思路;掌握必要的调试技巧对故障进行定位与排查。能够综合运用单步运行、多步运行及中间结果显示等方法,并了解各种方法的适用场景及应用局限性。

5.1在工程项目中,能够掌握现代工程工具的使用原理和方法,并理解其局限性。

M(0.2)

课程思政

引导学生正确的编程思维:教师可以引导学生形成正确的编程思维,强调程序设计的逻辑性、严谨性和系统性,培养学生的创新意识、问题解决能力和团队合作精神。

培养学生的职业道德和责任感:教师可以通过案例分析、讨论和作业设计等方式讨论编程中的伦理和社会责任问题,教育学生遵守编程规范、保护用户隐私、防范网络安全风险等。

引导学生正确使用信息技术:教师可以引导学生认识到信息技术对社会、经济和文化的影响,教育学生正确使用信息技术、遵守网络道德,提高信息素养和信息技术安全意识。

引导学生关注社会问题和热点:教师可以选择与C语言相关的社会问题和热点作为案例,引导学生思考和讨论与之相关的道德、法律、社会等方面的问题,培养学生的社会责任感和公民意识。

鼓励学生参与公益活动:教师可以组织学生参与C语言相关的公益活动,如编程竞赛、编程教育支持等,培养学生乐于助人、关心社会的价值观。

通过将思政教学融入C语言程序课程中,可以帮助学生在学习技术的同时,培养正确的价值观和社会责任感,为他们的未来发展打下坚实的基础。

教学方法

 指导实验:教师通过讲解实验要求和步骤,引导学生进行实验操作。教师可以提供实验指导书或实验报告模板,指导学生完成实验任务。教师可以在实验过程中随时解答疑惑,帮助学生克服实验中遇到的困难。

实验演示:教师通过实验演示的方式,展示C语言的实际应用场景和技术操作。教师可以演示常用库函数的使用、程序调试技巧和问题解决方法等。学生可以通过观察和分析教师的演示,理解实验原理和技术实现方法。

探究式实验:教师提供一个开放性的实验问题,鼓励学生进行自主探究和实验设计。学生可以通过思考、讨论和实验验证等方式,寻找问题的解决方案,并进行实验验证。教师在实验过程中起到辅导和指导的作用,引导学生进行问题分析和实验思考。

项目实验:教师组织学生进行具有一定复杂度和实际应用价值的项目开发实验。教师可以提供项目需求和设计要求,鼓励学生进行项目规划、设计和开发。教师在实验过程中进行指导和评估,帮助学生解决技术难题和团队协作问题。

实验报告:学生在完成实验后,需要撰写实验报告,详细记录实验过程、结果和分析。教师可以对学生的实验报告进行批改和评价,帮助学生加深对实验内容的理解和掌握。

实验讨论和交流:教师可以组织学生进行实验讨论和交流,学生可以分享实验经验、解决问题的方法和技巧等。教师在讨论中起到引导和促进学生思考的作用,帮助学生深入理解实验原理和技术细节。

通过以上教学方法,可以激发学生的学习兴趣,提高他们的实践操作能力和问题解决能力。同时,教师在实验过程中对学生进行指导和评估,促进学生的全面发展。

教学重点

与难点

重点:数组与线性表;字符串;函数;指针、结构体、链表。

难点:函数的递归调用;字符串;指针;链表。

课程各教学环节内容与安排

知识单元

知识点

课内学时

教学方式

作业/测验

课外学习

程序设计基础

程序设计介绍;

C语言程序设计开发工具

基本输入输出

4

课前预习,

教师讲授,

小组讨论;

完成实验题

实验1-1程序设计基础和数据类型

学了C语言到底能做什么,能从事什么工作?

数据类型与表达式

基本数据类型

运算符与表达式

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验1-2程序设计基础和数据类型

整数在内存中是如何存储的;小数在内存中是如何存储的。

程序的基本控制结构

顺序结构;

分支结构;

循环结构;

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验2-程序设计的结构

谈编程思维的培养,初学者如何实现自我突破。

数组

一维数组;

二维数组;

字符串;

6

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验3-1数组编程与实现(分组)

数组的越界和溢出;变长数组:使用变量指明数组的长度。

顺序表

顺序表插入、删除;

顺序表查找:顺序、二分;

排序:选择、冒泡

6

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验3-2数组编程与实现(分组)

顺序表的优缺点详解

函数

函数的作用、定义及使用;

函数的嵌套调用;

变量的作用域与生存期;

函数的综合性应用

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验4-函数编程与实现(项目实验)

C语言函数调用详解(从中发现程序运行的秘密)

递归函数

简单递归问题

经典递归问题

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

OJ实验

C语言多层递归函数;递归函数的致命缺陷:巨大的时间开销和内存开销。

指针

指针的定义及基本使用;

指针与数组;

指针与结构体;

指针与函数;

函数的返回值为指针;

动态内存分配;

6

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验5指针编程与实现(分组)

C语言空指针NULL以及void指针;数组到底在什么时候会转换为指针;main()函数的高级用法:接收用户输入的数据。

 

结构体

结构体的定义及使用;

结构体作为函数参数;

2

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验6-结构体编程与实现

大端小端以及判别方式;使用位运算对数据或文件内容进行加密。

链表

链表的创建;

链表的插入;

链表的删除;

链表的综合应用;

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验7-链表编程与实现(分组)

链表的优缺点详解;静态链表和动态链表区别详解;双向循环链表。

文件

文件的使用

文本文件

二进制文件

2

课前预习,

教师讲授,

课堂研讨

实验8-文件编程与实现

文本文件和二进制文件到底有什么区别?C语言实现文件复制功能(包括文本文件和二进制文件)

注:课程目标、教学方法、重难点、教学环节(知识单元、知识点等)等内容应与教学大纲、教学日历一致。课外学习可包括学时和内容要求。

 

 

四、考核方式

考核项目

考核内容

考核方式

分值或占比

实验报告

程序运行效果、回答情况、实验报告

实验报告书

20

OJ刷题情况

OJ判断结果,刷题通过数量

OJ刷题情况统计

20

期末考试

考试系统机试判定结果

期末机试成绩

60

注:考核方式应符合课程教学大纲的要求。

 

五、教学资源

推荐教材

李峰等主编《C语言程序设计上机指导与习题选解》(1). 上海:北京大学出版社,2020

参考材料

[1] 李文新,郭炜,余华山.《程序设计导引及在线实践》,北京大学信息科学技术学院,2007

[2] 谭浩强 C程序设计》(第五版).北京:清华大学出版社,2018

[3] www.openjudge.cn在线判定系统

[4] ACM集训队,OJ习题汇总(电子版)

课程资源

教务处网络教学综合平台: http://pt.csust.edu.cn

OJ刷题网站http://noi.openjudge.cn/

希冀教学平台:https://course.educg.net/

自制教学视频:https://space.bilibili.com/26340287?spm_id_from=333.1007.0.0

教材分析与处理

实验内容实用性分析:教材实验内容具有实用性,能够帮助学生掌握C语言的关键知识点和技能。实验内容与实际应用紧密相关,并且具有足够的挑战性,以激发学生的实践能力和创新思维。

实验课程教材与理论课程应该是紧密联系的。实验内容应该能够帮助学生巩固和加深对理论知识的理解,同时也可以通过实验课程中的问题解决过程,提高学生的理论应用能力。实验课程的设计应该与理论课程相辅相成,形成有机的知识体系。

对学生编程能力的评估分析:实验教材中包含对学生编程能力的评估环节。这可以通过布置难度适中的编程作业和设计相应的编程挑战来实现。通过评估学生的编程能力和问题解决能力,教师可以了解学生的学习进度和需求,从而进行有针对性的教学调整。