新工科背景下软件工程C语言本科教学改革

2019-08-07 06:40宋英杰谢青松
计算机教育 2019年7期
关键词:程序设计代码编程

徐 猛 ,楚 旺,宋英杰,谢青松

(1.山东工商学院 计算机科学与技术学院,山东 烟台 264005;2.山东省高等学校未来智能计算协同创新中心,山东 烟台 264005)

0 引 言

2018年3月15日,教育部办公厅发布《教育部办公厅关于公布首批“新工科”研究与实践项目的通知》(教高厅函[2018]17号),提出了“新工科”研究与实践建设的新要求,相对于传统的人才培养模式,未来新兴产业需要的是实践能力强、创新能力强、具备国际竞争力的高素质复合型人才。

C程序设计课程是高校软件工程专业本科教育的必修课程,也是数据结构与算法、算法设计与分析等后续相关专业课的基础,在软件工程专业的本科教育中发挥着举足轻重的作用。近年来,针对C程序设计已有许多教改工作[1-3]及思考[4],陆续提出了一些新的教学模式与方法[5-6],但从部分软件工程专业毕业学生掌握的情况来看,与培养满足企业软件开发需求、跟进IT行业技术发展、具备专业性创新能力的高水平软件工程人才仍具有一定的差距。为了达到这个目标,可将培养目标进行分解细化,制订C程序设计课程的学生能力培养目标,将其融入本课程的教学过程中,并结合工程教育专业认证的思想不断进行反馈、改进,从而达到培养具备高技术、高素质、符合现代企业需求的应用型人才的目标。

1 目前C程序设计教学中存在的问题

近年来,我国提出“走中国特色新型工业化道路”“中国制造2025”等建设目标。这些目标都需要大量的工程师来实现,而软件工程专业正是培养软件开发领域所需工程人才的主要专业。然而,目前许多学校的软件工程专业在软件工程人才培养过程中还存在一定的问题。具体到C程序设计教学中,目前主要存在以下问题。

1.1 在教学目标方面,课程教学目标未体现软件工程专业的培养目标

课程的教学目标应当为最终的人才培养目标服务,然而目前针对C程序设计课程的教学目标,多数是针对课程本身制定,并未结合最终的人才培养目标,体现不同专业的特色及侧重点,导致学习过程中难以提高学生学习兴趣,课程结束后未能完全为后续课程奠定基础,毕业后无法满足用人单位对于人才的需求。

1.2 在教学过程方面,单纯教授语言本身,未体现软件工程思想

软件工程专业的人才培养,除需要学生掌握软件开发相关的主要技术外,更加重要的是培养学生在解决实际问题时的工程思想,而软件工程的思想需要贯穿于多门课程,由浅入深,由点及面,在整个人才培养过程中处处渗透、体现软件工程的思想,使学生养成以工程思想的习惯进行问题分析、软件开发。目前的C程序设计教学过程中,更多的注意力放在了语言本身的细节上,而软件工程的思想及要求体现过少,不符合软件工程专业的培养要求。

1.3 在教学内容方面,过于强调全面,重点不突出

C程序设计课程中知识点分散,内容多,对于不同的专业应当重点不同。目前C程序设计教学中,过于强调对C语言内容的掌握全面程度,但是对于一些在实际工程应用中使用频率高、易出问题的重点内容不够突出,导致在课程结束后学生难以直接进行工程性软件开发。

1.4 在教学效果方面,考核评价方式单一,与软件开发要求契合度不高

目前C程序设计教学的考核方式,一种是笔试,该方式易导致学生动手能力欠缺;第二种是机试,该方式提高了学生的动手能力,但对于软件工程的要求难以体现。因此,单一的评价方式,无法体现工程实践中软件开发对于人才的要求。

2 C程序设计教学改进措施

为培养出符合市场需求的软件人才,按照“工程教育专业认证”的要求,针对上述C程序设计课程教学过程中存在的问题,可以对软件工程专业的C程序设计课程教学采取如下改进措施。

2.1 制订符合软件工程专业要求的教学目标

根据软件工程专业的人才培养目标,有针对性地制订C程序设计课程的教学目标。人才培养过程中,所有课程的设置及课程目标的制定,都应该以达成人才培养目标为最终目的,因此,首先根据软件工程专业的人才培养目标,制定出软件工程专业的毕业要求,并将毕业要求分解到各课程中,其中,C程序设计对于软件工程专业毕业要求指标点的贡献度见表1。

根据表1中对于培养目标的贡献度要求及课程支撑,制订C程序设计课程教学目标:本课程重点讲解过程式程序设计语言及其程序设计方法,通过本课程的学习,学生能够:

(1)掌握程序设计语言的基本结构;

(2)掌握程序设计的基本思想、方法和技巧,养成良好的程序设计习惯,培养学生基本的计算思维能力(设计简单算法);

(3)掌握C语言编程、编译、调试、测试工具和方法。

由于本课程是学生接触的第一门计算基础课程,该课程的学习情况直接影响后续课程的学习,因此本课程被看做是计算基础课程中最重要的课程之一。本课程的讲解要结合软件工程的相关概念(如设计质量、代码规范、代码测试、代码评审等),使工程化的思想融入学生的学习过程中。

2.2 在教学过程中融入软件工程思想

软件工程专业C程序课程的教学目标要求学生能够掌握相关工程知识,并利用已有知识分析问题,设计相应软件解决方案,使用开发工具进行程序开发与测试,因此软件工程相关思想及知识应当贯穿整个C程序设计课程的始终,可以采取以下措施改进之前的教学过程。

表1 C程序设计对毕业要求的贡献度

(1)整个课程中以一个完整项目的不断迭代作为教学示例,使学生明确所学内容如何在实际软件项目中进行运用。

(2)2~3名学生一组,初步体会团队开发,使学生从开始逐渐适应团队开发,在团队开发中体会软件工程思想的重要性。

(3)课后作业增加根据已有项目文档进行模块开发的要求,使学生从代码实现环节开始接触软件开发过程,明确软件并非是直接编码而来。

在课程授课前将学生进行分组,每组2~3名学生。授课过程中,首先,向学生演示一个已完成项目,使学生对项目的整体目标有感性认识。其次,在课程进行过程中,每次讲解新知识前,都由该项目的某一功能提出问题,使学生能够清晰的认识到所面对的问题,进而能够将所学知识运用到软件实际开发过程中。然后,在知识点讲解结束后,为每一小组的不同学生分配项目不同模块的文档,要求按照文档进行程序的实现,这样既练习了所学知识,同时也使学生初步认识了软件开发的过程。最后,要求学生在完成自己的模块后,将组内完成的代码和项目中已提供的其他目标代码进行链接和简单的系统测试,从而达到初步锻炼学生团队合作开发的能力,同时也训练了学生基本的文档阅读能力。

2.3 在教学内容中突出工程实践中的重点

根据C程序设计课程的教学目标,制订主要的课程内容见表2。

课程内容中,在掌握C语言本身语法的基本要求下,重点讲解实际软件开发中所需工程知识,使学生从接触编程初期,就养成注重注释、变量命名、代码风格、代码可读性、可移植性等工程实践问题的良好编程习惯。例如在软件工程实践方面,对于指针的应用,一定要明确在软件开发实践中最容易犯错且难以进行错误定位的两个问题——野指针和内存泄漏,并且在教学过程中不断重复对于这两个问题的分析,将出现的原因及现象和如何在程序开发过程中避免出现等逐步进行讲解,同时将在遇到此类问题时如何进行应对,作为实验环节让学生进行练习,从而彻底掌握此类问题相关的必要工程实践知识。对于软件工程实践中常用的字符串也要作为C语言程序设计授课的重点讲解内容,尤其要重点关注字符串中最易忽略的最后一个“空”字符的问题。让学生将实际软件项目中出现的各类对于字符串的问题进行逐一练习,进行多次讲解与问题反馈,从而让学生彻底掌握字符串这一软件工程实践中最为常用且重要的知识。

表2 课程内容

2.4 多样化考核实际软件开发能力

由于单一的考查方式难以体现软件工程所要求的多种开发能力,因此采用多样化考核方式改革,具体考核方式如下。

(1)笔试。笔试主要考查学生对于理论知识的掌握程度,包括语言相关语法、流程图及伪码编写和阅读能力等。其中基本语法占比60%,流程图及伪码编写和阅读占比40%。

(2)机试。机试主要考查学生实际编程能力,包括基本算法的实现、简单问题的编程等。其中,50%为编程解决简单问题,50%为依照给定算法或文档实现代码。

(3)项目。项目主要考查学生对软件工程基本思想的掌握,包括代码风格、小规模团队合作等。具体评分标准见表3。

表3 C程序设计项目评分标准

最终课程得分笔试成绩占30%,机试成绩占30%,项目成绩占30%,平时学习及作业情况占10%。

3 结 语

结合多年的课堂教学经验和学生的实际情况,以培养满足市场需求的应用型软件工程人才为目标,提出C程序设计课程教学改革方案。教学实践证明,这种教改方案不仅提高了学生的C语言编程能力,同时还初步培养了学生的软件工程思想及良好的编程习惯,比如,学生在编程过程中使用注释的比例从不足10%提高到了70%左右,对于变量命名和代码格式等规范性也有大幅提高。同时初步锻炼了学生的团队合作能力,在课程结束后能够合作进行简单项目的开发,为培养符合现代企业需求的应用型软件工程人才打下坚实基础。接下来,将根据实际教学情况,对C程序设计教改措施进行进一步的完善。

猜你喜欢
程序设计代码编程
医学专业“Python程序设计”课程教学改革总结与思考
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
神秘的代码
高职高专院校C语言程序设计教学改革探索
一周机构净增(减)仓股前20名