2023-2024 学年第 学期

 

 

 

 

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

课程性质:    基础课必修

授课学时:    46学时

授课对象: 数据科学与大数据技术

任课教师:    彭玉旭

 

 

 

 

长沙理工大学计算机与通信工程学院

2023.9


全课程教案

 

一、基本信息

课程名称

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

课程编号

0812000317

课程性质

基础课,修课

学分

1.5

教学安排

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

授课时间:第 7 周至第 18

周学时

4

相关课程与环节

 

二、授课对象

基本情况

专业

数据科学与大数据技术、软件工程

年级

23

班级

1

修读人数

42

授课对象分析

大一新生,编程基础差别较大,需要考虑学生的全面发展

 

三、实验内容与安排

课程简介与要求

本实验课程依附于《程序设计、算法与数据结构(一)》课程,与之相同学期开设,所支撑的毕业要求对应于《程序设计、算法与数据结构(一)》课程支撑的“4.2 能够基于软件工程专业知识,确定技术路线,设计可行的实验方案。“5.1 在工程项目中,能够掌握现代工程工具的使用原理和方法,并理解其局限性。

课程目标

课程目标

支撑毕业要求指标点

与课程关联度

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

 

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

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

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

课程思政

在操作系统部分,加入课程思政元素(独立自主的重要性,为构建国产操作系统生态

链贡献自己的才智);诚信教育(作业要求独立完成);

教学方法

通过理论讲解、OJ练习、上机实验、慕课视频学习、机考等方式完成教学。

教学重点

与难点

重点:基本数据类型,运算符与表达式;分支程序设计和循环程序设计一维、二维数组、字符串的存储及使用;顺序表的操作;方法的定义及使用;单链表的存储、组织与操作编程;文本文件和二进制文件,文件的打开与关闭,文件的读写

难点: 输入输出基本语法;循环的continue break;集合的循环;顺序表的二分查找、冒泡排序、选择排序;递归调用;链表的操作;

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

知识单元

知识点

课内学时

教学方式

作业/测验

课外学习

程序设计基础和数据类型

基础环境、数据类型、输入输出

8

 

 

 

程序设计的结构

顺序、分支、循环

10

 

 

 

数组编程与实现分组

一维数组、二维数据

10

 

 

 

方法编程与实现

方法、迭代函数

8

 

 

 

链表编程与实现分组

类、链表

6

 

 

 

文件编程与实现

文本文件、二进制文件

4

 

 

 

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

 

 

四、考核方式

考核项目

考核内容

考核方式

分值或占比

实验报告

课程实验内容

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

20

OJ刷题情况

平时成绩由预习作业,小组研讨作业,在线学习情况

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

20

期末考试

 

考试系统机试判定结果

60

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

 

五、教学资源

推荐教材

梁勇译.Java 语言程序设计与数据结构(基础篇)》(第11版).北京:机械工业出版社,2018年版

参考材料

[1]赵新慧,李文超.Java程序设计教程及实验指导.清华大学出版社,2020.

[2]陈国君,陈磊,李梅生.Java程序设计基础(第8版)实验指导与习题解答.清华大学出版社,2023年08月

课程资源

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

http://noi.openjudge.cn/

 

教材分析与处理

选用教材的依据:本书是Java语言的经典教材,以示例讲解解决问题的技巧,提供大量的程序清单,每章配有大量复习题和编程练习题,帮助读者掌握编程技术,并应用所学技术解决实际应用开发中遇到的问题。  

 


分课时教案

知识单元名称

程序设计基础和数据类型

课次

1

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

1、 安装JAVA环境 2、安装开发环境IDEA  3、注册http://noi.openjudge.cn/网站的账号

本单元重点

与难点内容

重点:环境、开发工具

实验内容

1、下载opengjdk 1.8 ,执行安装过程

2、配置环境变量:JAVA_HOME ; CLASSPATH; path

3、下载IDEA commnication

4、 注册账号,提交简单的01:Hello, World! 体会在线程判题程序

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机;

作业与

思考题设置

思考:JDK11及以上与1.8有什么区别;在非windows系统上安装有什么区别

学习效果、学生反馈、反思改进措施等

 

备注

 

 

知识单元名称

程序设计基础和数据类型

课次

2

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握不同类型的定义;

本单元重点

与难点内容

重点:掌握变量定义的方法和规则

实验内容

1定义不同类型的变量;

2输出定义的变量

3常量的定义

4输出不同类型长度以及范围

5输入圆半径,计算圆的面积并输出。要求定义π常量,和其他需要的变量,然后进行计算。

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

字符为什么有那么多编码格式?

学习效果、学生反馈、反思改进措施等

 

备注

 

 

知识单元名称

程序设计基础和数据类型

课次

3

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

1、掌握输入方法 2、掌握格式化输出

本单元重点

与难点内容

重点: 格式化输出;输入方法

实验内容

完成OJ题目:

1、输出第二个整数;

2 输出保留12位小数的浮点数

3字符菱形

4、空格分隔输出

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

为什么同一个变量可以用不同的格式输出?

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

 

知识单元名称

程序设计基础和数据类型

课次

4

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握常用的运算符,能够根据公式写出相应的JAVA程序

本单元重点

与难点内容

表达式

实验内容

1打印字符

2、计算(a+b)/c的值

3、温度表达转化

4、反向输出一个三位数

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

 

学习效果、学生反馈、反思改进措施等

 

 

 

 

 

 

 

 

备注

 

知识单元名称

程序设计的结构

课次

5

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

1 了解顺序结构

本单元重点

与难点内容

重点: 根据需求写出顺序程序代码;

实验内容

1计算多项式的值

2计算并联电阻的阻值

3、苹果和虫子

4、大象喝水

 

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

 

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

程序设计的结构

课次

6

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握分支语句;

本单元重点

与难点内容

重点:分支语句的语法

难点:根据业务写出分支条件;思考边界以及现实结果。

实验内容

1苹果和虫子2

2收集瓶盖赢大奖

3、骑车与走路

4晶晶赴约会

5、从键盘输入1个字符,要求大写变小写,小写变大写。

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

 

 

知识单元名称

程序设计的结构

课次

7

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握分支语句;

本单元重点

与难点内容

重点:根据题目编写多分支结构

实验内容

1、分段函数

24个圆塔,圆心分别为(22)、(- 22)、(- 2- 2)、(2- 2),圆半径为 1 ,这4个圆塔高度10cm, 塔以外无建筑物。今输入任一点的坐标,求该点的建筑物高度(塔外的高度为零)。

3、计算邮资

4、简单计算器

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

程序设计的结构

课次

8

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握循环的基本结构;能够根据问题写出循环条件;

本单元重点

与难点内容

循环结构

实验内容

 

1有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,A,B,C,D互不相等,试找出所有符合上述要求的乘积式并打印输出。

2、整数序列的元素最大跨度值

3、奥运奖牌计数

4、球弹跳高度的计算

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

程序设计的结构

课次

9

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握循环的基本结构;能够根据问题写出循环条件;

本单元重点

与难点内容

循环结构

实验内容

1求平均年龄

2质因数分解

3、开关灯

4、数字统计

5、药房管理

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

预习字符串及字符串函数

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

 

 

 

知识单元名称

数组编程与实现

课次

10

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握一维数组的使用

本单元重点

与难点内容

一维数组

实验内容

1、陶陶摘苹果

2、校门外的树

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

数组编程与实现

课次

11

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握一维数组的使用

本单元重点

与难点内容

一维数组

实验内容

1、有趣的跳跃

2、与指定数字相同的数的个数

3、年龄与疾病

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

思考题:可以用其他结构实现吗?

学习效果、学生反馈、反思改进措施等

 

备注

 

 

知识单元名称

数组编程与实现

课次

12

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握二维数组;能够根据题目描述用二维数组进行存储

本单元重点

与难点内容

重点:二维数组

实验内容

1计算矩阵边缘元素之和

2、错误探测

3、图像相似度

4、图像旋转

5、肿瘤面积

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

 

知识单元名称

数组编程与实现

课次

13

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握二维数组;能够根据题目描述用二维数组进行存储

本单元重点

与难点内容

重点:二维数组

实验内容

1、扫雷游戏地雷数计算

2、蛇形填充数组

3、螺旋加密

4、二维数组回形遍历

5、字符串数组查找

输入五个字符串,然后再输入一个字符串,打印出最后一个字符串是前五个中第几个被输入的(如果出现相同的只打印第一次是第几个被输入的)如果不在前五个中则返回-1

比如:

输入:

12345 abc def hello

abc

输出为2

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

 

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

数组编程与实现

课次

14

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握字符串的处理;

本单元重点

与难点内容

重点:字符串处理

实验内容

1判断IP地址是否合法

    输入一个IP地址,判断IP地址是否合法。IP地址由40-255组成,中间使用“.”隔开。

合法的IP地址是:21.45.34.112 是合法的,第一位不能为全00.45.34.112 是不合法的,每一位不能超过255

运行范例:

输入:21.45.34.112 输出:YES

输入:0.45.34.112 输出:NO

输入:0.45.34.113  输出:NO

输入:18.45.34.112 输出:YES

2、单词倒排

3、整理药名

4、字符串最大跨距

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

 

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

方法编程与实现

课次

15

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握方法的定义和使用方法;

本单元重点

与难点内容

重点:方法

实验内容

1、定义一个方法,根据年份和月份,系统显示对应年份的日历;

2设计一个程序计算f (x) = x2 + 2x + 1,采用方法声明方式

3、求一个大数的阶乘。当n的取值较大时,数据会溢出,应该如何处理呢?

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

方法编程与实现

课次

16

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

了解方法的作用;掌握方法嵌套;了解万年历的设计思路

本单元重点

与难点内容

重点:方法的嵌套使用

 

实验内容

1机器翻译

2、短信计费

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

 

知识单元名称

方法编程与实现

课次

17

授课类型

理论课讨论课实验课习题课其他

学时

 

课程目标与要求

 掌握ArrayList的使用

本单元重点

与难点内容

ArrayList

实验内容

利用ArrayList作为方法参数完成下面的题目:

1、校门外的树

2、向量点积计算

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

知识单元名称

方法编程与实现

课次

18

授课类型

理论课讨论课实验课习题课其他

学时

 

课程目标与要求

掌握递归方法的设计与使用,

本单元重点

与难点内容

重点:递归方法

难点:递归方法的终止条件

实验内容

1、编写递归函数getPower计算xy次方

2、编写递归函数实现10进制转换成二进制

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

预习:汉诺塔

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

          链表编程与实现

课次

19

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握基本组合数据类型的表示;如何创建节点;

本单元重点

与难点内容

利用类展示组合类型

实验内容

1输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

试题描述:

输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入格式:

第一行输入一个正整数NN <= 100),表示学生人数。接着输入N行,每行格式如下:

分数 姓名

分数是一个非负整数,且小于等于100;姓名为一个连续的字符串,中间没有空格,长度不超过20。数据保证最高分只有一位同学。

输出格式:

获得最高分数同学的姓名。

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

 

 

知识单元名称

链表编程与实现

课次

20

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

掌握组合数据类型;掌握基于链表的学生信息存储;

本单元重点

与难点内容

重点链表的增加与删除;

实验内容

1学生管理系统利用链表进行学生信息增加、显示

 

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

 

学习效果、学生反馈、反思改进措施等

 

备注

 

 

知识单元名称

链表编程与实现

课次

21

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

目标:掌握链表的遍历功能;

本单元重点

与难点内容

重点: 链表遍历;并计数

实验内容

利用链表进行学生查找、学生人数统计功能

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注

 

知识单元名称

文件编程与实现

课次

22

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

目标:文本文件的操作

本单元重点

与难点内容

重点: 利用JAVA读写文本文件

难点:理解文本文件的编码格式

实验内容

完成文本文件的读写;理解文本文件的编码格式。

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

思考:如何确定文本文件的编码格式

学习效果、学生反馈、反思改进措施等

 

备注

 

知识单元名称

文件编程与实现

课次

23

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

目标:掌握File类的常用方法

本单元重点

与难点内容

重点:File的常用方法,二进制文件操作

实验内容

利用File类以及二进制文件读取实现目录的复制功能。

课程思政

诚信教育(作业要求独立完成)

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

上机

作业与

思考题设置

学习效果、学生反馈、反思改进措施等

 

备注