收藏 分销(赏)

对程序设计类课程双语教学的重要性和实施方法的思考.doc

上传人:xrp****65 文档编号:7679259 上传时间:2025-01-12 格式:DOC 页数:20 大小:266.50KB
下载 相关 举报
对程序设计类课程双语教学的重要性和实施方法的思考.doc_第1页
第1页 / 共20页
对程序设计类课程双语教学的重要性和实施方法的思考.doc_第2页
第2页 / 共20页
点击查看更多>>
资源描述
从C基本顺序表到C++基本顺序表类 在上一期的“数组和基本顺序结构”一文中我们讲到,优秀的程序员自觉地把函数分为基本操作函数和应用函数,然后把基本操作函数和基本顺序表结构看作一个整体,当作一个类型,用于应用函数即程序的设计和实现,表1简要概括了这些内容。<br>  <br>  可是C语言编译器没有把这两类函数区别开,它们的声明、定义和调用方式都一样。不仅如此,它们对结构成员的访问权限也一样,应用程序可以直接访问结构成员,例如表1中的Purge函数可以修改为:<br>  void Purge(SeqList *L)<br>  //删除表中的重复数据<br>  {<br>  int i,j;<br>  for(i=0;i<L->size;i++)//直接访问结构成员size<br>  {<br>  j=i+1;<br>  while(j<L->size)<br>  if(L->data[i]==L->data[j]) //直接访问结构成员data<br>  Erase(L,j);<br>  else<br>  j++;<br>  }<br>  }<br>  <br>  而C++编译器克服了C的局限性,实现程序员的设计方法,从概念和语法两个方面把两类函数区分开来。<br>  <br>  1.从C基本顺序表到C++基本顺序表类的转换<br>  <br>  下面我们分十步把表1中简化的C基本顺序表结构转化为C++基本顺序表类。<br>   <br>  ① 布尔型函数。C++增加了布尔型,它占用一个字节,仅取两个值:真和假(true和false),对应的整型值是1和0。于是,对取真假值的函数,应将其返回值定义为布尔型。例如:<br>  bool ListEmpty(const SeqList *l);//判空<br>  ② 将宏常量改为const常量。例如将<br>  #define MaxSeqSize 100<br>  改为<br>  const int MaxSeqSize=100;<br>  在C++中一般都用const常量或者枚举常量来代替宏常量,这是因为宏代表的是在预处理阶段完成的一种文本替换过程,它忽略了语言的作用域、类型系统和所有其他的语言特性和规则,这使它和语言本身割裂开来。<br>  ③ 常量型引用调用。把带有形式数据类型参量的值调用函数改为常量型引用调用[1]:<br>  void InsertRear(SeqList *l, const Type& item);//尾插<br>  ④ 函数类型是常量型引用。若函数类型是形式数据类型,则将其改为常量型引用[1]:<br>  const Type& GetData(const SeqList *l,int id);//取值<br>  ⑤ 重载。简化求长和判空等函数名:<br>  int Size(const SeqList *l);//求长。取元素个数<br>  bool Empty(const SeqList *l);//判空<br>  在C语言中,函数名代表函数地址,因此不同的函数必须有不同的函数名,即使参数表不同而功能相同的函数,也要赋予不同的函数名。例如,在基本顺序表、基本顺序队列和基本顺序栈中的求长基本操作,虽然功能一样,但是函数名必须有别:<br>  int ListSize(const SeqList *l);//基本顺序表求长<br>  int QSize(const Queue *q);//基本顺序队列求长<br>  int StSize(const Stack *s);//基本顺序栈求长<br>  显然,这给程序设计和阅读带来不必要的麻烦。按照简约的习惯,功能相同的函数,即使参数表不同,也应具有相同的函数名,例如:<br>  int Size(const SeqList *l);//基本顺序表求长<br>  int Size(const Queue *q);//基本顺序队列求长<br>  int Size(const Stack *s);//基本顺序栈求长<br>  可是函数名相同而参数表不同的函数如何对应不同的地址呢?一种简单的方法是建立一个映射,使函数名和参数表对应一个新的函数名。这个映射是单一的:只要函数名和参数表有一处不同,所对应的新的函数名就不同。我们让这个新的函数名对应函数的地址,这项工作由C++编译器来完成。它根据参量表的参量个数和类型对函数名进行扩展,形成函数的内部名称,这个内部名称对应函数地址。例如,求长函数经编译器扩展后的内部名称可能是:<br>  Size_const_SeqList*<br>  Size_const_Queue*<br>  Size_const_Stack*<br>  当然,不同的编译器,扩展方法可能不同,但实质相同。<br>  ⑥ 成员函数。首先,将构造函数和基本操作函数参量表中的结构指针l改名为this,例如:<br>  void SetList(SeqList *this);//给元素个数size赋值0<br>  int Size(const SeqList *this);//求长<br>  bool Empty(const SeqList *this);//判空<br>  const Type GetData(const SeqList *this,int id);<br>  //取值<br>  void InsertRear(SeqList *this, const Type& item);<br>  //尾插<br>  void Delete(SeqList *this, int id);//定点删除<br>  错误信息报告函数没有结构指针参量,需要补上(补上的this指针在定义中没有用,我们称它为哑元),然后将函数名简化:<br>  void Error(const SeqList *this,const char *c);//错误信息报告<br>  接下来,将this指针隐藏,指向常量指针this的const修饰符移到参量表括号之后。最后,将构造函数和基本操作函数放入结构体内,成为结构的成员,称为成员函数,后带const修饰符的函数称为常量型成员函数:<br>  const int MaxSeqSize=100;<br>  struct SeqList<br>  {<br>  Type data[MaxSeqSize];<br>  int size;<br>  void SetList(void);//构造函数<br>  int Size (void)const; //常量型成员函数<br>  bool Empty(void)const;<br>  void InsertRear(const Type& item);<br>  const Type& GetData(int id)const;//常量型成员函数<br>  void Erase(int id);<br>  void Error(const char *c)const; //常量型成员函数<br>  };<br>  成员函数的调用方式发生变化,设L为表结构变量,原来是<br>  ListSize(&L);//L基本顺序表结构变量<br>  Erase(&L,1);<br>  现在是<br>  L.Size();<br>  L.Erase(1);<br>  设L为表结构指针,原来是<br>  ListSize(L);<br>  //L基本顺序表结构变量指针<br>  Erase(L,1);<br>  现在是<br>  L->Size();<br>  L->Erase(1);<br>  C++编译器对新的调用方式在内部展开的过程与上面生成函数成员的过程正相反。例如:<br>  L.Size();<br>  内部展开过程首先是显示this指针参量,然后根据参量表扩展函数名,扩展之后,函数的内部原型可以假设是<br> </p> <p> <p>int _ListSize(const SeqList*this);<br>  然后调用形式为:<br>  _ListSize(&L);<br>  实质上与原来相同,但是意义大不一样:成员函数属于结构的成员,由结构变量负责调用,而且成员函数中隐藏的this指针就指向那个调用它的结构变量。<br>  原来一个结构空间的大小是其数据成员空间大小之和,现在结构中包含了函数成员,是否结构空间就变大了?答案是没有。从图1演示的成员函数调用的内部过程我们不难理解,新的结构与原来的结构本质上是相同的,只是编译器的工作多了,函数和调用有了内部展开形式。<br>  <br>  ⑦ 成员函数定义。成员函数的定义可以在结构体内,也可以在结构体外。在结构体内定义,等于内联函数;在结构体外定义,等于函数类型标识符和函数名之间要加入结构名和域解析运算符“::”,以区别于一般的实用函数。在函数定义体内,this指针可以显示,也可以隐藏。<br>  const int MaxSeqSize=100;<br>  struct SeqList<br>  {<br>  Type data[MaxSeqSize];<br>  int size;<br>  void SetList(void);<br>  int Size (void)const{return(size);}// return(this->size);<br>  //在结构体内定义<br>  bool Empty(void)const;<br>  ……<br>  };<br>  bool SeqList::Empty() const//在结构体外定义<br>  {<br>  return(size==0);//return(this->size==0);<br>  }<br>  ⑧ 构造函数。现在从声明、定义和调用三个方面把基本操作函数与实用功能函数区分开了,接下来我们区分构造函数和基本操作函数。在基本顺序表中,构造函数的执行过程是:<br>  Seqlis L;<br>  SetList(&L);//调用构造函数<br>  这两条语句是不能分开的,它们一起完成了基本顺序表的创建。C++把这两条语句合并为一条。具体方法是:把构造函数名和结构名统一,都是SeqList,使语句<br>  Seqlis L;<br>  蕴涵着调用构造函数。因为构造函数是基本顺序表定义的一部分,所以它的头应该是结构名称,不含返回值类型说明。又因为它的内容需要程序员定义,所以保留了函数体。<br>  struct SeqList<br>  {……<br>  SeqList(void);//构造函数声明,名称与结构名称相同,而且取消了函数返回值类型<br>  ……<br>  };<br>  SeqList::SeqList (void)//构造函数外部定义<br>  {<br>  size=0;//this->size=0;<br>  }<br>  ⑨ 访问权限。在基本顺序表中,各种函数都可以直接访问结构成员,没有区别。C++在结构中增加了访问权限,一般分私有和公有。私有成员只能由结构成员访问,即对结构成员公开,而结构以外的函数只能访问公有成员。公有部分是任何函数都可以直接访问或使用的,即对外公开、可见。<br>  const int MaxSeqSize=100;<br>  struct SeqList<br>  {<br>  private://私有声明<br>  Type data[MaxSeqSize];<br>  int size;<br>  void Error(const char *c)const;//私有函数<br>  public://公有声明<br>  SeqList(void);//构造函数<br>  int Size (void)const;<br>  bool Empty(void)const;<br>  void InsertRear(const Type& item);<br>  const Type& GetData(int id)const;<br>  void Erase(int id);<br>  };<br>  结构以外的函数“看不见”结构中的私有部分。例如,实用功能函数Purge是不能直接访问结构成员data、size和Error,只能通过公有成员函数来处理:<br>  void Purge(SeqList *L)<br>  //删除表中的重复数据<br>  {<br>  int i,j;<br>  for(i=0;i<L->Size();i++)<br>  {<br>  j=i+1;<br>  while(j<L->Size())<br>  if(L->GetData(i)==L->GetData(j))<br>  L->Erase(j);<br>  else<br>  摘要:本文以VFP教学为例,通过对循环语句中给出的一道例题,提出了在程序设计语言教学中如何培养学生编程的兴趣和技巧。在教学过程中应因材施教,引导学生在课堂上积极思考,提高分析和解决问题的能力。<br>  关键词<br>本文来自:计算机毕业网 :计算机程序设计;学习能力;兴趣<br>      <br>  1引言<br>  <br>  目前,国内绝大多数高校的“计算机程序设计语言”这门课程一般是选择一门语言进行教学。按传统的教学模式,把计算机程序设计作为一门语言来进行讲解,注重语言的基本语句、语法和一些细节的分析,按部就班地依照语言教学的规范,进行“字”、“词”、“句”的讲解,使学生原来很高的学习热情,由于枯燥、乏味的语法和过分的细节约束而失去了对该门课程的学习兴趣,往往产生畏难的情绪。究其原因,是因为教学没有站在如何应用计算机工具编程解决实际问题或实际项目的角度,没有把逻辑与编程思想放在主体地位,没有教给学生如何分析和解决问题,其结果是教师教得很辛苦,学生学得很模糊,遇到问题不知如何分析,好像是在学习第二门外语,而不是程序设计。<br>  根据以上情况,本人在进行实际的教学过程中进行了改革,改变传统的教学方式,利用实验室多媒体的教学优势,在讲解循环语句时做了尝试。实践证明,课堂气氛活跃,互动性强,有利于学生共同参与讨论,锻炼学生的学习能力和创新思维,提高了学生的学习兴趣。<br>  <br>  2问题的提出<br>  <br>  首先,从一道例题着手分析。<br>  例1:要求输出如下图形:<br>  *********<br>  *********<br>  *********<br>  *********<br>  *********<br>  *********<br>  *********<br>  分析该图形的输出,不难得出如下的结论,该图形输出7行,每行输出9个“*”。<br>  给出伪代码:<br>  for i=1 to 7<br>  ? “*********”<br>  endfor<br>  思考:如何用双重循环来实现该图形的输出,给出伪代码,并给出适当的说明。<br>  for i=1 to 7&&输出7行<br>  ? && 换行输出<br>  for j=1 to 9<br>  ?? “*”<br>  && 每行连续输出9个“*”<br>  endfor<br>  endfor<br>  从本例中逐步引导学生对于图形的输出由单循环向双重循环过渡,为后面的例题讲解做好准备。<br>  例2:输出如下图形:<br>        *********<br>       *********<br>      *********<br>     *********<br>    *********<br>   *********<br>  *********<br>  通过本例的分析,使学生知道该图形与前面的图形仅仅在输出的格式上有所区别,其他一点也没有改变,对原先的程序只要略做修改就能得到结果。<br>  for i=1 to 7<br>  && 输出7行<br>  ? space(7-i)<br>  && 换行、每行输出“*”前,输出的空格数与行数存在7-i的关系。<br>  for j=1 to 9<br>  ?? “*”<br>  && 每行连续输出9个“*”<br>  endfor<br>  endfor<br>  课后思考:输出如下图形<br>   *********<br>  *********<br>   *********<br>    *********<br>     *********<br>      *********<br>       *********<br>  <br>  3循序渐进,把问题引向深入<br>  <br>  具备了上述两个例题的基本知识,就可以逐步把学生的思路引向深入,参与分析与讨论,让他们在学习中有自己解决问题的方法,增加师生之间的互动性。<br>  例3:输出如下图形<br>     *<br>     ***<br>    *****<br>    *******<br>   *********<br>   ***********<br>  *************<br>  从例2的分析可知,使学生在原来程序的基础上进行修改。对图形的分析发现,输出的“*”为7行,每行输出“*”的个数分别1、3、5、7、9、11、13,在每行输出“*”前应输出的空格数分别为6、5、4、3、2、1、0。通过分析能得到如下的关系:<br>  <br>  对例2的伪代码只要稍做修改,就能得到输出该图形的伪代码。<br>  for i=1 to 7 <br>  && 输出7行<br>  ? space(7-i)<br>  && 换行、每行输出“*”前,输出的空格数与行数存在7-i的关系。<br>  for j=1 to 2*i-1 && 每行连续输出2*i-1个“*”<br>  ?? “*”<br>  endfor<br>  endfor<br>  课后思考:输出如下图形<br>    *<br>   ***<br>   *****<br>  *******<br>   *****<br>   ***<br>    *<br>  绝大多数同学提出的想法是把该图形分成两部分输出,第一部分为前4行,第二部分为后三行。这是一种常规的思维模式,是在前面讲解知识的基础上,通过自己的思维,得出的结论。那么,该程序有无技巧可言呢?先提出这样的问题,然后要求同学们共同讨论,分析其中行、个、空格数之间有无关系。<br>  同学们通过观察发现三者之间存在某种联系,关键是如何知道其中的推导关系。<br>   <br>  在得出行数和每行输出的个数及每行输出空格数之间的关系后,问题便迎刃而解了。在原来伪代码的基础上进行修改就可以了。<br>  for i=1 to 7&& 输出7行<br>  ? space(1+abs(4-i))<br>  for j=1 to 7-2*abs(4-i) <br>  ?? “*”<br>  endfor<br>  endfor<br>  课后思考:输出如下图形<br>    1    A<br>   222   ABC<br>   33333  ABCDE<br>  4444444 ABCDEFG<br>   33333  ABCDE<br>   222   ABC<br>    1    A<br>  <br>  4结束语<br>  <br>  通过讲解、分析利用双重循环实现不同图形的输出,同学们积极参与讨论,本次内容由简到难,通过不断的提问和分析,使学生参与其中,形成师生互动,改变传统的老师讲学生听的教学模式。课后走访一些学生,他们一致认为这样的形式教学效果好,学生也乐于接受,而且课后布置的作业也很快完成了。<br>  <br>  参考文献<br>  [1] 王鸿磊,张雪松. 程序设计基础教与学的新模式[J]. 计算机教育,2006,(11):53-54.<br>  收稿时间:2010-2-15<br>     </p> <p> </p> <p> </p> 摘要:本文针对计算机网络课程的教学内容、教学方法以及教学手段展开讨论,总结了我院多年来对计算机网络课程教学研究的成果和经验。<br>  关健词:课程教学;教学内容;教学方法;教学手段<br>     <br>  计算机网络是计算机和通信两个领域的交叉学科,内容极为复杂,涉及到以错综复杂的方式彼此交织的许多概念、协议和技术,是一门公认较难讲和难学的课程,因此很多教师都致力于改进计算机网络课堂教学和实验教学方法。我院“计算机网络”课程是国防科大精品课程、湖南省精品课程以及国家精品课程。为此我们积极开展了“计算机网络”课程教学方法研究,并在教学实践中予以贯彻。<br>  <br>  1教学内容<br>  <br>  计算机网络课程涉及到众多的概念、原理、协议和技术,而且这些内容以错综复杂的方式彼此交织在一起。为应对计算机网络在内容上的广阔度和复杂度,许多计算机网络课程教学通常都是围绕网络分层模型来组织的。这种分层的组织方式使得学生能够看透计算机网络的复杂性——他们在学习整个体系结构中某部分的独特概念与协议的同时,也看清了这一层的概念和协议在整个网络系统中所处的地位和作用,有利于学生从总体上掌握计算机网络。<br>  在此基础上,我们认为计算机网络课程的教学重点应该放在网络的基本概念、工作原理,而不应该局限各种协议数据格式以及技术细节上。计算机网络课程的重点主要包括:分层与协议、网络体系结构、ISO/OSI参考模型、TCP/IP参考模型、以太网、无线局域网、TCP/IP协议族(含ARP、IP、ICMP、UDP、TCP以及IP路由协议等)、Socket编程以及典型网络应用。计算机网络课程的难点主要包括:网络体系结构和参考模型、IP路由协议、TCP差错控制、流量控制和拥塞控制、TCP/IP协议族各层协议之间交互等等。我们在机械工业出版社出版的“计算机网络”(第2版)也充分体现了计算机网络课程教学的重点和难点。<br>  <br>  2教学方法<br>  <br>  2.1 “自底向上”与“自顶向下”相结合教学法<br>  传统上,一般我们是按照自底向上的教学方法,即从网络的最底层(物理层)一直到最高层(应用层),依次介绍网络系统中每层的功能、使用的协议及其关键技术。但单纯按照自底向上的方法阐述计算机网络系统的基本概念和工作原理,学生缺乏对计算机网络整体上的把握,因此我们提出了“自底向上”和“自顶向下”相结合教学法。我们在计算机网络课程教学实施过程中,一方面采用自底向上逐层介绍计算机网络,同时还采用自顶向下的方法通过一些典型的网络应用(例如邮件发送和网页浏览等)来阐述计算机网络各层协议的工作原理及其交互过程。这种“自底向上”与“自顶向下”相结合教学法有利于学生在理解并掌握网络基本概念、工作原理和相关协议的同时,对网络系统的工作过程有整体上的把握,取得良好的教学效果。<br>  2.2全景式教学法<br>  针对计算机网络课程的特点,我们提出了全景式教学法。基于全景式教学法,学生可以从多个维度把握计算机体系结构,从多个平面了解计算机网络,从多个空间粒度上把握计算机网络技术,从宏观的时间角度把握计算机网络的演化和技术的进步,从微观的时间角度采用时空结合方法把握网络协议的设计,从工程、技术、科学和哲学层面全面把握计算机网络学科。运用“全景式教学”法不但能够收到良好的课堂效果,同时通过老师在课堂上的示例和方法的讲解,可以作为一种知识的学习方法,学生在未来的学习过程中同样可以用来比较快地把握新的网络技术的实质。<br>  2.3案例教学法<br>  为了加强学生对实际网络工作过程的了解,开阔学生的视野,在计算机网络课程的教学过程中,我们以中国教育科研网作为网络实例,讲解TCP/IP协议栈工作过程以及各种协议是如何交互的。在计算机网络课程的教学过程中,我们还经常将同轴电缆、光纤、以太网收发器、各种网卡、交换机、路由器等网络设备搬到课堂上,并现场组网;同时在课堂上现场给学生演示如何配置路由器和交换机,帮助学生更直观、更有效地了解和掌握交换机和路由器配置的原理和技术。更进一步地,充分利用科研优势,我们结合银河“玉衡”核心路由器、下一代互联网交换机等重点科研项目,将网络设备开发的思想与方法穿插到授课内容中。案例教学法一方面增加了加强学生对实际网络工作过程的了解,开阔了学生的视野;同时让学生了解如何做网络研究和开发工作的。<br>  2.4自主研究式教学法<br>  优秀的教师在教学中首先考虑的不是我想教什么,而是学生需要学什么。教的出发点和落脚点都是学,教师的教学始终围绕着学生的学习而开展。因此要求在教学过程中,让学生成为主角,掌握自己的学习,变被动为主动。为了加强学生创造性能力的培养,我们在讲授完计算机网络核心知识点后,即指定若干自主研究专题,要求学生组成研究小组(每组3~4人),利用因特网和图书馆查阅资料,结合自己所学知识,开展某个专题的自主性学习;最后要求学生将研究成果在课堂上报告,教员进行点评并计入总成绩。这种教学法极大地调动了学生的学习积极性,既培养了独立分析问题、解决问题的能力,又培养了学生的团队合作精神和创新精神,提高了学生的综合素质。<br>  <br>  3教学手段<br>  <br>  为了提高计算机网络课程教学效果,我们在不断创新教学方法的同时,不断改进教学手段。例如,在计算机网络课程教学过程中,我们采用Packet Tracer软件来模拟跟踪网络报文经过路由器和交换机之后各个字段所发生的变化,让学生直观地了解和掌握了路由器和交换机对网络报文处理的过程。另外,在教学手段方面除了引入多媒体教学方式外,我们还投入了大量人力、物力开发了计算机网络课程辅助教学系统-NetDemo。该系统以动画为主,结合文字和图片,将问题的提出、解决问题的方法以及具体协议的工作过程通过动画生动形象地展现出来,这样既提高了学生的学习兴趣,又提高了教学效果。多年的教学实践表明,使用辅助教学系统可以达到寓教于乐、事半功倍的效果。同时,动画形式极大地丰富了教学手段、活跃了课堂气氛,激发了学生主动思考和创造的热情。<br>  在课程实验教学过程中,我们让学生用EtherPeek或Sniffer软件实时捕获各种网络报文并对捕获到的网络报文进行分析研究,使得学生更直观地理解掌握各种网络协议和报文。<br>  为了提高实验室的利用效率,增强实验的效果,我们提前将NetSim模拟软件发给学生,先让学生在模拟软件NetSim上熟悉路由器和交换机的配置方法和过程,最后才让学生到实验室在真实的路由器和交换机上进行配置实验。这样既提高了实验设备的使用效率,同时也提高了学生实验的效果。<br>  为了巩固学生对重难点内容的掌握,我们开发了一套“计算机网络试题库”并分发给所有学生使用,每学完一个章节,学生可以自主组题对所学内容进行测试,以验证知识点的掌握情况并加以巩固。<br>  为了提高学生学习的主动性,方便学生的学习,我们积极构建网络教学环境,通过网络教学平台和交流平台发布课程的教学资料并进行网上答疑、作业上交与批改等,该平台业已成为学生们学习网络课程的好工具。<br>  <br>  4结论<br>  <br>  计算机网络作为计算机和通信两个领域的交叉学科,内容极为复杂。我们针对计算机网络课程的特点,在教学内容、教学方法和教学手段等方面进行了教学改革,成果显著。<br>  <br>  参考文献<br>  [1] 蔡开裕等. 国家精品课程“计算机网络”教材建设研究与实践[J]. 计算机教育,2008,(8):77-79.<br>  [2] 蔡开裕等. “计算机网络”(第2版)[M]. 北京:机械工业出版社,2008.<br>  [3] Ken Bain著. 明廷雄,彭汉良译. 如何成为卓越的大学教师[M]. 北京大学出版社,2007.<br>  [4] 蔡开裕,朱培栋,姚丹霖. 计算机网络外文原版教材比较研究[J]. 计算机工程与科学,2007.<br>  [5] 朱培栋,蔡开裕,徐明. 基于全景的计算机网络教学初探[J]. 计算机科学,2006,(7):117-122.<br>  [6] 蔡开裕,朱培栋. “计算机网络”课程建设研究与实践[J]. 计算机工程与科学,2006.<br>  [7] 蔡开裕. 对本科“计算机网络”课程教学的几点认识[J]. 计算机工程与科学,1997.<br> </p> <p> </p> <p> </p> 摘要:本文通过分析高职院校现行的计算机专业课程教学方法,结合现实社会对高职院校计算机专业毕业生的能力要求,重点讨论了高职院校在计算机教学中应该注意的问题,并在此基础上提出了“基于项目驱动的分批分层教学”的思想,为同等类型的高职院校的计算机教学提供参考。<br>  关键词<br>本文来自:计算机毕业网 :高职;计算机教学;项目驱动;分层<br>    <br>  引言<br>  <br>  高职学校的办学理念和办学宗旨决定了其计算机教学应着眼于企业的需求、追踪生产的步伐,培养出一批具备有较强实际动手操作能力,又具备一定理论水平和创新意识的高等职业技术型人才。由于高职生源文化素质的差异性和性格的多样性,在计算机教学中很难得找到一个统一的、全面的教学方法来让所有的学生达到同一个高度。很多高职学校计算机教学专业的老师和教育专家在“高职学校计算机教学”这一问题上展开多种探讨和尝试,取得了一定的成果[1,2,3,4]。总结起来,主要是从提高学生的学习兴趣、加强学生的自学能力和提高学生的创新能力等方面入手来讨论,而对学生团队精神的培养相对缺乏。本文在结合作者计算机教学经验的基础上,把计算机教学中的自学能力、创新能力、兴趣培养、和团队精神等四个方面糅合到一起,形成一种新的高职学校计算机教学思想——基于项目驱动的分批分层教学思想,并分析其特点。<br>  <br>  1目前普遍的计算机教学方式和特点<br>  <br>  普遍来讲,目前的高职院校的计算机课程教学,大体上有以下几类教学方式:<br>  1) 以老师为主的讲授方式。该方式的教学效果不理想,主要原因在于老师没有考虑到学生的文化差异性,对所有的学生实行“一刀切”,后果是学生的理论知识没有上升到一定高度,而动手能力也仅仅停留在对该实习实践课程的掌握上。讲解练习模式、教练模式和案例学习模式是这种教学方法的具体体现。具体到工作中,也只能经过好几个月的培训才能适应岗位。最终的后果是企业对这类高职院校毕业的学生有抵制情绪——这跟高职院校培养人才的理念相悖。<br>  2) 以学生为主体地位的自学教学方式。这种教学方式突出了以学生自学为中心,而老师的作用是“点拨”、“解惑”、“引导”。对相同的教学课程,由于学生基础文化课程水平的差异而使得基础好的、求知欲望高的学生如鱼得水;相反,使得那些基础文化水平比较差的学生“知难而退”。特别是对计算机这类动手实践能力强的课程,这种现象尤其突出。追究原因,是因为老师没有考虑到学生的层次差异,过度相信学生的能力。具体到工作岗位上,好的学生会变得更好,差的学生差距会越落越大。<br>  3) 主导—主体模式的教学方式。这种方式从大的方面来说综合了上面两种教学方式,把学生的“自学”作为主体,而把老师的“教授”作为主导,是各级各类教育都力图遵循的科学施教原则之一[5,6,7]。目前在计算机教学中流行的“任务驱动”式教学正是从这种教学方式中具体衍生出来的。但这种方法也有比较明显的缺点,如老师不能很好地掌握学生的即时学习状况,没有明显的培养学生团队合作协作精神等。 <br>  鉴于此,作者针对计算机课程教学,实验性地提出“基于项目驱动的分批分层教学”方法,并对其做阐述。<br>  <br>  2基于项目驱动的分批分层教学方式<br>  <br>  2.1含义<br>  基于项目驱动的分批分层教学方式就是以一个项目实体为中心,按照不同的文化基础把学生分批分组,并让学生分组负责该项目的各个子项目,在完成项目的过程中让学生的综合素质得到提升。在该项目中,老师是整个项目的总体规划师,负责各个子项目之间协调进展,同时负责解惑答疑。学生是各子项目终结者,主要任务是完成各子项目从设计到制作的细节部分。而各个子项目之间的联系,靠组与组之间的相互学习和老师的整体协调完成。该计算机教学思想的整体框架如图1所示。<br>  <br>  2.2特点<br>  基于项目驱动的分批分层教学方法仍然强调以学生为主体,但是对老师的能力要求相对其他计算机教学方法来说要高的多。要求老师有比较强的软件工程理论,较强的编程能力,具备一定的实践项目经验,并且有比较强的组织协调能力。举个具体例子,比如老师设计了一个仓库管理项目,包含以下子项目:货物入库统计子系统(涉及到数据库设计操作)、货物查询子系统(涉及到数据库查询操作)、货物出库统计子系统(涉及到数据库优化操作)、清单自动打印子系统(涉及到程序调用EXELL或者WORD并自动生成报表等操作)等四个系统。这四个系统的主要功能和相互联系由老师先设计好,整个项目的项目设计文档、计算机程序框架和接口由老师预先编写并制定,并设置两个课时整体传达整个项目的设计方案。对学生来说,把不同能力的学生混合编组,根据整个项目各子系统需要完成的工作量的难易程度对学生分工,从而让学生与老师之间、学生与学生之间的学习“互动”,让每个学生在完成整个项目的过程中受益,学会自学、团结、创新。老师可以根据学生的整体能力来决定是否对每个子项目要完成的具体工作进一步细化。<br>  2.3实现<br>  本人在“VFP程序设计”课程中采用了基于项目驱动的分批分层教学方式,具体实施过程分成三个阶段。<br>  第一阶段:课程学习之初,向学生展示一个由VFP设计的完整软件“库房管理软件”,鼓励学生努力学习,完成本课程学习之后自己也能设计出这样的软件。基于项目的驱动,调动了学生的学习兴趣。<br>  第二阶段:这一阶段分两条线路,第一线路以项目驱动为基础,学生分批分组学习完成此项目。老师负责将此软件的框架设计好,即主界面和主菜单,并且准备好此项目的具体教程和项目任务书。通过对学生的了解,按不同能力将学生3~5人分成一组,每个学生赋予一个称呼,如设计师1等。老师对每个功能模块的进行细化,一位设计师负责一个子模快的设计;要求每组学生通过自学此项目教程按时、按要求完成各个功能模块。老师实时检查并指导。第二线路按老师设计课程的教学进度安排,仍以项目驱动为依据,讲授本课程具体的知识点。如通过对库房出入库表单的设计对数据类型及其运算,函数、表、数据库等的基本操作逐步细化讲解。<br>  第三阶段:在第二阶段结束的前两到三周的时间,提出对本课程的课程设计要求,要求学生选题,分组分工,模仿老师给出的项目任务书,写出每组
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服