首页 > 文章中心 > 正文

电气专业计算机编程类课程开设探究

电气专业计算机编程类课程开设探究

在工科本科生教育的培养大纲中,对于非计算机专业的本科学生,掌握一定的计算机编程技能是重要的一环。不论是对后续的本科课程学习、本科毕业设计,还是对以后的硕士生、博士生阶段的深造都有很大益处。对于大部分工科专业,后续的学习、研究,必然要面对各种设计开发,最终落实到仿真、编程及系统实现上。掌握扎实的编程基础,不仅在学习上可以事半功倍,对毕业后走上工作岗位,也有很大帮助。对于电气专业,计算机编程课程也很重要。近十多年来,随着智能电网的蓬勃发展,信息技术在电力行业得以广泛应用,而编程技巧是电力信息化教育的重要一环。因此,对于电气专业的本科教育,各相关高校都结合本专业和本学校的实际情况,设置了一些编程相关课程。本文作者在十多年的电气专业本科教学实践中,先后主讲了电气专业的“面向对象程序设计”“微机原理及接口”“单片机开发”等课程,结合多年的教学实践及教学团队多年探索思考,从国内高校电气专业的人才培养计划出发,就电气专业本科计算机编程相关课程安排展开深入探讨。本文对电气专业的C语言教学提出了一些建议,对新工科人才培养提出了支架式C语言教学法。对于电气专业的本科教学而言,其编程语言教学既有非计算专业工科教学的共性,也需要结合专业特色作相应调整。

一、课程安排探讨

1各高校相关课程介绍

对于电气专业本科的计算机编程教学,各高校的课程安排不尽相同。表1是国内电气学科知名院校及武汉大学电气本科教学中计算机编程相关课程(资料来源于互联网)。由表1可以看出,国内电气学科TOP3高校(以教育部2017学科评估结果为准)和武汉大学在电气本科教学计算机编程相关课程上大部分课程内容相同,分别是计算机程序设计基础(C语言程序设计)、微机原理与接口、单片机(嵌入式)开发。其中华中科技大学和清华大学安排了面向对象程序设计。这4所高校中,以华中科技大学电气本科专业的计算机编程课程最为深入全面。

2课程探讨

(1)计算机程序设计基础

“计算机程序设计基础”对于工科非计算机专业的学生,是大学一年级必选课程,属于通识教育类。本课程的教学目的是培养学生利用计算机处理问题的思维方式和程序设计的基本方法,是其他专业课的基础。通常在教学中,以C语言作为编程语言,讲授C语言的基本语法的同时,适当介绍数据结构中的初级内容,如链表、排序、遍历等。此外,还培养学生熟悉编译调试等基本技能。鉴于本课程是面向新入学的大一新生,其计算机编程技能基本为空白,因此,笔者认为,对于电气专业的本科生,本门课程采用C语言教学是恰当的,C语言的经典性这里不再重复,本课程笔者不建议采用面向对象程序设计(C++)来讲述,其原因见下节分析。

(2)面向对象程序设计

“面向对象程序设计”课程清华大学电气学科作为选修课,华中科技大学电气学科作为大一的必修课,成为“计算机程序设计基础”的替代课。面向对象程序设计思想在现代程序设计中使用很广泛,使用面向对象程序设计开发的应用,代码简练,可维护性好,开发效率高。面向对象程序设计(C++)和传统的面向过程的结构化程序设计(C)区别很大。尽管有人认为C++是C的扩展,其实C++从编程方式到代码风格都与C语言大相径庭。在面向对象程序设计(C++编程)中,不仅需要考虑算法设计,还需要考虑数据封装、类型,更需要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用、C++的标准库使用(如STL编程)等等问题。而这些问题,对于非计算机专业的学生,学习难度太大,只有经过大量的编程实践而丰富经验的程序员对此才会有深刻的理解和正确的运用。尽管C++的创始人Stroustrup提倡不要先学C,而是直接学C++。然而,对于非计算机专业的本科生,本课程学时有限,大多数学生对于计算机编程是零基础,并且C++内容太多,难度大,因此,如上节所示,笔者建议,对于电气专业的大一新生,在计算机程序设计基础这门课程中,以C语言为编程语言教学为佳。面向对象设计的思想不仅是一种用于编程中的软件设计方法,而且是一种工程化规范。面向对象设计模式解决的是类的构建以及对象之间相互通信的组织关系,包括它们的角色、职责、协作方式等方面。比如,目前广泛使用的智能变电站就是以IEC61850标准体系为基础的,而IEC61850标准的核心思想和基石就是对电气物理设备进行抽象和面向对象建模,定义对象之间通信接口规范。通过上述探讨,本文认为,可以考虑将“面向对象程序设计(C++)”课程列为本科电气专业的后续选修课程。

(3)微机原理及接口、单片机开发、嵌入式系统

“微机原理及接口”是一门重要的专业基础课程,是学生学习掌握计算机硬件的入门课。课程的目的是帮助学生掌握微型计算机的硬件组成及使用;学会运用汇编语言进行程序设计;具备初步的开发软、硬件的能力,为学习其他专业知识及从事工程技术工作和科学研究工作打下初步基础。此课程以Intel8086系列(8086-80586)CPU架构为核心,结合汇编语言编程,讲述了中断、I/O、存储、并行/串行通信、AD/DA的基本原理。从表1可以看出,清华大学、西安交通大学、武汉大学三校的电气专业都将此课程作为必修课程。华中科技大学也将此课程作为“二选一”选修课程。“单片机开发”Top3校都作为电气学科选修课程。该课程主要讲述MCS-51系列单片机及其指令系统、单片机的I/O扩展及应用、单片机的定时与中断系统及单片机的程序设计等内容,通过学习使学生基本掌握单片机的硬件构成、软件组成及一般的程序设计技巧。编程通常以汇编语言为例讲述,当然,也可采用C语言讲述。事实上,“单片机开发”课程的大部分基本概念和“微机原理及接口”课程重叠,二者的汇编程序开发也有异曲同工之处,因此,建议将该课程和单片机开发作为“二选一”选修课程。“嵌入式系统开发”在西安交通大学和武汉大学的电气学科均作为选修课开设。该课程主要讲述ARM系列平台架构和Linux系统下的软硬件系统开发,通常以C语言讲述。在目前的实际硬件开发应用中,使用ARM系列平台相对于单片机更为常见,适用性也更加广泛。因此,对于这三门课,建议“微机原理及应用”和“单片机开发”,作为二选一课程,“嵌入式系统开发”作为选修课程。

(4)数据结构

“数据结构”作为计算机学科的核心主干课程,主要讨论各种数据组织中数的逻辑结构、存储结构以及有关操作的算法。其中一部分基础知识如串、链表、排序、遍历等在“计算机程序设计基础”课程中已有讲述。对于电气专业的本科生而言,掌握“计算机程序设计基础”中讲述的相关数据结构知识即满足本专业的程序开发设计,鉴于电气学科计算机课程的课程数目及课时有限,“数据结构”课程可以不考虑作为电气学科的选修课。

(5)Matlab编程及仿真

该课程主要讲述Matlab建模仿真基础,主要有m语言编程、Simulink建模。Matlab具有强大的科学计算和可视化功能,编程效率高、易学易懂。其开放式可扩展环境,特别是所附带的三十多种面向不同领域的工具箱支持,使得它在许多科学领域成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。对于电气学科的学生,无论是本科生还是硕博生,Matlab平台是做仿真的入门工具和第一选择。在本科阶段很多主干课程,如自动控制、信号与系统、数字信号处理、电机学、电力系统分析等,以及后续的本科毕业设计和硕博阶段的学习,都要大量使用Matlab建模仿真。因此,笔者认为,对于电气学科的本科生,“Matlab编程及仿真”这门课程的开设非常必要,可以作为选修课、甚至作为必修课。

二、计算机编程课程开设及教学重点

结合前面的分析,考虑到电气学科的专业课程较多、学时有限,笔者推荐如表2所列的计算机编程类课程组合。在大一阶段,建议“计算机程序设计基础”以C语言为编程语言教学,这门课是电气专业本科生接触到的第一门编程课程,是后续专业课的基础。在这门课的授课过程中,笔者认为不必将重点过多集中在琐碎的语法上,更重要的是让学生培养起良好的编程习惯,掌握编程的基本技能,比如变量的命名、全局变量、局部变量的安排,多模块的组织、程序的调试技巧等。在大二阶段,可以安排“微机原理与接口”“单片机原理及应用”(2选1)以及“Matlab和系统仿真”(选修)三门课程。在“微机原理与接口”“单片机开发”这两门课的教学中,不必过多强调汇编编程,重点要放在对基本概念的理解,如中断、I/O等。在“Matlab和系统仿真”授课中,要讲清Matlab编程和C语言编程的区别,让学生尽快从熟悉的C语言过渡到Matlab。对于电气专业的学生,可在仿真上结合电气专业的特点,针对性地讲述电气相关理论仿真建模方法。大三(下)或大四(上)可以开设“嵌入式系统开发”作为选修课。让学生掌握ARM平台的架构,熟悉Linux平台开发环境,在课堂或者课后要求学生设计具体的硬件开发案例。

三、结语

本文是笔者基于多年对相关课程的教学经验,结合学科发展实际,对电气专业本科生计算机编程类基础课程开设所做的思索,文中所提的建议可供参考。随着智能电网的不断发展,及新技术的不断涌现和应用,电气学科的相关课程也应随之调整,比如深度学习的出现以及在电力系统中的广泛应用,在今后的教学实践和研究中,相关的课程及授课内容如何随之调整,需要我们进一步研究。

作者:刘志雄 彭赟 王波 单位:武汉大学电气与自动化学院