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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

drools6.5_Drools 6.4.0.Final提供

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

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

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

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

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

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

变量与类型 var与let的区别,var局部变量;let全局变量 函数

javaio流层次结构_流的多层次分组

javaio流层次结构1.简介 使用Java 8流,可以很容易地根据不同的标准对对象集合进行分组。 在这篇文章中,我们将看到如何从简单的单级分组到更复杂的,涉及多个级分组的分组。 我们将使用两个类来表示我们要分组的对象:人和宠物。 …

大型程序是如何开发的_大型小程序如何研发提效

作者:王梦君微信公众号:滴滴顺风车技术出处:https://mp.weixin.qq.com/s/M1VArJ_ORY-eXSKzD6ysQw导读:自2016年小程序诞生以来,小程序以其“用完即走”的设计理念,以及简单易上手的开发模式,吸引了大批的小程序使用者以及开发者&a…

python数码时钟代码_Python+Pyqt实现简单GUI电子时钟

本文实例为大家分享了PythonPyqt实现简单GUI电子时钟的具体代码,供大家参考,具体内容如下 突发奇想想用GUI做一个简单的电子时钟界面,利用pyqt模块也很方便,代码如下: from PyQt5.QtGui import * from PyQt5.QtCore im…

【WebRTC---入门篇】(八)WebRTC核心之RTP Medio 媒体控制与数据统计

RTCPeerConnection底层是通过RTP Medio实现的,处理真正数据传输,编码流量各种控制的实现。 Receiver 通过 getReceivers 可以获取一组RTCRtpReceiver对象,用于接收数据 Sender 通过getSenders 可以获取一组RTCRtpSender对象,用于发送数据,每个对象对应一个媒体轨 RTCR…

python语言中的单行注释语句_Python 1基础语法一(注释、行与缩进、多行语句、空行和代码组)...

#第一个注释 print ("Hello, Python!") #第二个注释 输出结果为:RESTART: E:/python/change.py Hello, Python! 多行注释可以用多个 # 号,还有 和 """:实例如下: #第一个注释#第二个注释 第三注释 第四…

【WebRTC---入门篇】(九)WebRTC网络基础:P2P/STUN/TURN/ICE

NAT 作用:内网地址转公网地址 STUN 作用:中介将公网信息彼此交换 TURN 作用:P2P不成功的话在云端架设服务器,双方进入同一房间。可以在一起进行数据交互 ICE 作用:打包以上取最优,先尝试P2P。如果P2P不通再选择TURN。ICE尝试所有可能性 Relay是TURN Server,大多数情况…

antlr4例子_ANTLR和网络:一个简单的例子

antlr4例子网络上的ANTLR:为什么? 我开始在MS-DOS上编写我的第一个程序。 因此,我非常习惯在自己的机器上安装工具。 但是在2016年,网络无处不在,因此那里也可能需要我们的语言。 可能的情况: ANTLR 也在…

【WebRTC---入门篇】(十)NAT

NAT主要用于内网穿透 NAT产生原因 NAT的种类 NAT穿越原理 完全锥型:内网主机先向外发送一个请求形成IP和port

maven java1.7_本周Java技巧#7 – Maven慢吗?

maven java1.7本周Java本周技巧是有关Maven的上一期的后续内容。 第一个视频介绍了与Maven依赖关系有关的方面。 该视频将介绍一些加快Maven构建速度的技术。 Maven慢吗? 从Maven 3开始,您可以并行运行构建。 根据构建机器和项目结构的不同,…

【WebRTC---入门篇】(十一)STUN协议

STUN作用:用于NAT穿越;它是典型的CS模式 RFC STUN规范 STUN header STUN Header格式

mysql数据迁移到sqlserver_一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE...

这是一个.net下操作数据库(结构数据库)的工具类,支持sqlserver、oracle、mysql、postgres、sqlite、access等常见数据库。注意:它并不是一个orm工具(常见的orm框架如:EF、Dapper等)。2.1 引入DBUtil依赖1. 首先打开vs(推荐vs2019)&#xff0c…

【H.264/AVC视频编解码技术】第二章【H264码流分析】

H264码流分层 NAL层,视频数据网络抽象层,作用是控制二进制数据的传输,主要用于网络传输。 VCL层,视频数据编码层。 VCL结构关系 NALU NAL Header (1B)+ RBSP H264码流中NALU sps pps IDR帧的理解 概念 什么是NALU? H264码流可以分为两层,VCL层和NAL层,NAL的全称…