计算机程序设计实践教改与革新思索
时间:2022-06-04 04:21:00
导语:计算机程序设计实践教改与革新思索一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。
由于软件编程技术及方法的日新月异和社会对高校计算机相关专业学生的软件能力要求的不断提高,高校的程序设计类课程的门类越来越多,仅面向对象程序设计类课程就有VisualC++,VisualBasic,net编程,Java程序设计等。但长期的教学经验说明,当学生学习了一大堆编程语言后,解决实际问题的能力并没有明显提高,动手能力和创新能力不强,不能较快适应社会对软件开发人才的需求。鉴于此,从程序设计类课程实践教学计划的制定、实践教学质量保障、拓展实验实践教学时间和空间、实践教学项目设计与监督等方面提出一系列改革和创新的思路和方法。
1制定合理的编程类实践课程教学计划
实践教学大纲是实践课程开设质量的重要保证,同时,实践教学计划是整个教学计划的重要组成部分。在制定实践教学计划时,要充分考虑自己学校的特色、学生的实际情况和社会实际需求,以《中国计算机科学与技术学科教程2002(CCC2002)》和《高等学校计算机科学与技术专业实践教学体系与规范》等为指导,以对所培养学生的目标定位为归宿,制定和不断修订实践教学计划。制定系列化的编程类课程体系和编程类课程群[1-2],以Java程序设计实践课程的开设为例,可以分阶段开设,按完整的Java技术路线组织,如在低年级开设“JavaSE程序设计和应用”课程及其实践课程,在较高年级开设“JavaEE程序设计和应用”和“JavaME程序设计和应用”课程及其实践课程。这样,可以有效避免学生在学习了一门编程语言基础后,出现继续深入的困难和技术“断线”现象,如只学完了JavaSE部分的知识,不知道进一步的Java学习方向等[3]。目前,大多数院校开设的程序设计类课程是以专业选修课程的形式进行的,因此,指导学生有针对性地进行选课非常重要,如:学生选修了“Java程序设计”的先修课,在高年级时可以建议其去选修“JavaWeb编程”课程;若学生选修了“VB程序设计”的先修课,在高年级时可以建议其去选修“ASP(ASP.net)Web编程”课程等。在选课系统中增设关于每门课程的内容简介和授课教师的介绍,这样做有以下好处:一是在课程名称字面上就可以看出授课的重点,可以回避学生从一个笼统的“XX程序设计”名称上产生误会,认为这门课可以将该编程语言的所有技术都包含进去;二是通过课程内容简介,让学生更加透明地了解每门不同程序设计课程的授课重点,从而根据自己的知识需求和兴趣有目的地选择课程。所有代程序设计课程的教师共同参与,集思广益地制定实践教学计划。这样做,一方面可以保证实践教学计划的完整和系统,避免低层次的重复和课程冲突;另一方面,可以让教师从更高高度把握实践教学规划,而不仅是只关注自己所教授的那门编程课程。将实践教学系统地规划到理论教学、实验课、课程设计、学年和毕业设计以及创新实践等各个不同阶段和各部分中,逐步落实,如图1所示。
2以实际问题为出发点,以社会需求为归宿
为了切实培养学生发现问题、解决问题、实际动手、交流和表达、持续学习、适应和协调、组织能力等综合能力[4],需要从以下几个方面入手。
2.1实践项目的设计应以实际应用为背景
任何的应用和创新都是源于现实的需求,再小的实践项目,都需要有调研与需求分析过程。引导学生在编程实践时学会思考“某一种编程方法会运用在哪些实际项目中”、“哪些是通用的软件模块”、“接口方法如何”、“如何将不同成员开发的模块集成在一起,怎样测试”、“在单台计算机上开发并测试的项目如何到网络环境下”、“能用吗”、“如何改进”等问题,是锻炼和提高学生独立思考能力的重要途径。教师自身要研究社会对计算机软件人才的具体要求、研究如何培养学生,以发展的眼光注重培养学生独立思考、分析和解决实际应用问题的能力。
2.2明确毕业走向,提高学生实践能力
经验表明,计算机软件相关专业学生在毕业后,大体有以下几种走向:考研深造、直接进公司从事计算机软件开发、通过考公务员等方式进入事业型单位从事技术性或文职型工作岗位等。因此,在高年级阶段,应引导学生明确就业意向,进而有针对性地强化其专业技能。
2.2.1加强基本编程思维和方法的训练编程思维和方法的训练对程序设计能力的培养具有决定性作用。对学生要进行面向过程和面向对象编程思想和其对应的基本编程方法的引导,达到让学生由此及彼、触类旁通地学习其他编程语言和技术。若没有培养起学生基本编程思想和能力,即便学生学习了再多门类的编程语言,仍不能提高能力,有时反而还会导致学生在各种编程语言和技术中徘徊不定,遇到问题不能快速进行编程和技术选型。
2.2.2培养科研型、技术工程型人才在学生具备了基本编程思维和技能的基础上,可以考虑引导学生在高年级阶段根据自己的毕业走向有针对性地强化编程训练,以快速适应即将面临的新环境和新挑战。对于准备考研深造的学生,可以将他们吸收到教师科研队伍中。这样,可以潜移默化地让学生尽早熟悉科研工作,掌握正确的科研方法,提高科研意识,锻炼分析问题、解决问题的能力,培养严谨求实的科研作风[5]。举例来说,教师可以在自己运用Matlab进行科学计算、数字图像处理、Simulink仿真、遗传算法与神经网络等智能算法研究时,通过带动学生参与其中,让学生不仅奠定一定科研基础,还会熟悉Matlab及其相关编程方法、运用Multisim进行电路系统的设计和仿真[6]等。对于将自己毕业走向确定为软件项目开发等的学生,可以将其吸纳到教师软件项目开发小组中来,或吸纳到由指导教师牵头并组建的学生软件项目开发小组中,让学生熟悉实际软件项目的开发流程和方法。在实际项目开发过程中,更进一步明确自己的技术选型,在社会需求量较大的众多软件技术如VisualC++、.Net技术、Java技术等中锁定一种,进而锻炼和培养学生进行实际项目开发的能力。
2.3鼓励学生通过专业资格认证
对于所有学生,首先都应鼓励他们通过专业资格认证,如参加全国计算机等级考试四级中的四级网络工程师、四级数据库工程师、四级软件测试工程师方向考试,软件工程师、系统架构师资格认证考试,SUN公司的Java技术认证,Cisco公司的网络技术认证等。通过这些专业资格认证的考试的准备和资格获得,可以帮助学生明确自己的专业方向,而且对该方向产生更大兴趣和信心。其次,要鼓励学生积极参与各级各类的专业程序设计竞赛,如ACM竞赛、ITAT竞赛以及其他竞赛。通过参与竞赛,拔高学生的编程高度、拓展编程视野、培养创新精神和能力。
3拓展实践教学的时间和空间
通常,实践教学被纳入正常的教学学时中,学时有限、实验室固定,这对于综合性、创新性实验的开展很不利。
3.1充分利用优质资源,拓展实验平台
以利用北京大学的“北京大学程序在线评测系统(POJ)”为例,该系统具有可以运用各类编程语言进行在线程序编写和即时评测的强大功能,其上的题目具有实用性、趣味性和很高的创新性,可以充分地帮助学生提高通过编程解决反映工作和生活实际问题的能力[7],从而充分调动学生的主动性、积极性和创造性,激发学生的创新思维和创新意识,逐渐掌握独立思考问题、解决问题的方法,提高其创新实践的能力。引进或自行研制开发基于Web工作流的程序设计综合管理系统[8-9]。通过该系统,由教师在课前提交实践项目的目的、要求、内容等,让学生在实践课前通过该平台预习实践内容、查阅资料,进行相关的设计和初步实现,课后书写实践报告并通过该平台提交。教师评阅完毕后,学生可以看到批阅结果,根据批阅意见,继续完善实践项目。同时,教师可以将自己积累多年的程序设计项目、程序设计方法、历届优秀学生的程序设计作品和实用开发工具等在该平台上,以供学生共享。开通师生用于交流程序设计经验的论坛和即时答疑空间。
3.2软件创新实验室建设
成立计算机软件创新实验室的最终目的,是培养学生独立承揽实际软件工程项目的能力,和进行计算机软件相关科研能力的培养,使学生具有快速适应社会需求或深造发展的需求能力。
3.2.1软件创新实践开展流程和制度建设
实际软件项目的开发应具有严格的流程,在指导教师的带领下,由学生组成创新实验小组,创新实验项目由指导教师规划和安排,进入创新实验室时应向计算机科学学院报送创新实验项目安排表或软件项目投标书等。完成创新实验和实际软件项目开发时,在条件允许的情况下应将相关资料和成果归档保存。软件创新实践项目和软件项目开发一定要以“系统观点”进行,即问题或大或小,都要通盘考虑,按照系统科学方法[10]和软件工程方法进行,如图2所示。组织项目开发人员,首先,进行角色划分,如项目负责人、系统分析和设计人员、编码和美工设计人员等,然后,当系统设计完成后,就要明确分配任务,形成任务分解表并落实到个人。由于学生进行实际项目开发的经验不足,可由指导教师担任项目的总负责人,定期督促和检查项目进度和估算项目成本等[11]。在创新实验室日常管理环节上,可以建立在指导教师的监督下,让全体参与创新实践的学生形成排班和轮流值日的管理制度[12]。
3.2.2软件创新实验实施方案
由指导教师牵头,引导学生创新小组进行课题研究、承揽软件开发项目和创新实践探索研究[13]。课题研究一般是由教师吸收学生参与到研究的课题中,共同完成大型的实践项目。指导教师带领学生创新团队承揽学校及校外的应用开发项目,进行项目开发。由主持实践教学改革项目的教师带领其他教师和学生进入创新实验室,组织实施和完成“以应用为核心”、“以本科学生为主体”的创新性实践教学改革项目。
4实践项目的设计与监督
4.1实践项目的原创性和创新性
实践项目设计的原创性和创新性在很大程度上决定着实践教学的质量。在长期程序设计教学过程中,发现学生在平时实践、学年论文(设计)、毕业论文(设计)以及实际项目开发过程中原创性差和缺乏创新性等问题,究其原因有:
(1)为了与程序设计理论教学配套,平时的程序设计实践项目中“验证性”项目和没有实际应用背景的“示例性”项目比重较大。
(2)一些通用性的程序设计实践项目,诸如“XX管理系统的设计和实现”、“XX网站的开发与实现”等的相关开放资源非常多,其整个软件的设计开发背景和需求、分析和设计过程,以及实现的全部源码都是有现成可参考的。若实践项目如此命题,则导致部分学生将查阅参考资料变成了“复制—粘贴”,这样,不仅没有达到良好的实践效果,反而还让一些学生养成了不劳而获、抄袭剽窃的坏习气。
(3)虚拟和笼统的实践项目较多,比如对系统的设计和开发背景是自定的而不是源于实际用户的开发需求等。学生在完成过程中,没有经历分析和解决实际应用问题的磨砺过程。因此,在引导学生进行项目实践的过程中,在对其进行各阶段指导和检查时,必须严格把关,对实践项目题目的设计本身应具有很强的针对性、原创性和创新性。不断引导学生从身边做起,积极主动地发现需求,比如:在历届的全国计算机等级考试中,发现有个别考生携带U盘等电子介质作弊的问题,教师应引导学生去探究和开发一种能够监控和防止利用电子介质作弊的软件;学校的各机关部门和学院都有开发和维护各自部门网站、开发学生管理系统、财务管理系统等需求,这些需求往往很具体,具有特殊要求和差异性,教师可以引导学生项目开发团队承揽和开发这些项目;教师面临缺乏专有的与学生进行在线沟通和交流的系统和在线收发、批阅作业的系统,可以将这样的需求作为学生毕业设计的题目等。
4.2加强对学生实践效果的检验和监督
要注重从贯穿整个本科实践教学的各个环节,诸如各项编程类基础实践项目、创新性和研究性实践项目、各级各类的专业程序设计竞赛、本科学年设计、本科毕业设计等具体环节入手,全程监督和检查学生的实践能力。改革对学生程序设计课程考核的机制,加大实践考核在成绩、能力评价中的比重;教师通过对学生所做的实践项目进行提问、讨论、答辩等方式,了解每个学生在实践中存在的问题和实践效果,发现不足,进而有的放矢地改善程序设计实践效果。
5结束语
计算机程序设计类课程实践教学的改革和创新是一项系统工程,涉及到实践教学计划的合理制定、实践教学的目标定位,以及改革和实施创新实践教学方法等方面,逐步落实、层层推进这些措施,才可能为应用型、创新性、复合型计算机软件人才培养做出应有的贡献。
- 上一篇:医疗机构付费工作意见
- 下一篇:烟草农业建设安排意见