随着我国社会经济的不断发展,计算机信息技术也逐渐普及。下面是我为大家整理的计算机专科毕业论文,供大家参考。
【摘要】本文尝试从计算机软件技术课程教学出发,将CDIO的教学理念融入到平时授课过程,培养学生对课程知识的掌握,更重要的是培养学生团结合作能力。通过一段时间的实践表明,基于CDIO的课程教学能够提供学生自主性和创新性,提高学生学习兴趣和解决问题的能力。
【关键词】教学改革;CDIO;实践能力
1引言
计算机软件技术是一门软件设计的基础知识、方法与实用技术相结合的课程,为计算机软件应用开发、技术管理工作奠定理论基础,目前课程教学多是以传统理论课堂教学结合实验教学的模式进行,学生反映上课即使听懂遇到实际问题时也不知如何下手解决,尤其编程能力弱的学起来更加吃力,通常存在以下几方面问题。(1)课程涉及知识点多,理论性强,要求学生要有较强的逻辑思维和分析能力,尤其有具有较好的编程功底,这使得学这课程之前让部分学生产生畏难情绪。(2)实验课程中学生独立完成的是一些已有结论的验证性实验,以致学生软件编程能力得不到培养和提升。(3)课程考核以闭卷理论知识点考核作为重点,学生为了应付考试,可能死记硬背一些概念甚至一些编程题目,学生素质和实践能力得不到有效的培养和训练。针对以上问题,按照课程特点以及教学规律相应进行一些教学改革探索,以CDIO教学模式(构思Conceive、设计Design、实现Implement、运作Operate)进行每个教学环节落实,让学生以自主主动地、有机联系地方式学习。CDIO模式与传统的以传授知识为主的教学模式相比,更强调知识的运用和个人能力的培养。它要求我们在教学中,既要注重基础知识的传授,又要注重创新、设计和知识的综合应用;既要强调个人专业能力的培养,又要提倡团队合作精神的培养,这种教学模式能开拓学生的创新精神,全面提升学生的综合素质,让学生掌握扎实的基础知识,培养其责任感和团队合作精神。
2教学改革措施
目前,计算机软件技术教学改革主要从两个方面进行,即教学内容的改革和课程实验部分的改革。
教学方法设计[1]
基于CDIO教学理念,在教学过程中,以项目为牵引,以任务为依托,把课堂教学环境模拟成CDIO教育环境,即以项目构思、设计、实现和运行的生命周期为载体来组织教学。具体实施过程如下:
(1)首先选择具有代表性的项目任务,整个项目具备详细的系统开发过程,有较完整的系统结构、及基本需要的一些功能模块,在功能模块中有数据能演示,比如学生成绩管理系统。
(2)在教学过程中,根据教学进度和教学内容,向学生详细地介绍项目任务的构思、设计、实现和运行各个环节,从项目任务的需求分析,到各功能模块的设计与实现,到后期的运行和维护等。尤其一些关键功能模块的实现,为了便于、强化学生理解,可以设计一些类似的小任务。
(3)通过项目任务的贯穿,可以对已讲授的知识点进行总结,对后续课程的知识点以设问方式引出,引导学生积极主动思考,寻求解决方案。通过这种使前后知识点有机联系起来,使课程知识结构更系统。
实验教学设计
以往实验课都是一些验证性实验,学生通过查找互联网翻阅书本很快能找到解决路径。加上现在实验课时有限,通常布置一些小的项目,尽量涵盖课堂教学所涉及知识点,比如布置编程实现计算器。4-5人组成一个小组,以组长牵头组织大家分析,分配任务,利用课余时间共同协作完成。在这过程中包含一个CDIO项目周期[1](构思———需求分析、设计———实施方案、实现———编写代码、运作———作品测试、演示等)。实验课各小组汇报并演示所开发设计的项目。根据演示作品功能完整性、美观性等方面综合评价作为实验考评的依据,在这过程中又培养了学生独立思考,分析问题解决问题的能力,学生间合作沟通能力也得到锻炼。
积极参与各类竞赛
多年来,我们都鼓励学生参加蓝桥杯大学生程序设计大赛等类似比赛,通过参与比赛,学生编程能力得到快速提高,对课程基本概念和基础知识的理解也会更上一个台阶,牢固掌握所学知识,同时通过比赛拓展了学生的视野,学习目的性更强更明确,学习积极性相应地也提高了。这种做法也是符合CDIO理念,提高学生系统分析能力编程能力的。
教改存在问题
教改中存在最大问题可能是项目任务资源不足,类似教材不多,可供参考的有限,每个项目任务要具有代表性同时又包含各知识点,需要花大量的时间编制。经过一段时间积累应该素材不断会增加,并在原有基础上不断完善。
3结束语
CDIO理念在强调学生理论基础知识的同时,注重培养学生理论应用能力、团队合作能力。针对当前计算机软件技术课程教学过程中存在的问题,结合CDIO教学理念对学生的要求,探讨以项目为中心、以任务驱动教学,激发学生学习兴趣,培养学生的CDIO能力,取得了较好的教学效果。
参考文献:
[1]周立章.基于CDIO工程教学模式的C++程序设计教学改革探索[J].大众科技,2011(10):208-210.
[2]邱胜海,高成冲,王云霞,等.基于CDIO模式的数据库课程实验项目设计[J].中国现代教育装备,2012,157(21):43-45.
摘要:提高教学质量是高等院校各项工作的重中之重,而教学管理是提高教学质量的重要途径,加强教学管理对规范高校各项管理工作和提高教学水平起着十分重要的作用。随着高等院校计算机专业招生规模的日益扩大,学校教育资源有限以及学生数量不断增加等因素,使得计算机专业教学的开展存在很多问题。文章立足于计算机专业的发展现状,探讨了当前计算机专业在教学管理当中普遍存在的一些关键问题,讨论了如何建立科学、合理的教学管理模式,从管理者、教师和学生三个角色对计算机专业建立完备的教学管理模式进行分析和探讨。
关键词:计算机专业;教学管理;教学质量
教学质量是体现高等院校培养高质量人才、深化学校教学水平的一个重要指标,提高学校的教育质量,需要制定一套完善的教学管理模式。构建科学、合理、可操作性强的教学管理体系,有助于及时发现问题与不足,为领导者制定管理制度和工作规划提供依据。在当前计算机人才需求日益增多的现实背景下,开展计算机专业教学管理模式和制度建设的研究,能够推动计算机教育教学质量的长期发展,提高人才培养质量,这对推进计算机专业人才创新能力和动手能力具有重要的现实意义。
一、计算机教学管理模式的内涵
建立完善的教学管理模式,有助于及时发现教育教学过程中存在的问题,并能有效地解决问题,从而不断提高教育教学质量,最终实现高技能人才培养目标。学校应该有一个专门的队伍来进行教学的督导,督导者需要从学校的现实条件和发展计划出发来对教学部门的教学管理工作进行总的评价和指导,同时对不同的专业和系别进行具体的规划。针对计算机专业,要保证学生学习到计算机专业基础知识,同时要突出学生专业方向的培养;要能够满足社会或行业、企业用人需求,即高等院校的人才培养目标、课程标准或教学大纲、课程安排、教学内容、教学过程等要满足用人单位的需求以及计算机发展的方向;还应该满足国家创新性人才的培养,鼓励学生以及优秀青年教师勇于实践大胆创新,提高学生的团结合作意识以及沟通问题的能力。总之,督导者不仅要起到严格把关的作用,同时还要做到长期提供优质服务,广泛收集各种建议和意见,尽可能给学生和老师创造宽松有利的学习条件。计算机教学质量管理中教师具有极其重要的地位,要不断帮助和促进教师改进教学工作,不断提高其自身的教学水平,不断加强教师师资队伍建设。老师要注意计算机最新发展动态,紧跟其发展潮流,不能脱离社会落后于时代;青年教师要不断积累教学经验,完善教学方法,提高学生的学习兴趣和自己的教学水平。由于计算机专业的特点,老师需要不断更新、补充课程的教学内容,甚至有很多像慕课(MOOC)这样的网络开放新兴课程不断涌现,老师要终身学习,教学管理上也要给老师更多学习的机会,多组织青年教师到社会上的一线企业进行培训和实训。计算机专业是一个需要不断保持学习的专业,它更新换代特别快,从事计算机方面工作的学生要终身学习。所以老师不能只是授之鱼,更要授之以渔,使得学生在走向社会之后能够跟上计算机发展的步伐,始终保持敏锐的洞察力和很强的学习能力。因此,计算机教学质量管理要更注重学生学习能力的培养,而不是简单地完成当前的学习任务。计算机发展之迅速,已经不是原来单打独斗就可以完成一个任务的时代,要求学生有很强的合作能力、交流能力、适应能力、实践能力和组织能力等。教学中必须坚持对学生实施素质教育,不仅要重视学生的学习态度、出勤率、课堂纪律、作业完成情况,更要鼓励学生参加科技竞赛、课外拓展培训以及加强人文素质的培养。关注用人单位对专业人才培养质量的反馈,及时调整学生培养机制。
二、计算机专业教学管理中存在的主要问题
教学管理系统负责保证正常的教学秩序,是提高教学质量的根本。每个学校其实都有一套教学管理制度,然而对于不同的院系专业来说,有其自身的特点,本文主要针对计算机专业中存在的问题进行分析。
(一)教学管理模式尚不完备
随着计算机专业的不断改革以及国家对计算机教学提出的新要求,原有的管理制度难以跟上实际的发展需求,无论是人才培养目标、专业课程设置、教学管理手段以及学生的质量等,都有很大的变化,以前的教学管理模式往往重理论轻实践,大部分是理论学习为主导的模式,而且不同专业人才培养的目标和要求基本一致,没有根据不同的专业特色建立不同管理体系,这就需要有一套更科学、更灵活的教学质量管理体系,要符合不同专业特色,不断适应时代发展的要求,不断顺应社会科学发展的方向。
(二)实践教学资源短缺
计算机专业教学在条件允许的情况下,应该把大部分课程安排到机房进行教学,学习实践同步教学的模式更符合学生的学习习惯,也有利于老师的教学。但是鉴于学校学习资源的限制,实践课课时明显不足,使得教学的开展不是很顺利。计算机专业作为应用性要求较高的专业系别之一,要比其他专业增加实践教学的学时,特别是实践教学在计算机专业的学习当中占有极其重要的地位,直接关系到学生未来就业,其对社会输送应用型人才有着积极的影响。
(三)缺少以人为本的人才培养模式
学校教学质量管理与监督体系,缺少以人为本的管理理念。对于教学质量管理,还是以行政权力为重要手段,在体系中缺少专家学者的监控,忽视他们的建议,对教学质量的评价,其目的就是奖励和惩罚,很难理性地诊断和解决问题,不能以教育改革为目的对教师进行客观的评价,主管者与教师之间缺少互动。在评价学生的学业方面,过度重视理论化知识,忽视学生的应用实践能力,看重考试成绩,忽略学生的全面发展,导致学生缺乏综合能力。
(四)教学的连贯性和发展性
计算机专业的教学具有连贯性,课程学习必须在前序课程学习的条件下,后序课程才能很好地展开。这就要求排课的老师和讲授的老师有积极的沟通,在先序课程完成的情况下合理安排后序课程,保证学生学习的完整性和连贯性。而实际排课当中排课老师和授课老师往往沟通不足,这也是教学管理中需要重视的问题。
三、加强和完善教学质量管理的措施
计算机专业教学质量的提高和有序运行离不开两方面,一方面需要学校分管教学的领导公正、负责、公开地进行不定期监控,另一方面要充分调用老师、学生的教学积极性,调用各种渠道,全面地收集教学一线反馈的教学信息,并根据教学信息对各教学环节和影响教学质量的各个教学因素进行有效调整。针对上面对计算机专业教学管理中存在问题的分析,下面提出一些措施以期能提高教学质量,建立健全质量管理制度。
(一)设立教学团队和导师制度
计算机专业现在趋向于形成一个团队来完成一个工程,所以需要在一个团队负责人领导下有组织地进行。建立一支稳定、相对独立、具有较丰富教学经验和较强研究能力的团队,可以让大家资源共享,互相交流,让青年教师尽快融入。因为一个团队的研究方向、教学内容大致一样,这就方便组内成员可以经常组织讨论教学计划、课程的建设、课堂教学、课后辅导、作业批改、考试命题、成绩评定、成绩分析、实训实践的实施等问题。对于学生,可以在入校的时候给学生分配导师,导师进一步帮助学生制定适合学生专业方向的学习计划和安排,同时老师有研究项目也可以让学生早日参与到项目中来,为日后的学习工作和就业打下坚实基础。
(二)开展多层次评估工作
教学质量评估是实施教学质量管理的主要环节和有效手段,也是教学质量管理体系的一部分。首先,学院领导组织听课环节,每年安排优秀教师、青年教师进行公开课,一方面给青年教师向优秀骨干教师学习的机会,另一方面可以通过实践,大家给青年教师提出宝贵意见和建议,使青年教师可以及时看到自身教学的优势和不足。其次,教师互评,以教研室为单位,组织本领域或者同一门课的老师互相交流互相学习,资源分享,优势互补,因为同方向老师更加了解相关课程,可以给出更直接的建议。最后是学生评课。学生既是教育的接受者和评判者,也是教学的直接参与者,教与学是双方面的,教学质量的提高需要学生在其中积极参与。学生评教工作一般在每学期末(或课程结束时)进行,由教学系组织各班学生对本班任课教师进行教学工作评价,并将评价结果纳入教师教学工作评价管理系统。学生评教的内容包括教师的教学态度、教学素质、教学内容、教学方法、教学效果等。学生是教学工作的主体,对任课教师的教学质量好坏最有发言权。另外还可以建立学科竞赛,奖学金,扣分机制,惩罚机制等。教师评学与学生评教形成了良性互动,对教师“教”与学生“学”起到相互促进、共同提高教学质量的作用。
(三)提供多渠道学习机会
对于教师,可以组织教学经验不足的老师展开集训,观摩具有教学经验的教师讲课,组织有教学经验的教师深入实践环节,到企业中学习;组织教师进行微课、说课竞赛,分享教学心得;聘请学术型教师开展讲座,开拓视野,关注计算机最新发展动态。对于学生,经常聘请一些专业技术过硬的专家学者展开交流,组织学生去一些实际的企业公司进行参观交流,鼓励学生参加学生竞赛,增强动手能力和实践能力以及合作能力。
(四)转变教学方式和教学观念
从专业的讲解上,不仅要重视学生的基础学习,更要与时俱进地给学生补充学科的前沿知识,让学生对时下比较热门的计算机方向和知识有很好的了解。目前国家大力提倡翻转课堂,在教学过程中把以前单纯的老师在课堂上填鸭式讲解转变为学生互动交流,老师不仅仅是讲授知识,更多是提出问题,让学生自己去讨论问题和解决问题。课堂上不再是老师一个人的表演,而是学生做主角,老师答疑解惑而已的良好教学模式。
(五)重视实践实训的教学
计算机是一个需要学生动手练习的课程。在实践中巩固学生的理论知识,当作以后工作的实战演习,为以后培养较高技术应用能力打基础。除了引进企业工程师来校讲课,在双赢的前提下,可以带领组织学生到企业进行实习,使实训发展得到良性运转。
四、结束语
高等院校肩负着为国家发展和社会进步培养合格、优秀人才的重要任务,提高学校的教学质量,加强教学质量管理是符合学校发展规律的。在教学管理日益受到重视的情况下,如何建立合理的管理体制,使计算机专业的教学质量管理工作既能强化计算机专业的学科特点,又能积极适应教学发展的现代化,保持专业教学质量可持续化发展,是当前各大高校都在积极探讨和实践的问题。管理者、教师和学生三个角色要相互交流,相互监督,才能利于专业的不断进步和可持续发展。要健全质量责任制度,明确领导的管理职责,院系主要领导是教学质量的第一责任人,本部门教学质量优劣反映其工作业绩;要重视教师的培养,给青年教师更多机会提高自己,不仅给学生推行导师制度,也可以给青年教师安排经验丰富的教学名师进行指导;计算机专业是一个不断创新与发展的专业,要以应用型人才培养为目的,重视学生的创新能力和应用能力的培养,重视实践教学。高校应该采取多种手段,鼓励提倡学生积极参加社会实践,为以后的工作奠定基础。要以市场经济发展需求为导向,从社会的实际需求出发,设置计算机专业培养方案和人才培养模式,多与知名计算机企业合作,形成自己的特色与优势。
参考文献
[1]张凡.高职院校计算机专业实践性教学质量保障方案的研究[J].四川职业技术学院院报,2015,25(3):141-143.
[2]邓攀.实施教学质量工程提升教学管理水平[J].高教学刊,2014,14:108-109.
[3]王红茹.提高《机电系统建模与仿真》课程教学质量的新探索[J].科技教育,2015,9:151-152.
[4]王承淑.教学质量监控的问题及对策研究[J].当代教育与文化,2015,7(4):112-116.
[5]施燕.加强教学质量内部监控与管理的实践探索[J].赤峰学院学报,2013,29(10):197-198.
[6]冯志敏,林麒,贾让成.高校内部教学质量监控体系的设计与运行[J].高等农业教育,2003,10(10):28-30.
近年来,随着全球网际网路技术的普及、计算机技术的迅猛发展、数字技术的瞬息万变,计算机工程在人们生活、生产中的应用越来越广泛。下面是我为大家整理的计算机工程毕业论文,供大家参考。
计算机软体大体分为三类,一种是总述,一种是系统软体,一种是应用软体,系统软体的作用是促使各个硬体按照一定的规律协调工作,保证计算机处于正常运转状态。而应用软体的作用则是为了实现某种使用愿望而开发出来的软体。
1计算机软体工程专案管理的基本概念
工程专案管理的含义工程专案管理主要是业主通过委托从事工程专案管理的企业,签署相关协议,工程专案管理企业有义务和权力代表业主在工程专案进行的情况卜干预和服务。工程专案管理企业可以协助业主同项目工程总承包签订一系列合同,只是起到辅助性作用,不直接与总承包企业或者施工、勘察、供货和设计签署协议或合同,工程专案管理企业有责任在施工过程中监督合同的完成情况。
软体工程专案的概况
管理人员开展有序的专案计划
企业必须把人员管理放在重要位置,在软体工程专案的开发上人员的调配问题是保证工程顺利进行的重要因素,因此,专案能否成功和工作人员的工作能力、写作能力息息相关,针对工程专案的操作类别不同,可以分配成各个研究小组,进行科学合理的针对性开发和高效的协作,有利于工程的快速推进和更加完善。小组内的人员根据自身优势,确定自己的工作内容和工作时间。对专案进行正确的认识和对风险进行评估,与此同时从节约成木的方而出发,形成科学的人力资源调配机制,使专案得以顺利开展。
质量和配置管理工作
软体的质量管理工作是整个专案的核心工作,质量管理决定着计算机软体工程专案管理是否真正的成功,通过一系列保证质量的手段,有计划的编制、控制和保证专案质量。保证专案质量的方式可以通过定期的进行质量评估得以实现,在日常专案管理中要不断的对工作进行考查,对于专案不合格的地方要提出意见并且考虑整改措施,不断完善整个软体配置管理的记录工作,使专案的质量能有一定的检测体系,这样开发者会对专案工程的质量问题有比较深入的了解。
风险评估和管理工作
风险管理大致分为两种工作,一种是风险识别,另一种是风险评估。得到评估结果以后要针对问题提出相应的解决办法,定期检测计算机软体工程的好处是可以减小产生风险的概率,还可以避免一些因疏忽而产生风险,使专案的损失减少到最低,也减少了因专案风险而造成的一些相关责任人的利益冲突。
2计算机软体工程专案管理中存在的问题
管理团队的协作问题
分工合作是我们完成一个专案的基木因素,在软体开发方而更需要每个人的智慧一起凝聚出果实,共同享受成果,而目前在计算机软体工程专案管理方而资讯的交流方而存在一些问题,例如分工不清、团队不合作等问题。
需求分析和实际中的业务存在差距问题
计算机软体工程专案没有结合实际的活动需求,也没有调查有效的资料分析,因此计算机软体工程专案管理在开发出新的产品以后并没有取得理想的业务效果。
风险管理的问题
专案的风险工作是企业需要考虑的很重要的问题,如果风险没有相应科学管理,很容易带来巨大的损失,但是很多员工并不懂得如何规避风险,缺乏相应的专业知识,更是缺少对风险工作的管理,导致很多企业在风险来临时无法做出正确行动,造成巨大的经济损失。
3计算机软体工程专案管理的对策
对风险管理和工作进度进行有效管理
制定风险管理制度。计算机软体工程专案管理的工作人员必须具有一定的风险识别意识和相应的遇到风险的专业知识,并且能有效的控制风险的能力。在平时要做好风险评估的管理报告,针对可能发生的风险要及时预测并且做出相应的解决行动。设定专门的人员对计算机软体工程专案定期进行风险的评估和检查工作。在整个专案中,根据需要进行多次的风险管理工作,因为风险无时无刻都有可能存在,检查的目的是尽量减少风险发生,在一般情况卜处理风险的措施一般有三种:减缓、规避和转移。提高工程的进度,不断的推进工程的工作效率。要制定详细的工作计划表,并且尽可能达到最高的工作目标。工作人员有严谨的工作态度和高效的作息时间安排,管理人员要密切关注工程进度,不断的督促员工完成应做的工作量,有条理、高效的完成对员工的工作任务的监督工作。
建立完善的管理体系针对计算机软体工程的人员日常管理工作,要建立科学有效的管理方案。合理安排人才资源,确保在进行计算机软体专案工程时人员调配顺利进行。专业知识的培训对于工作人员来说
是必不可少的,可以极大的丰富计算机软体工程专案人员的专业水平和实践能力,减少工作上的失误,提高工作效率和工作人员的素质。奖罚制度是对企业员工优劣的衡量标准,所以在计算机软体工程专案管理方而采取奖罚制度可以极大程度上调动员工的积极性,使员工主动为企业创造效益,企业的发展才能有长远的未来。
建立合作的团队
在员工内部建立有效的交流机制。员工的内部工作经验交流是非常重要的,因此要完善沟通方法,开辟多种交流方式和渠道,不断的增强各个部门的沟通意识,使团队的力量不断凝聚起来。明确分工,责任落实到个人。计算机软体工程管理非常复杂,需要的人员也众多,因此必须要使每个员工明确自己的工作内容和范围,清晰的划分自己所需要负责的区域,清楚自己的责任,这样能够确保每一个步骤都井井有条,非常有秩序。调动整个团队的工作积极性。通过一些活动、奖励措施等使每一个工作人员全身心的投入到工作中去,愿意并想要去做的更好,不断激发团队的潜力和员工的协作能力,这样专案不仅会做的越来越好,员工内部也会越来越和谐并且充满正能量,企业的效益也会不断得到提升。
4结语
计算机软体工程专案管理的工作内容十分的复杂,要保证软体工程按照工程原计划进度顺利开展工作,并且要节约成木、保证质量,必须熟练对计算机软体进行操作,在现在的大多数生产计算机软体的企业中最为重要的就是软体工程专案的管理效率,软体工程专案的成功条件是软体专案要具有科学性和高效性,在此基础上企业的合理管理也是企业走向成功的关键。
1现状分析
培养高质量的软体开发人才一直是社会和行业关注的焦点。早在11年前,对于工程教育的迫切性就被人提出来[1]。工程教育本身也作为一个系统问题被讨论[2]。现在从国家层面在战略上建立了软体学院进行专门培养,各个高校也不断推出新的课程、新的措施方案。在这一领域虽然比过去似乎已经有了翻天覆地的变化,但来自企业的呼吁似乎一直反映出诸多不尽如人意。更多的思路希望将企业的力量直接引入到教学,比如实训基地等[3];而国家层面也非常关注实训[4]。但实际效果可能变得流于表面,因为企业往往难以将核心的工作拿给学生做,而其训练的专案也并未从更全面系统的角度去设计,其锻炼效果就有限了。在软体开发这一领域,由于其具有变化迅速,新技术不断涌现的特点,导致不少在教育内容上选择了追逐新技术、新语言、新平台,以能用会用这些流行主流技术为目标。典型的代表就是北大青鸟,有些二本的学生在毕业前专门花钱去青鸟学习,似乎可以看到这种教育的优势。但另一个矛盾的情况是,往往那些关注员工后劲的公司却不愿意招聘青鸟的学生。如果将目光投向国外的顶级大学,例如斯坦福,其教学上并没有去“依赖”校企合作,以及很热门的“实训”。其核心课程依然是过去的传统经典课程。以一个研究生为例,一学期能修2门课是正常,3门就很优秀。它并没有追逐所谓的新技术。但无人质疑其学生的工程能力、科研能力和创造能力。
2什么是计算机工程能力的核心
什么才是我们软体开发教育的核心知识架构,怎样才能培养学生可持续发展的核心竞争力?我们调查过一些非常高水准的软体开发者,发现他们往往在底层软体上持之以恒地进行长时间深刻的锻炼,然后在未接触的新领域才能非常迅速地掌握核心。例如,一个非计算机专业的系统分析员曾经“只”在DOS这种原始的作业系统下玩了10年,甚至自己写过一个汉化的DOS。他只有书本上的一点点网路知识时,就用一两天时间解决了一个学通讯的研究生1个月都不能解决的网路故障。这是一个典型的例子,他并没有“实际的”网路经验,什么使得他如此轻松地进入了新的领域呢?而另一个曾就职于vmware、google等顶级公司的程式设计师,在Unix下只用C语言做了10年系统级程式设计。当用Java,C++甚至是javascript时,其学习时间只是1天,很快就比做了几年专门java程式设计的程式设计师还精通。如何才是软体开发人员的本质力量?什么才能让他们在变化万千的新技术面前屹立不倒,乘风破浪?
计算机工程能力
我们认为计算机工程能力包含两方面的内容:1核心知识架构;2计算机的思维方式。什么是核心知识架构呢?是反应该领域最基本规律和支撑技术的知识。简单地说就是传统的作业系统、编译、资料库。作业系统将硬体、软体、高阶语言和汇编融汇在一起,它几乎包括了软体工程中所有重要的因素。举一个简单的例子,似乎只有面向物件这种“高阶东西”才有的虚拟函式运用,其实在Linux中就有相应的虚档案系统。作业系统是最为复杂的计算机工程之一。编译融汇了大量的演算法,而且能让大家真正看“穿”语言的外表,深入到其内里,体现了最根本的计算机技术。其优化技术,也深刻地和硬体交融在一起,很好体现了底层风范。资料库,不仅是运用演算法最多的地方,甚至是超越作业系统的一个复杂的系统,从快取技术到i/o优化,到索引,再到事务处理,无一不是反映计算机最深刻规律。大家可以发现,所谓核心知识架构,都具有两个特点,反映本质规律,体现软硬融汇交织。也只有这样,才能建立下面谈到的“计算机思维方式”。
核心知识架构
为什么我们没包括一些新兴的语言和技术呢?似乎它们很“实用”。而且已经出现的问题是,按照传统科目和方式学习后,学生在企业什么都不会。这也正是大家关注工程教育的初衷。为什么不强调这些新兴实用技术的教育还在强调“古老”的“基础”。计算机领域一个显著的特点是,表面上知识更新非常快,新技术、语言层出不穷。这很容易导致当我们发现学生能力欠缺时,将问题归罪于新技术的学习不得力,知识结构老化。但其实目前的问题可以从另外一个角度考虑,是否是基础教育不得力?分析国外著名大学,如斯坦福、伯克利的课程,我们发现两个特点:1关键的基础课程,如作业系统、编译原理、资料库,始终是其最重要的课程,并没有过分追逐各种“新潮”技术。2学生一学期能修的课程非常有限,一般为3门课。而国内却呈现相反的状况,比如编译原理被降到了选修课的角色,新潮课程层出不穷,一个学生二年级一学期要修13门课。在这种走马观花的状况下,计算机这种具有强烈“手艺”色彩和工程实践的学科,被完全纸上谈兵化。而一些可怜的实验内容,还被学生的复制拷贝所湮没。我们认为,恰恰是这种情况,使得基础核心知识教育没有工程化,没有充分动手,导致了基础知识教育某种程度上的巨大失败。从以下鲜明的对比可以窥见问题的端倪:国内学生反映作业系统课程是文科课程只需要背条款考试即可;而相对地,国外著名高校作业系统课程要求学生实现“小”作业系统。国内资料库只讲其应用如大量讲解sql等运用,sql即使非计算机专业人士也很容易学习,这也是它被发明的初衷。斯坦福的资料库课程中有一门需要实现一个数据库系统。在笔者走访的计算机工程上优秀的人才,发现其共同的特点就是在诸如作业系统或资料库上都有很深入的学习经历,比如前面提及的自己构建过汉化DOS系统,或者在Unix下,做核心以及驱动很多年等。而当他们接触新技术时,之前深刻的经验和淬炼的思维就让他们如虎添翼,快人一等。更有甚者,国外真正的最顶级专家,都是在这些领域有无与伦比水平的专家,从delphi的缔造者,转战到微软并入主平台的开发,也可看到雄厚的底层知识和能力的巨大作用。所以“老”知识并不是障碍,而是通向天堂的阶梯。究其原因,就涉及到工程能力的第2个方面,计算机思维方式。
计算机思维方式
对非专业人士它是很抽象的概念,而对真正专业人士,这又是一个非常鲜活的概念。这里限于篇幅,我们只举一个简单的例子。面对在C++中外部程式码如何直接修改私有变数的问题,计算机的思维方式就是:物件也是放在记忆体中,只要能拿到物件的地址,并知道物件的布局,那么就可修改。而没有建立这种思维的人,就完全被高阶语言的语法所左右,无从下手。一句话,无法看到本质,没有从下而上的底层思维。核心知识课程的有效深入教学和计算机思维方式建立有何直接关系呢?我们认为核心知识因为其反应了计算机本质规律,而且从底层建立起来,所以对其深入掌握运用后,它从开始的逼迫到最后的陶冶,最终潜移默化地让受众建立起“计算机思维方式”。而这正是计算机工程师安身立命之本,就如同音乐家有其独特的音乐思维方式一样。为什么诸如java之类的课程于建立计算机基本思维不太合适呢?因为它更高层,无法让学生看到最下面。而唯有彻底、深刻和系统的底层淬炼,才能真正建立起“计算机思维方式”。
3如何打造强大的计算机工程能力
大家一方面指责基础课程的“空洞”、“无用”、“陈旧”;另一方面在不断开设的海量新课和技术中压得学生更加远离程式设计,远离实践。即使能培养出熟悉某种语言的学生,也无法看到他们和培训学校有何不同。实训也似乎没有根本解决问题,我们在实践中发现,往往是那些自己醉心于程式设计的学生最后有着卓越的表现。让基础知识能支撑和指导实践,而非仅仅“符号”,并引导学生进行高效的实践。
“3块连一线”,4门基础课程整合打造核心知识架构
我们将4门基本课程进行贯通式整合,着力塑造学生的“计算机思维”。下层的是3门基础课在上一小节探讨了其在工程能力训练上不可替代的重要地位,对软体开发环境产生支撑。而软体开发环境又通过精心的设计和工程实践,从应用角度将3门课程所学的知识串联起来。从而将基础知识和工程开发更有机整合在一起。首先,阐述为什么将以上课程整合在一起的理由。要回答这个问题,必须先回答什么东西支撑了优秀程式设计师。在我们的调查人员中,无一例外地都具有很深厚的底层软体开发背景。有长期从DOS的Hack入手的;有长期从事Unix核心程式设计的;有从Windows的driver起步的;有以反汇编逆向为根基的。长期在最底层的经历,使他们建立了最真实和能触控的系统观,能以计算机的方式思考。所以面临新技术时,他们能透过新形式很快把握其精髓,深刻地把握其实质。“太阳下面没有真正的新事物”,例如号称21世纪最新的重要的软体技术AOPAspectOrientedProgramming,AOP,其实在20世纪60年代就出现在了汇编一级的软体技术中,它本质就是钩子技术的系统化。在底层的软体世界,我们不仅能够用到那些所谓的最新的技术,而且能看到其本质我们可能就是用机器码自己构建出来的,而不被新技术的华丽外衣障目。这些使得具有底层经验的开发者,更有创造力,更能创造,也更能洞察迷乱后的本质,庖丁解牛,解决那些异常复杂的工程问题。举一个笔者遇到的真例项子,一个具有深刻底层经验的程式设计师一直只有C语言和作业系统程式设计经验和一个只有深刻Java经验的程式设计师,在同时学习Javascript的闭包概念时,后者一个礼拜都还有些似是而非。前者很快就能自如运用,且最后指点了后者1个小时,后者顿时豁然开朗。这是典型的“新”与“老”,上层和底层经验在面对新事物时的对比。既然底层软体赋予我们如此强大的能力,那么哪些是底层软体呢?大家公认,作业系统、编译和资料库由来就是计算机工程自身的根基。所以,我们必须将这3门课涉及的知识好好淬炼。而如何将3门课的知识和我们日常的软体开发联络起来呢?如何用它们指导平时程式的开发呢我们大多数是开发使用者级软体,不会开发核心软体,因此许多人认为几乎整个在核心中的作业系统对使用者级软体开发无从指导?另一门课,《软体开发环境》解决了这一问题。它有一条主线,通过反汇编将C语言和汇编串联起来,让系统级的知识从高阶语言的面纱下展现出来。同时用逆向工程这把庖丁之刃,将编译、连结、面向物件等软体开发中的重要知识块剖剔,让底层与上层贯通一气。而逆向的技术技巧,本身也是非常高阶的软体开发技术。因此,我们用“3块连一线”来总结4门课的关系是最好不过了。为什么不纳入语言课程,比如C/C++语言?从我们的工程经验来看,语言只是计算机原理和思想的载体,是表述方式而已。为了表述形式而专门花大力气是不值得的。比如,国外的著名大学很多都不开设语言课,在其他课程作业中必须用C语言程式设计,学生们就在那里锻炼了。真正的语言的力量并非来自语言本身,而是底层知识为支撑的专案锻炼。我们的思路是以构建式完成大量的完整系统的编写,这样就很好锻炼了软体开发和工程能力。同时,“软体开发环境”本身从逆向层面也对语言有了深刻的剖析,这是纯粹的语言课难以完成的。另外,从大纲安排上,我们在大一就会让学生用C语言来初步接触程式编写,这时并不适合放入太高阶主题。而在教学中,语言的力量已经渗透到一个个工程构建中,随风潜入夜了。为什么不纳入演算法课程?从某种程度上,“程式就是演算法与资料结构吗”?我们认为在系统中运用演算法,演算法才具有生命力。而编译、作业系统、资料库以及我们专门设立的一些课程设计将全面运用各种演算法和资料结构。在实战中运用并学习提升才是王道。这也正是构建式学习的精髓所在,这也正是探索式学习培养学生的创造能力的精髓所在。演算法课已经为我们准备了元件,就看你怎么去组装甚至改造。
以构建主义的思路,深度实践的风格改革课程
前面我们论述了底层知识架构的重要性,那么怎么来将它们实际地建立在学生的工程实践中呢?简单地说就是“构建一个具体而微的系统”。讲作业系统就构建一个小作业系统,讲编译原理就构建一个我译器。同时,设计一些跨度较大的课程设计覆盖这些课程的一些重点内容。构建完整系统本身就可真实淬炼工程能力,而这些内容的复杂性、难度以及运用知识点的广度,本身就超越了简单的企业实训专案,在培养人才方面具有系统性、完整性、挑战性独特优点。我们需要的是运用团队的思路和现代软体工程的手段,将其开发过程管理发起来,从而熟悉企业级开发的工具链,将软体工程学到的知识贯通到实作中。这也回答了“和以前相似的强调基础课程教育,什么特点使得我们的做法能获得强大的工程能力?”这一问题。以前更多注重理论知识的学习,而现在的做法是回归计算机工程的自身科学规律———实践为王。
改革考核评价标准,充分强调动手实践
以前我们一直是卷面考试,实验分数只是象征性的点缀。这本身违反了计算机工程的特点。只有改变评价考核标准,才能真正驱动学生充分锻炼工程。在课程软体开发环境中,我们采取了平时的考试结合期末考试的方式,而两者均为软体编写。期末考试在实验室上机编撰指定题目。不强调对一些函式名等死知识点的记忆,可以用线上帮助。这本身也符合软体开发的规律。
4结束语
我们在计算机工程教育上试图做一些回归本质的工作,也取得了一些效果。比如在软体开发环境中,学生普遍认为:“似乎将3年学的程式课全学习了,收获很大”。更有同学,在外企公司的面试中,直接运用了课堂上的知识,这在传统的教学环节中是难以获取的。但整个工作尚在起步阶段,所以仍有很多工作需要做,许多环节需要优化。我们希望在以后的工作中更深入探索工程教育的规律和本质。
270 浏览 2 回答
130 浏览 4 回答
247 浏览 2 回答
323 浏览 3 回答
233 浏览 3 回答
297 浏览 3 回答
226 浏览 2 回答
147 浏览 2 回答
104 浏览 3 回答
145 浏览 3 回答
247 浏览 2 回答
218 浏览 3 回答
355 浏览 2 回答
186 浏览 2 回答
300 浏览 2 回答