《数据结构》第四章 字符串和数组 教学设计

本章,总时问分为1.5周,共三次课来来学习。两次上课(9周周一和周四),一次实验(10周周四)。以下是教学设计。

第四章 字符串和多维数组 教学设计

一、课前预习任务

  • 学习资料
资料1. 教材第三章Page 79-98(必看)

资料2.辅导材料第一章Page 55-65(参照,选看)

资料3.5个教学PPT文档(文档4.1,文档4.2,文档4.3,文档4.4,文档4.5)

资料4.5个教学个视频(视频4.1,视频4.2,视频4.3,视频4.4,视频4.5)

  • 学习任(在第9周一前完成)

本部分重点要掌握字符串和多维数组逻辑结构,以及其存储方法,重点掌握字符匹配思想和算法,多维数组的元素存储和矩阵数组存储应用。

1、学习资料1和资料2,即学习课本和辅导教材,看5个教学视频(视频在博客课程中给出链接)。并在网上提交本章节的知识点总结导图。(目的是记忆和理解知识)。总分10分。

2、试做课后作业,根据学习和作业结果,查阅课本或相关资料,并在网络上提交2至3个问题。(进一步理解知识)。任务满分10分,不提者不得分;

3、小组间互答互评问题,交流互动。小组成员3-4人,有效问答5个以上(同伴教学,小组合作)。计分10分。少一个扣2分,本题扣到0分为止。

4、课后升级业(提升教学,学会应用和设计)

课后升级作业(单独完成)

本部分重点要掌握字符串和数组的逻辑结构特点,以及它们顺序存储结构思想,掌握字符的匹配模式方法和特殊矩阵的数组存储,然后学习在具体应用中灵活运用。

自己找一个现实中的问题,并从如下几个方面来实现问题。其中包括如下三部分内容:

问题描述

问题分析,和相关的ADT的定义;

数据类型的定义;

使用字符串或多维数组来实现数据的表达和存储,并设计和实现相关算法;使用工具语言写也程序并调试运行。找出问题解答。

注意:在自己博文中上传以上各个内容。计分20分。

三 课前课后作业评分说明

课后环节计分20分,完成课堂扩展作业的,作业也在网络提交,另外,问题扩展,写 总结性博文章 ,或者深入探讨问题者。鼓励学生深入学习。

条目

分数

标准

说明

题1:

知识总结导图

10

10分:完整、全面、结构清楚、独特。

8分:完整,结构合理。

6分:较完整,结构一般。

4分:不完整。

是全章:第四章的知识点;

工具不限

题2:

学习提问

10

10分:数量够、问题有深度,是思考结果。

8分:数量不够、问题有深度。

6分:数量够,问题没思考。

4分:数量不够,没思考。

网络平台提交

题3:

小组互答

10

10分:数量够、回答有见解。

8分:数量不够、回答一般。

6分:数量够,回答随大流没主见。

4分:数量不够,或没回答只浏览。

网络平台提交

课前课后楚河汉界

课后:

升级作业

20

网上上交作业,网上批改。

1.老师评改,优秀上光荣榜,或课上展示。计分四等。分别计分20、16、12、8分。

2.并写评语,重在学生努力程序,和自己相比较,进步就好。

尺度老师把握,凡上光荣榜者计满分。包括进步者。

:总分100分、课前作业30分,课后升级作业20分,课堂教学计分50分。


四、课堂学习任务和过程

课堂教学主要以课前作业展开,目的是在学生学习基础上加深理解,巩固所学,查漏补缺。

0、课前分析评价上次课课后升级作业。5分钟。本节课是课程第一次课,故没有上次课后作业.

1、25分钟展示:展示好的课前作业知识总结导图,包括5分钟展示,10分钟学生评价,5分钟讨论引入。结合课前作业情况进行概念性小结,为后续内容打好基础。

达到目标是学生掌握数据结构内容和算法概念。

2、20分钟分享代表性问题:将学生交流互动的代表性问题提出来,课堂大家再讨论,以小组代表陈述为主,并引导,让同学们得出正确答案或解决方向。

3、25分钟小测:概念的深入研究,以测试小题形式开展

列出一个数据,同学们分析它们的逻辑结构和相应的合理物理结构,小组讨论,代表陈述。

4、10分钟学生吐槽:还有不理解的同学可以提出问题,全班征答案。

5、10分钟:总结评价鼓励。

课堂教学,学生评价体系,主要从态度上,从参与积极程度来考虑,没作过细量化。具体情况如下表。

学习过程

时间

计分

形式

说明

步骤0:

展示评价上次课课后升级作业

5分钟

50

课上计分50分。

但不过细量化,重点从态度和参与积极程度来考虑:

1. 一般积极,大多同学给分40.

(大众同学)

2. 积极、并提出鲜明观点者给满分50分。进步明显者计分50分。(优秀同学)

3.不积极者:不主动,点名不响应,者给30分。

4.不参加者计分0分。

(特殊同学)

操作性:只要记把握好两头学生分数就可以了,两头学生每次课一般不多。


步骤1:

课前任务1优秀作业展示和讨论

25

以后每一次课20分

步骤2:

课前任务2代表性问题讨论

20

步骤3:

小测,深入探讨

25

步骤4:吐槽扩大教学内容

10

步骤5:总结和下次任务提示

10

所有作业均在网上提交给学生,此得提醒。

:总分100分。课堂教学计分50分。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


【啊哈!算法】算法3:最常用的排序——快速排序       上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法
匿名组 这里可能用到几个不同的分组构造。通过括号内围绕的正则表达式就可以组成第一个构造。正如稍后要介绍的一样,既然也可以命名组,大家就有考虑把这个构造作为匿名组。作为一个实例,请看看下列字符串: “08/14/57 46 02/25/59 45 06/05/85 18 03/12/88 16 09/09/90 13“ 这个字符串就是由生日和年龄组成的。如果需要匹配年两而不要生日,就可以把正则
选择排序:从数组的起始位置处开始,把第一个元素与数组中其他元素进行比较。然后,将最小的元素方式在第0个位置上,接着再从第1个位置开始再次进行排序操作。这种操作一直到除最后一个元素外的每一个元素都作为新循环的起始点操作过后才终止。 public void SelectionSort() { int min, temp;
public struct Pqitem { public int priority; public string name; } class CQueue { private ArrayList pqueue; public CQueue() { pqueue
在编写正则表达式的时候,经常会向要向正则表达式添加数量型数据,诸如”精确匹配两次”或者”匹配一次或多次”。利用数量词就可以把这些数据添加到正则表达式里面了。 数量词(+):这个数量词说明正则表达式应该匹配一个或多个紧紧接其前的字符。 string[] words = new string[] { "bad", "boy", "baad", "baaad" ,"bear", "b
来自:http://blog.csdn.net/morewindows/article/details/6678165/归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列
插入排序算法有两层循环。外层循环会啄个遍历数组元素,而内存循环则会把外层循环所选择的元素与该元素在数组内的下一个元素进行比较。如果外层循环选择的元素小于内存循环选择的元素,那么瘦元素都想右移动以便为内存循环元素留出位置。 public void InsertionSort() { int inner, temp;
public int binSearch(int value) { int upperBround, lowerBound, mid; upperBround = arr.Length - 1; lowerBound = 0; while (lowerBound <= upper
虽然从表内第一个节点到最后一个节点的遍历操作是非常简单的,但是反向遍历链表却不是一件容易的事情。如果为Node类添加一个字段来存储指向前一个节点的连接,那么久会使得这个反向操作过程变得容易许多。当向链表插入节点的时候,为了吧数据复制给新的字段会需要执行更多的操作,但是当腰吧节点从表移除的时候就能看到他的改进效果了。 首先需要修改Node类来为累增加一个额外的链接。为了区别两个连接,这个把指
八、树(Tree)树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?树这种结构还可以表示成下面这种方式,可见树用来描述包含关系是很不错的,但这种包含关系不得出现交叉重叠区域,否则就不能用树描述了,看图:面试的时候我们经常被考到的是一种叫“二叉树”的结构,二叉
Queue的实现: 就像Stack类的实现所做的一样,Queue类的实现用ArrayList简直是毋庸置疑的。对于这些数据结构类型而言,由于他们都是动态内置的结构,所以ArrayList是极好的实现选择。当需要往队列中插入数据项时,ArrayList会在表中把每一个保留的数据项向前移动一个元素。 class CQueue { private ArrayLis
来自:http://yingyingol.iteye.com/blog/13348911 快速排序介绍:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地
Stack的实现必须采用一种基本结构来保存数据。因为再新数据项进栈的时候不需要担心调整表的大小,所以选择用arrayList.using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collecti
数组类测试环境与排序算法using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Data_structure_and_algorithm{ class CArray { pr
一、构造二叉树 二叉树查找树由节点组成,所以需要有个Node类,这个类类似于链表实现中用到的Node类。首先一起来看看Node类的代码。 public class Node { public int Data; public Node Left; public Node Right; public v
二叉树是一种特殊的树。二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树。更加严格的递归定义是:二叉树要么为空,要么由根结点、左子树和右子树组成,而左子树和右子树分别是一棵二叉树。 下面这棵树就是一棵二叉树。         二叉树的使用范围最广,一棵多叉树也可以转化为二叉树,因此我们将着重讲解二叉树。二叉树中还有连两种特殊的二叉树叫做满二叉树和
上一节中我们学习了队列,它是一种先进先出的数据结构。还有一种是后进先出的数据结构它叫做栈。栈限定只能在一端进行插入和删除操作。比如说有一个小桶,小桶的直径只能放一个小球,我们现在向小桶内依次放入2号、1号、3号小球。假如你现在需要拿出2号小球,那就必须先将3号小球拿出,再拿出1号小球,最后才能将2号小球拿出来。在刚才取小球的过程中,我们最先放进去的小球最后才能拿出来,而最后放进去的小球却可以最先拿
msdn中的描述如下:(?= 子表达式)(零宽度正预测先行断言。) 仅当子表达式在此位置的右侧匹配时才继续匹配。例如,w+(?=d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。(?(零宽度正回顾后发断言。) 仅当子表达式在此位置的左侧匹配时才继续匹配。例如,(?此构造不会回溯。msdn描述的比较清楚,如:w+(?=ing) 可以匹配以ing结尾的单词(匹配结果不包括ing),(
1.引入线索二叉树 二叉树的遍历实质上是对一个非线性结构实现线性化的过程,使每一个节点(除第一个和最后一个外)在这些线性序列中有且仅有一个直接前驱和直接后继。但在二叉链表存储结构中,只能找到一个节点的左、右孩子信息,而不能直接得到节点在任一遍历序列中的前驱和后继信息。这些信息只有在遍历的动态过程中才能得到,因此,引入线索二叉树来保存这些从动态过程中得到的信息。 2.建立线索二叉树 为了保
排序与我们日常生活中息息相关,比如,我们要从电话簿中找到某个联系人首先会按照姓氏排序、买火车票会按照出发时间或者时长排序、买东西会按照销量或者好评度排序、查找文件会按照修改时间排序等等。在计算机程序设计中,排序和查找也是最基本的算法,很多其他的算法都是以排序算法为基础,在一般的数据处理或分析中,通常第一步就是进行排序,比如说二分查找,首先要对数据进行排序。在Donald Knuth 的计算机程序设