a - 数据结构实验之串一:kmp简单应用_【在线教学示范课案例】数据结构(刘航)...

一、教师简介

ae98bb6257ddf48c34067ed03c7b9650.png

刘航,网络空间安全学院教师,本科生“数据结构”、“算法设计综合实验” 和研究生“算法设计与优化”课程的主讲教师。近年来积极开展了教学与考核模式改革、探究式/研究型课程等课程改革探索,探索课程、学科竞赛和项目相结合的科研体验,引导学生开展自主学习、深度学习,曾获评本科生“最满意教师”、获得校教学成果一等奖。

ae98bb6257ddf48c34067ed03c7b9650.png

二、课程信息 

ae98bb6257ddf48c34067ed03c7b9650.png

1. 课程基础信息:

1)课程编码:

U09M11097.01

2)课程名称(中/英文):数据结构/ Data Structures

3)学时/学分:64/4.0

4)先修课程:C/C++程序设计、离散数学

5)开课单位:网络空间安全学院

6)开课学期(春/秋/春、秋):春季

7)课程模块:学科专业

8)课程类别:学科基础课程

9)教材及教学参考书:

《数据结构——用 C语言描述(第二版)》,耿国华,高等教育出版社,2015.7或

《数据结构(C语言版)》,严蔚敏、吴伟民,清华大学出版社,2018.7

2. 教学目标:

《数据结构》是计算机程序设计技术的重要理论基础,是信息安全专业的主要专业基础课和主干课程。课程以 C/C++语言作为描述工具,使学生能够针对非数值计算问题,学会分析研究基本数据结构的特性,为具体应用所涉及的数据选择或设计适当的逻辑结构、存储结构及其相应的算法,初步掌握算法的时间分析和空间分析方法。

知识目标:掌握线性表、栈和队列、树和二叉树、图、查找、排序等数据结构及算法的基本概念、使用方法。

能力目标:通过理论学习和编程训练,提高应用数学工具建模、分析数据特性、设计与选择合适的数据结构和算法解决工程技术基本问题的能力,较大幅度地提高学生的编程能力。

专业素养目标:培养学生对核心、关键问题建立系统性思维的科学素养;能够利用专业术语准确、简明和规范地对工程技术问题进行描述的科学素养;多角度探寻解决问题途径的素养;具有创新精神,敢于合理地提出新概念、新思想、新方法的科学素养。

3. 教学重点/难点:

(1) 线性表、栈和队列、串、数组、广义表等线性结构的逻辑结构、存储结构、各种基本操作、算法实现及应用,KMP算法、稀疏矩阵压缩算法。

(2) 树和二叉树的逻辑结构、存储结构,二叉树的各种遍历算法及其他基本操作、算法实现及应用,霍夫曼树及其应用。

(3) 图的多种存储结构、广度和深度优先遍历算法及其他基本操作、算法实现及应用,连通性、最小生成树、拓扑排序、关键路径及最短路径等图的典型应用。

(4) 静态查找、二叉排序树及其平衡化、B树、散列查找算法、实现与性能分析。

(5) 插入、选择、比较、归并和基数等5类内排序算法、实现与性能分析。

(6) 递归、分治、贪婪等基本算法设计方法。

ae98bb6257ddf48c34067ed03c7b9650.png

三、在线教学设计

ae98bb6257ddf48c34067ed03c7b9650.png

1. 教学资源准备

理论教学内容更新:除了讲授数据在计算机中如何组织、存储和处理等基本知识外,为了大力强化程序设计基本能力的训练,对涉及程序设计语言的知识点进行总结、凝练,额外安排学时进行线上编程工具的培训,精炼地对数据结构中涉及的程序设计重点和难点内容进行样例讲解,设计了课堂讲解版和学生练习版两个版本的应用例,两个版本框架相同,但练习版缺乏核心代码,力求扫清学生学习、掌握数据结构核心内容的障碍。

对教学内容进行递进式设计,按照基础验证、综合应用和问题探索三个层次构建教学内容。设计、编制实验题目,既有涵盖数据结构的核心内容,又有与专业领域研究相关的算法(如网络、查找、模式匹配、散列等)。每次实验内容分为基础验证和综合应用两部分,在基础验证部分安排基本数据结构及算法实验项目,使学生掌握基本数据结构和算法,体会数据结构如何从现实问题中抽象,又如何用来解决实际问题,提升学生的兴趣和自信心,提高实践能力;综合应用部分安排C/C++描述一些经典应用问题所用到的数据结构,分析、设计并编程实现相应算法,使学生理解、掌握、消化理论教学难点内容。

除了常规的作业外,将部分作业调整到MOOC在线测试和视频观看驻点测试中,并将传统课堂的纸质作业改为线上提交方式。

2. 以代入感为目标的多平台结合的在线教学运行方案

疫情期间,教师和学生身处多地,都只能面对冷冰冰的计算机屏幕,教师看不到学生,无法从学生的神情中判断出学生的参与度和对内容的理解程度,缺乏沉浸感;学生上课时看到PPT 课件的同时就看不见老师,身边缺少同学的陪伴, 缺乏代入感。因此,线上教学并不是单纯地把原本的普通课堂搬到线上,而是需要通过合适的在线教学运行方案,拉近师生之间的距离,解决师生之间线上的互动问题。因此,选择在选择在线授课平台、制订授课方案时,既要方便与学生开展互动,还要符合授课规模的特点,选择简单、易于获取、音视频传输清晰流畅且功能简洁的平台,保证基本教学过程的平稳。

为此,在学院的指导下,经过教师之间的多次交流和师生的多轮测试,目前采取基于MOOC的在线异步SPOC模式,即

(1)以精心打磨、制作精良的国家精品慕课课程作为辅助教学资源,为学生提供丰富的信息、拓宽学生的视野,学生可以反复重听、暂停思考,学习方式和时段更加灵活。

(2)针对慕课学习完课率低、主要解决一般性知识传授等问题,而数据结构与算法既需要理论与理解,又需要实际操作和创新应用,需要有师生之间的实时交互,在对QQ屏幕分享、腾讯课堂、腾讯会议、钉钉、雨课堂等多种在线实时授课方式测试后,根据学生的感受投票选择了QQ屏幕分享作为实时在线直播授课方式,该工具简单、易于获取,视频、语音传输清晰较为流畅,功能简洁。

(3)为方便与学生开展各种方式的互动,纵使师生天各一方、互不相识,也要让学生有自我代入感,能够“入戏”,因此,选择雨课堂、QQ聊天作为实时在线互动平台,MOOC讨论区和QQ聊天作为课后交流平台。

3. 知识传授、内化和能力培养相结合的探究式课程在线化运行

(1)通过雨课堂开展课堂调查和投票

4a19e0ffbfc709e12657c5a60c74f96c.png

对授课对象开展学情调查和课后反馈调查是教学目标定位、教学内容选择、教学方法调整及确定的重要依据。在授课初期,通过雨课堂的投票功能,对学生的先修课程修读情况、学习兴趣、对本课程的理解、未来学习意愿、学习执行力等情况开展调查,力争有的放矢。这种投票还将用于课程进行过程中的课堂质量调查和反馈。

(2)多种模式相结合的知识掌握度即时测试

针对以知识传授为主的基本内容,准备单选题、多选题、填空题等题型,通过MOOC视频驻点测验、雨课堂答题、雨课堂弹幕、MOOC单元测试、QQ 在线提问-聊天区回答等方式,进行知识掌握程度测试,力争无论是观看授课视频, 还是实时直播授课时学生都能处于“在线”状态。

15a52ee0b580d9d718c230148bfbb503.png

(3)线上讨论和分享增强课堂互动活跃度

对于某些口述很难解释清楚、但画图演示一目了然的问题,在在线教学中, 采用触屏书写作为教辅工具,既便于讲解,还有类似课堂板书的效果,有助于师生间的互动,便于学员更深刻理解。

通过师生之间的音视频切换,由学生进行结果展示和讨论。后期还将结合实验题目由学生从问题来源、应用需求、问题分解方法、设计思想、设计表示、实现、测试和性能分析等角度对其研究内容进行报告。培养学生的探索、创新精神,另一方面,也从研究能力、表达能力等方面进行训练,力促知识内化为能力和素养。

289c8a56598127690a1cb6d60f95f4dd.png

(4)多措并举创建安全的互动氛围

考虑到数据结构课既需要理论与理解,又需要实际操作和创新应用,是程序设计的基本“内功”,非常烧脑;与此同时,程序设计与文章撰写有异曲同工之处,千人前面,各不相同,学生可能会有很多各不相同的疑难问题需要解答,又考虑到部分学生会比较害羞,怯于大庭广众下与人交流,必须给予其足够的互动安全感。我们设计了以下互动保障方案:

(a) 锵锵三人行:建议每3~4 名同学组成一个学习讨论组,每个同学至少在某一个讨论组中,相互讨论、互相帮助、共同提高;

(b) 真心话大冒险:QQ 群管理员设置了允许群内匿名提问和回答功能,学生针对课程和学业内容,可以选择实名或匿名提问、作答,鼓励学生大胆提出他们心中的疑问,又保证其安全感;

(c)硬核团队:考虑种种客观因素,我既不可能24小时在线答疑,一人也难以应对60位学生的问题,动员了实验室的4位研究生作为助教,他们本科要么是信息安全专业,要么是计算机专业,对数据结构与算法课程内容熟悉,编程能力突出,既有助于研究生能力的提高,又能帮助本科生解决问题,努力使问题不过夜,缩短响应周期。

ae98bb6257ddf48c34067ed03c7b9650.png

四、学生学习反馈

ae98bb6257ddf48c34067ed03c7b9650.png

1. 老师上课时由于个别同学没关麦偶尔会有噪音。

2. 个别同学无法进入雨课堂。

3. 部分同学反映老师在课堂上切换平台会造成学习效率的下降。

4. QQ屏幕分享时PPT的清晰度较低。

5. 上课期间老师采用QQ直播的方式进行授课,课下学生可以通过MOOC进行温习,效果很好。

ae98bb6257ddf48c34067ed03c7b9650.png

五、教学经验小结

ae98bb6257ddf48c34067ed03c7b9650.png

1. 课前调查、有的放矢。

2. 备选方案充足,成功应对了雨课堂服务器拥塞的情况。

3. 多样化的互动方式为营造沉浸式的课堂气氛提供了保障,使大多数学生始终处于在线状态,但课堂活跃度仍需加强。

4. 学生的程序设计先修课程差距较大,基础不够扎实,不能灵活地使用C/C++语言编程,对集成开发环境不够熟悉,需要和助教一起加强与这部分学生的定向互动。

5. 教学内容、教学方式需要进一步更新、优化,吸引学生的兴趣。课程教学内容的生动性、易于实践性方面仍有较大幅度的提升空间。

ae98bb6257ddf48c34067ed03c7b9650.png

文稿:刘航

审核:刘志强  王克勤

40500151084e1337c53e9320b38ba1c8.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言创建字符树,使用C语言构建基本的二叉树数据结构

二叉树结构常用的一些初始化代码#include#includetypedef struct Node{int data;Node *leftchild;Node *rightchild;}Node;/*初始化一棵二叉树排序树。*/void InitBinaryTree(Node**root,int elem){*root(Node*)malloc(sizeof(Node));if(!(*root)){printf("Memory allocat…

可变lambda_Lambda的Lambda(如果可选)

可变lambda因此,我对JDK 8中Optional接口的两个限制感到沮丧。第一个问题是,没有明显的方法可以在块中执行else操作,因为只有isPresent方法,除非您使用的是老式的if语句。 第二个问题当然是古老的板栗,即使您能够做到&…

【WebRTC---入门篇】(四)WebRTC设备管理

enumerateDevices API用来获取音视频设备 JS使用单线程处理,为了避免阻塞。使用异步调用Promise。handle为处理函数,处理主要逻辑。成功调用resolve;失败调用reject。Promise可以注册两个方法 then(逻辑处理成功会收到on_resolve) 和 catch(…

n阶幻方c语言编程,求单偶阶与双偶阶幻方编程思想及其算法!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #define N 100void oujie(int oushu){int a[N][N]{0},i,j,k1,n,m;noushu/2;m(oushu-2)/4;for(i1,j3*n/2;k<n*n;){if(i<0){ ii3*n; continue; }if(j>3*n){ jj-3*n; continue; }if(j<0){ jj3*n; continue; }if(…

python函数结构_PYTHON 之结构体,全局变量,函数参数,lambda编程 等

PYTHON 之结构体,全局变量,函数参数,lambda编程 ,generator&#xff08;yield&#xff09;使用以及如何自己构建switch结构 *********************** pass pass可以模拟struct结构 class Data pass d Data() d.a 2 d.b 4 print d.a print d.b *********************** 子函数…

【音视频安卓开发 (六)】Android GLSurfaceView播放视频

GLSurfaceView渲染RGB的数据,利用双缓冲空间机制。取出缓冲地址,将要渲染的数据copy到缓冲地址. 获取Surface Java部分&#xff1a; SurfaceView控件设置到界面中显示 SurfaceView定义一个类来实现 package com.example.hello;import android.content.Context; import android…

什么是openstack_您在OpenStack Summit 2016上错过了什么

什么是openstack今年&#xff0c;我第一次参加了4月25日至29日在德克萨斯州奥斯汀举行的OpenStack峰会。 今天结束了&#xff0c;我要回家了&#xff0c;我想回顾一下&#xff0c;从我的角度分享你错过的事情。 作为以应用程序开发人员为重点的技术传播者&#xff0c;转移到包…

python链表实现栈_使用python实现数组、链表、队列、栈

引言 什么是数据结构&#xff1f; 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。 简单来说&#xff0c;数据结构就是设计数据以何种方式组织并存储在计算机中。 比如&#xff1a;列表&#xff0c;集合和字典等都是数据结构 N.W…

笛卡尔乘积c语言代码,c# – 高效笛卡尔乘积算法

有人可以向我证明比目前使用的笛卡儿乘积算法更有效(假设有一个)。我已经看了周围的SO和谷歌&#xff0c;但看不到任何明显的东西&#xff0c;所以我可能会缺少一些东西。foreach (int i in is) {foreach (int j in js) {//Pair i and j}}这是我在代码中做的非常简化的版本。两…

【音视频安卓开发 (七)】安卓视频播放窗口去掉标题栏、全屏、横屏

java中的MainActivity初始化部分设置这些操作 //去掉标题栏supportRequestWindowFeature( Window.FEATURE_NO_TITLE);//全屏&#xff0c;隐藏状态getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN ,WindowManager.LayoutParams.FLAG_FULLSCREEN);//屏幕为横屏…

drools6.5_Drools 6.4.0.Final提供

drools6.5最新和最出色的Drools 6.4.0.Final版本现已可供下载。 这是我们先前构建的增量版本&#xff0c;对核心引擎和Web工作台进行了一些改进。 您可以在此处找到更多详细信息&#xff0c;下载和文档&#xff1a; Drools网站 资料下载 文献资料 发行说明 请阅读下面的…

python 统计组合用什么库_Python机器学习需要用到的库

www.oldboyedu.com 老男孩 IT 教育&#xff0c;只培养技术精英 Python 机器学习需要用到的库 Python 是一种面向对象的解释型计算机程序设计语言&#xff0c;具有丰富和强大的 库&#xff0c;再加上其简单、易学、速度快、开源免费、可移植性、可扩展性以及面向对 象的特点&…

c语言编程数学黑洞,一个数学黑洞——6174

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*问题描述&#xff1a;从0-9中任意选取4个不完全相同的数比如&#xff0c;不能是5 5 5 5&#xff0c;可以是1 2 2 2用这4个数排列出最大的数&#xff0c;2221&#xff0c;最小的数1222最大减最小&#xff1a;2221-12220999用0 9 9…

【音视频安卓开发 (八)】OpenSLES播放音频步骤和接口讲解

OpenSLES是安卓内部的音频播放和录音 初始化引擎 创建输出设备 配置PCM格式信息 初始化播放器 播放和缓冲队列 本文开源项目下载

kata_FizzBu​​zz Kata与Java流

kata在柔道练习仅几周之后&#xff0c;我的儿子感到无聊。 他抱怨说自己没有学任何东西&#xff0c;因为他一遍又一遍地做着同样的事情。 混淆学习和做新事物的不仅是幼儿。 例如&#xff0c;有多少软件开发人员通过执行kata或参加dojos来进行刻意练习的麻烦&#xff1f; 重复…

python中if语句的实例_对python中if语句的真假判断实例详解

说明 在python中&#xff0c;if作为条件语句&#xff0c;当if后面的条件参数为真时&#xff0c;则执行后面的语句块&#xff0c;反之跳过&#xff0c;为了深入理解if语句&#xff0c;我们需要知道if语句的真假判断方式。 示例 在python交互器中&#xff0c;经过测试发现以下条件…

ds18b20c语言显示小数位,DS18B20多点测温(读序列,匹配序列,51单片机C程序,1602显示)...

DS18B20多点测温(读序列&#xff0c;匹配序列&#xff0c;51 C程序&#xff0c;1602显示)程序一&#xff1a;单个读序列号。程序二&#xff0c;匹配并且读两个DS18B20&#xff0c;当然&#xff0c;读多个与读两个基本原理一样&#xff0c;只要加上其序列号等即可。本程序所有显…

【WebRTC---入门篇】(五)Web服务器原理与Nodejs搭建

Web服务器工作原理 Nodejs工作原理 首先自己开发的APPLICATION(自己开发的JS程序)输出给V8引擎,解析后的二进制文件调用NODE API,然后调用LIBUV事件处理库(插入到事件队列,在队列中不断循环处理事件)。 JavaScript解析 V8引擎先收到JS程序,解析生成JS语法树,通过解析器…

代理模式和动态代理模式_代理模式介绍

代理模式和动态代理模式代表&#xff1a;被选中或当选为他人投票或代理的人– Merriam-Webster 。 委托模式&#xff1a;在软件工程中&#xff0c;委托模式是面向对象编程中的一种设计模式&#xff0c;其中&#xff0c;一个对象而不是执行其陈述的任务之一&#xff0c;而是将该…

【WebRTC---入门篇】(六)JavaScript基础

变量与类型 var与let的区别&#xff0c;var局部变量&#xff1b;let全局变量 函数