[置顶] 计算机专业高校就业率最低:正规军干不过游击队
posted @ 2009-09-24 13:07 duanx 阅读(276) 评论(10) 编辑
posted @ 2009-09-24 13:07 duanx 阅读(276) 评论(10) 编辑
http://www.sina.com.cn/ 2009年09月23日 11:13 电脑报 最新的就业报告显示,计算机科学与技术已经成为高校就业率最低的专业之一 电脑报记者 李好宇 朱文利
看见电脑报上的一篇文章不知大家看过没,想和大家分享分享,园子里老赵也谈论过关于培训机构的种种(XX等),但是从这篇文章看来也不是就那么回事,到底培训这个东西是怎么样的?计算机专业的真的人才过剩了吗?这里且尚且不谈那些特别优秀的,那毕竟是少数,谈谈总体水平。我们真的干不过游击队吗?
软件学院可能好点:软件学院将大量的实践环节加入到学习过程中,并增加设计能力、管理、服务、团队合作等内容的课程,这些课程占到学习课程的30%内容。课程设置模块化,大的架构不变,新的内容以模块化增加,老师、学生都便于选择,课程设置变成一个动态体系,确保适应软件行业每年30%的变化。
可是软件学院的学费怎么那么贵呢。老赵也是某名校的软件学院的吧,给大家说说软件学院是不是真的比一般的计科专业多点实践环节
正文:
1999年全国高校第一次大规模扩招,到今天,整整十年的人才积聚让计算机教育行业渐露疲态,进入人才饱和甚至过剩期,计算机专业已经成为高校应届生就业率最低专业之一。但纵观人才市场,“硬过剩”并未出现:各类IT培训机构层出不穷,陆续输送大量计算机人才;招聘网站IT职位的招聘更是持续火爆,供不应求。为什么高校计算机应届毕业生不再受青睐,甚至毕业后需要参加培训机构“重修”?十年光环下的高校计算机教育是否开始走向堕落?是谁一手砸了计算机学生的金饭碗?
正规军干不过游击队
上午8点25分,张跃(化名)从教室后门溜了进来,放下手里的早餐和背包,在最后一排靠边的位置落座,开始一天的学习。张跃是吉林省某高校计算机专业大二的学生,这节课讲的是《数据库系统原理与技术》。虽然是学科内重点课程,但上课半小时,47人的班上出勤30人不到。“没办法,理论课太枯燥,现在还没来的也就不会来了。”
由于是理论课,也就没有为学生提供可用于实际操作的电脑。偌大的教室中唯一一台和IT相关的设备就是讲台左侧的投影仪,但它常年处于关闭状态。一眼瞥过去,还真看不出这是一节计算机课。看着台上年轻的老师口若悬河,在黑板上密密麻麻地写满了一堆文字,张跃觉得无聊,掏出一本《明朝那些事》翻了起来。“随便看点东西,总比睡觉强”,张跃努努嘴,他旁边一个同学已经开始会周公了。
这几乎成为高校计算机课堂的标准模板:一成不变的传统教学模式在日新月异的计算技术面前稍显乏味与无力,如果再加上一个平庸的教师,也就不难理解为什么不计其数的计算机专业学生缺席、瞌睡,或者无所事事了。
与此同时,中关村某计算机培训学校的教室中却呈现出截然不同的状态:一堂名为《3Dmax应用》的课程刚开课5天,墙上贴着泛黄的《学员考勤标准》和《学员行为管理》,但23名学员并无缺席,更无睡觉及看闲书者,都在聚精会神地学习3Dmax;教室虽然简陋拥挤,环境稍显不堪,但每位学员面前都摆着一台CRT,运行着3Dmax软件,可以跟着老师的讲解一步一步来做;当老师讲到“空格键的作用是锁定选择目标”时,有同学马上问到“可以修改快捷键吗?空格用起来不舒服”。“软件中没有直接修改的功能,如果你有兴趣的话可以通过修改XX文件来实现。”在这里,有疑问不妨随时发问,师生互动非常频繁,与高校中以教师为中枢,单向灌输知识的模式大为不同。
因果循环,高校课堂上低迷的状态直接关系到就业大计。刚刚发布的《中国大学毕业生就业报告(2009)》显示,各学科之中,计算机科学与技术已经成为就业率最低的专业之一。以张跃所在高校2009年的就业状况来看,从事专业对口工作的毕业生不足两成。一些学生被迫在毕业后参加各类计算机培训机构,接受升级教育,孟诚(化名)就是其中之一。
“大四一年跑断了腿,面试了不下20家企业,同学都叫我‘面霸’,不过还是没有企业愿意接收我”,孟诚一脸无奈,他实在是有苦难言——“面试的环节还好,一旦人家要我现场做个项目或者架起一个模块,基本上就只有干瞪眼的份。” 找工作大半年未果,孟诚觉得自己的实践动手能力有待提高,在今年5月报名参加了大连某计算机培训学校的短期班,专攻JAVA开发。9月初,孟诚成功进入一家国企,如愿做了一名软件工程师,4000余元的月薪加上不错的项目奖金,这样的待遇让他非常满意,而培训前后的差距完全可以用“一个天堂,一个地狱”来形容。
孟诚的遭遇在各级培训机构周而复始地上演,成为励志模本或宣传案例。据北京ITET培训中心一位老师介绍,很多原本求职困难的计算机专科毕业生经过培训之后,往往将薪酬预期设置到了3000元甚至更高,“销路”往往还不错,“他们有了实际操作项目的经验,企业无需任何培训就可以上岗,这一点是多数高校毕业生所不具备的。”
这番话道出了用人单位的心声,孟诚的现任领导——29岁的刘先生是一位项目经理,当时招聘进入最后环节,摆在刘先生面前的是一道选择题:是留用普本毕业,刚经过职业培训的孟诚,还是选择另一位名校毕业、但是没有任何实践经验的张某?“月底我们就要做一个煤炭企业的信息化项目,急用人。我可没时间和耐心去一点点、手把手地教他。其实道理很简单,大家都喜欢拿来就能用的软件员,不是吗?”
高校计算机专业教育的现状与现实的需求有多大距离?面对飞速发展的IT行业和全社会的信息化进程,计算机这一特殊专业的改革方向该指向哪里?
当记者带着这样的问题在北京采访一些高校老师时,北京大学、清华大学、北京邮电大学、北京航空航天大学等学校计算机系或信息学院的一些教授对记者的提问回答得很干脆:“我不关心这样的问题”、“我很忙,找别人吧”、“我们只做事,不想谈”。
记者理解这些骨干教师都承担着国家高科技研发项目,对教学改革的事可能无暇顾及,但高校教师的主要职责不是培养人才吗?面对学生的教授不关心这样的问题,该由谁来关心?学生的前途、社会人才的需求对老师而言真的可以视而不见?
教育怪现象之本科生回炉
“我们的学员中一半拥有大专以上学历,三成左右是计算机专业应届生。”北大青鸟(学知堂航天桥)的傅老师介绍道,这些学生主要希望增强实用性方面的能力,与企业需求接轨,这往往是照本宣科的高校教育最为欠缺的。
事实正是如此,传统机械的高校教育难以承载多元化的企业需求,将计算机人才推到一个怪圈:一方面海量应届毕业生苦于工作无果;另一方面纵观智联、中华英才网等招聘网站,网络工程师等IT相关职位常年处于招聘热门职位前列,一天发布的招聘信息竟达到万余条。企业需求与高校教育间不断被拉伸的真空地带,由日渐兴盛的各式培训机构迅速填充起来。“学以致用”这条传承千年的办学基准,对于当代计算机教育已经不再适用了吗?高校教育体系,出现了怎样的问题?
“不妨从教材说起,我们每年都会进行企业调研,将获得的最新信息编入教材,这样可以保证每18个月进行一次动态更新”,北大青鸟的傅老师介绍,高频率更新可以融入主流的技术和产品,帮助学员掌握最新的技术。“多数高校的教材还是2005年之前的版本,有些公共课甚至还讲Windows95甚至DOS,实在有些说不过去。”
可能有人会问,高校也提高课本更新频率不就可以了吗?问题并不如想象中这般简单。“高校通用课本的改换涉及到教育部教学大纲的修改与重构。一般来说,编写教材—专家审核—试点使用—全国推行,这个流程没有两年根本下不来”,北京ITET培训中心主任谢斌华认为,实现课本的“与时俱进”难度非常大,并非学校主观的惰性,而是教育体制的问题——高校教育注重知识的传承性,课本不换或少换为宜,这与计算机行业的高速发展和知识爆炸显然是相悖的。高校教育与职业教育的比拼,从起点开始已经落后于人。
如果说课本是硬伤的话,师资无疑是计算机教育行业的软肋,且普遍存在。一硬一软,已经成为高校计算机教育难以触及的伤疤。“到了培训机构才发现,学校里的老师完全是在纸上谈兵,没有一点操作经验。”孟诚总结道,一些计算机教授可能科研能力优秀、发表过多少多少论文,但往往是绣花枕头式的“理论派”,根本没有实际的项目经验。而培训机构中的讲师,可能出身草根,但一般都拥有5~6年的项目开发经验,多数担任过研发一线的项目经理。“你想想,饭馆大厨和每天翻菜谱但从没动过手的人讲起厨艺来,效果能一样吗?”
师资孱弱的另一个表现是,教育资源被过度发掘,不堪重负,尤以教师为甚。本科教学环节,一个老师带50人左右的班级司空见惯,有时60人甚至更多。理论课程尚可勉强应付,但实践环节弊端就凸显出来——“一个人问一个问题,一节课都不够,怎么进行针对性指导?更多的时候,只能靠学生独立思考及合作互助。”一位高教计算机老师如此表示,配置更丰富的教育资源无疑成为当务之急。
计算机教育失败,谁之过
“我觉得学校课程问题不大,主要是学生的执行力不够”,北师大计算机专业2009级毕业生张涵(化名)对记者表示,大学阶段,能够坚持把老师布置的所有实验和任务完成的学生不超过10%。而这10%的“少数派”不仅成绩优异,就业前景也往往不错。学生的惰性折射出一个更为严峻而现实的教育问题:高校过于松散的教学组织形式是否在一定程度上降低了学科的应用价值?
这种状况在一些名校尤甚,在提倡教学自由化、自主学习的背后,正是教育组织管理体制松散弱化甚至病态的表现。最为常见的一个细节是:计算机学科实验、项目设计等多以课后作业的形式出现,极少在课堂上完成。这样可能助长学生的惰性,扼杀独立思考的能力,看似是学生执行力方面的问题,实则为教学组织原则问题。人生而懒惰,根源在管理,不在学生自身。
“选择课后完成也是无奈之举,多数院校还达不到课堂人手一台计算机的硬件配置,所以操作只能留到课后”,吉林大学一位高校计算机教育者表示,“硬”条件决定了高校教育中理论和实践往往难以兼顾。
高校教育日益涣散的组织问题无疑为日后埋下隐患。抛开教学组织管理,课程组织与安排也让不少学生感到不解。“大一公共基础课,大二专业理论课,大三上机应用,大四社会实践。就不能把课程编织得紧密、合理一点吗?”孟诚清晰地记得,大三去做VB和C++上机的时候,每天要带着大二的教材,“忘得差不多了才搞上机,以前学那些理论知识有什么用?”
对于绝大多数学生而言,大四时学校组织的企业实习是接触企业需求的主要途径,但不少高校计算机专业学生的企业实习往往流于形式,一般1~2个月就草草结束。而记者了解到,公司中一般实际操作的项目设计,从前期的构想提出、协作沟通到后期的研发、测试,全流程往往有三个月甚至更久,一些学生可能在实习期一个项目都没有做完,这样的企业实践有什么指导意义?更为现实的情况是,多数学生以在校实习的身份进入企业,并不能接触到项目设计这些核心区域,只能做一些与IT无关的零活,与实践无益。反观培训机构,学期一般为8~9个月,全程模拟企业环境,“我们要求学员课前打卡,着职业装。”周边因素的跨度较小也是培训学员入职初期容易适应的主要原因。
“培训机构和高校教育最大的不同是组织模式,高校以人为教育单位,培训机构以小组为教育单位,这对技能及协作能力的培养至关重要。”徐冰曾在吉林某计算机培训机构担任讲师多年,每招收一批新学员,他首先会按照学员能力、基础,甚至性格进行划分,2~3人为一个项目组。“一来模拟实际项目开发的真实环境,二来通过学员间的协作互助,可以解决一些我们老师难以触及的问题。”而高校教育,则强调以人为本,即推崇个体学习、个体能力。在企业的实际工作中,团队合作是非常重要的一环,这与高校的教育理念再一次发生碰撞。
除了计算机专业教育,面向全员的计算机基础课程教育同样积弊已久。北师大一位公共计算机课老师对记者表示,大一新生的计算机能力梯度较为明显,需要进行分班考试,因材施教,设置不同层次的课程供学生选择。但经过2006、2007两年的尝试后,发现针对性教育在组织层面颇为繁琐,不得不于2008年放弃。一来受困于师资力量不足,同一学科难以开设多门课程;二来始终缺乏一套考核评判细则,在仍然无法摆脱应试模式的高校教育体系中,这无疑是致命的。
“另外,基础较好的新生还缺乏一套难度适中的教材”,这位老师抱怨道,对于一些入学考试在80分以上的新生,基础教材并不适合。但由于是非计算机专业,将专业用书作为教材同样不适用。
高校计算机教育开始自救
知道了高校计算机教育的症结所在,如何对症下药?
从课堂组织形式来看,不妨将理论课和实践课结合起来,在机房讲基础知识又有何妨?在北京几所高校走访的过程中,记者发现计算机专业大量机房处于闲置状态,如果能够合理运用,将理论和实践结合起来,相信会起到很好的效果。另外,在组织形式上,不妨学习培训机构,以组为单位进行实践教学,这样不仅会弥补一些学生的技术短板,还能培养协作互助的能力,这一点在职场上尤为重要。
校企脱节是所有高校计算机教育问题的根源。目前很多培训机构都与企业签署长期协议,帮助培养定向人才,想一想,为什么协议对象不可以是广大高校呢?企业直接和高校签订用人协议,通过大四一年的实践进行定型培养,毕业后合格即直接招收。这样一来,取代了流于形式的企业实习,同时解决了教育与需求接口的问题,一举两得,但前提是,这需要学校主动去促成。
素有IT界黄埔军校的北京邮电大学就有很多偏重于企业实践的课程,这得益于其与多家知名企业的长期沟通与协作,很多学生在学校安排的企业实习中获益匪浅。但高校企业资源库的建立毕竟不是一朝一夕可以完成的,北京师范大学信息科学与技术学院副院长、博士生导师孙波找到了一条捷径:“我们会引导学生参与一些职业工程认证,比如华盛顿协议,拥有这样的资格后,便等于拥有一定的实践经验,外企更容易接纳”。
哈尔滨工业大学软件学院结合已有的服务工程课程设置,聘请IBM专家进行服务科学与管理的授课。浙江大学软件学院与浙大网新和美国道富合作,开发了一系列金融软件实训项目案例,与阿里巴巴公司合作建立了电子商务实训基地,为学生创造了良好的企业模拟环境和流程训练,为服务外包中高端人才培养打下了良好的基础。
东北大学东软信息学院与英特尔、SAP、SUN、惠普、东芝等国际知名IT企业紧密合作,共同开发中外文课件和项目资源库,搭建校企教学资源的共享平台;将企业项目融入课堂教学内容,通过教学与产业的联动,实现人才培养与企业需求的良好对接;同时,学院建立校企师资互动机制,从东软集团、思科、SAP等IT企业聘请有企业实践经验和授课能力的教师,建立了一支“双师型”(教师、工程师)、“双岗位”(教学岗位、研发岗位)的师资队伍。该院的毕业生受到对日、美外包企业的欢迎。
另外,对于由扩招引发的计算机人才就业压力,孙波也提出了建议,“教育部颁布的计算机专业建设规范,把人才分类培养上升到战略层次。计算机科学、计算机技术、计算机应用这三类人才,你想要培养哪一种,首先自己要搞清楚,千万不要大而全”。在分流人才培养方向方面的压力后,孙波建议在教育环节要融入学校特色,“师范类院校要扬长避短。不能和理工类的计算机专业硬碰硬。实际教学环节,我们加入了一些师范特色的模块,比如计算机教学技能的培养”,在计算机人才已经明显饱和甚至过剩的今天,加入带有学校特色的标签,无疑将大大提升学生的竞争力。
特色教育也开始向公共课体系延伸,北师大一位公共计算机课教师向记者表示,在对文学院学生进行调研后发现,多数会从事中小学语文教育行业,而这一行业对视频技术、PPT及静态网页的制作要求较高,所以在后来开设了一门名为《多媒体与网页制作》的课程,主要面对文学院的学生。
人物介绍:
张文杰(化名),某大学计算机专业大三学生
我是一名计算机专业大三的学生,看到学哥、学姐们为了找工作而陷入忧愁,忙忙碌碌地奔波于各种大小的招聘会,我开始对自己的未来感到深深的担忧。我们学校并不是全国211工程的重点大学,一些相关专业的公司并不会把我们学校当成招聘的重点,所以我们常常错过各种相关专业的招聘会。
而最让我感到迷茫的是,当毕业的脚步越来越近时,我的恐惧却越来越深。听学哥、学姐们说,在学校学习的专业课内容,一到招聘会那里似乎就变得无用了。招聘单位问的问题,似乎我们都没有遇到过。他们需要一到公司就能上手的熟手,对于应届毕业生,都不太“感冒”。而我周围的同学,除了应付学校里要求过的考试课程,如今都选择去一些学校周围开设的培训机构参加培训了。当我也打算选择时,却犯难了,面对各种认证和不同级别的培训机构,作为一名在校大学生,确实不知道该如何下手。
我们不知道社会中有哪些相关的IT行业是可以让我们选择的。我们也不知道,自己学习的类似JAVA、C语言、数据结构、SQL数据库这样的计算机相关专业课程,以后可以从事哪些IT行业。我们学习的内容,是否已经和公司接轨?我们花半学期的时间学习JAVA、C语言,又花半学期的时间学习数据结构、SQL数据库,接着我们还将学习网页设计等课程。这么短的时间,是否就能学到我们日后应聘工作所需的技能?学长告诉我,公司非常看重个人的实际操作能力,比如项目开发中实际涉及的具体问题。而相关的软件工程课程,我们也只学习了半学期的理论知识。我是一个刻苦的学生,每节课都认真做好笔记,下课后,回到寝室自己上机操作。但是当学哥向我问起招聘单位提到的问题时,我却发现自己对问题所涉及的内容一无所知。一些实际的操作内容,我们课堂中似乎并没有涉及,但却被招聘单位看作是必需的。
我开始选择去参加培训班。培训班那里说这样考试能提高就业门槛,那样认证是国际大公司所认可的。我自觉离进入国际化的大公司还差得甚远。我不知道通过那些认证后是否就能胜任今后的工作,公司就能让我去上班。但我听说另一些学长,他们考来的国际认证、等级考试并没为自己找工作带来过多的砝码。那些学长说,招聘单位也只是瞟了一眼他们辛辛苦苦花了很多钱和很多时间考来的认证,就放在一边,继续问一些问题,而这些问题大多和工作经验相关。在招聘单位眼里似乎工作经历和自己对口,才是最重要的。而这些对于我们应届生来说,确实太难了。
企业不愿花费人物、物力,接收大学生实习。而在学校,我们能直接接触的实习机会也不多,我们想不出更好的办法来解决应聘时过不了关的“工作经验”,这让我们感到非常恐慌,因为毕业即将到了。在大四时,“运气好”的同学能有幸找到“实习机会”。而找不到的同学,是否能有其他的机会呢?我带有一肚子的疑问,希望你们能为我和像我一样的其他在校生们,提供一些信息,帮助我们走出困惑。
香港城市大学校长郭位:内地计算机教育基本没用
“中国内地计算机教育或许没用。”郭位双手交叉,十指绞紧,对本报记者发出长长的一声叹息,“中国大学不应只成为研究院,而应该到英特尔、微软中去访问和学习。”
9月8日,这位既拥有美国工程院院士、中国工程院外籍院士头衔,又是国际电机及电子工程师学会终身成就奖得主的香港城市大学校长,对中国内地计算机教育现状唯有叹息。
回顾美国、我国香港的教育,展望内地,郭位说,“学以致用”本应是教育坚持的原则,尽管中国人常说“学以致用”,但内地学生只对成绩非常重视,不知道如何找出一条属于内地学生的道路。
“学以致用”,是郭位认为自己坚持了二十年的理论和教育理念。2008年11月,郭位在香港城市大学就职典礼的演讲中说,大约六十年前,美国一位著名教育家赫钦斯说过:大学自由有三,在于探究、讨论、传授。舍此则大学焉存。六十年世情变幻,近日城大教育使命是“响应社会所需,提供专业教育和进行研究”。
电脑报:您在美国多所大学做过多年教授,现在也是香港城市大学教授,对内地教育据说也不陌生,那您对目前中国内地的计算机教育怎么看?
郭位:无论是在美国,还是香港,我都推崇一个理念,那就是中国古话说的“学以致用”。但据我不算太深的了解来看,内地计算机教育除了重视成绩和已经完全过时的一些语言、编程,给我留下的印象是“不太实用”,严重一点说,是根本没用。
为什么?一些内地的企业朋友经常告诉我,内地计算机系的学生,讲起C++语言理论技术来一套一套,但是与实际工作要求的却又有太大的差距,更没什么创新。因此一些企业老总私下告诉我,不喜欢用计算机专业毕业的学生,因为聘用来没什么用,学校学到的东西与社会要求的距离太远太远,这也是近年来计算机专业毕业学生很多找不到工作的原因。
电脑报:内地计算机教育出现这种不实用、与社会距离太远的原因是什么呢?
郭位:课程与企业应用是一方面。现在IT产业日新月异,导致企业信息化进程脚步也大大加快。但问题是,现在很多学校计算机课程还是多年前的,过时了却舍不得丢,应该把一些老的课程赶快去掉。
另一方面,也是我认为很重要的一个因素,学校、学生和企业离得太远,或者他们不知道企业、社会需要一个怎样的计算机毕业的学生。许多内地学生会背课本,会多种计算机语言和编程,但我想问下中国的大学,有多少学生去微软、英特尔这样的企业学习和访问过?都不走进企业,怎么知道企业、社会需要怎样的学生?
电脑报:这是不是意味着,对于内地计算机教育,甚至内地教育来说,除了抛弃过时的课本,与企业、社会搭建一个良好的沟通桥梁更重要?
郭位:我觉得这才是大学紧随时代理念脚步。学生一定要走进英特尔、微软等等公司去做研究,去访问和学习,这样才可以让学生有更多创新意识,知道如何去学习更多实际应用的东西。研究和教学是大学教育的一体两面,密不可分。如果只是满足知晓的欲望,没有探讨和研究,大学就不会有进步;如果只有研究和探讨,而不应用、传播和传承,大学就成了研究院,中国大学不应成为研究院。
但让学生走进英特尔、微软去学习和访问,是需要政府、教育部门、学校、企业四方搭建一个良好沟通桥梁的。在我看来,研究为教学之本,而教学又可为学生提供研究机会,研究又为社会发展作出贡献。
电脑报:中国内地大学的教材、教育模式已经跟不上社会形势的发展,那香港呢?
郭位:中国香港在教育上比内地稍微好一点,更强调学以致用,在香港有一个好的特性,就是我们常常鼓励学生去企业实习,所以我认为应该多鼓励学生去实习,老师也应该到企业去实习,将大学体制和企业相结合、相关联起来。
做学问,我们在大学里应该采取入世的观点,在古时候读书人要隐居到山林里去的,可是现在我们做学问,对社会有直接的贡献,所以大隐隐于世,要在城市中修道,对社会有贡献,在这种出发点里面,我们希望能够推广我们城市大学的教学研究,以及对社会的贡献。
电脑报:你为何一再强调,包括计算机在内的教育应走进企业?
郭位:我跟你举个例子,这句话讲得可能太直接了,在全世界的大学我都这么讲,包括香港的大学,包括美国的,甚至于我也敢说包括中国内地的大学,都要比企业界的发展晚几年。原因是因为这样的,我们大学如果做的不好,不会倒闭,可是企业界如果做得不好,大家知道随时会倒闭的。那么英特尔、微软、联想会不会倒闭?很难倒闭。因为人家随时都在创新,都在跟随社会发展、社会实际需求。
电脑报:大学体制和企业相结合,您的这个想法比较具有前瞻性,也带有一种危机意识。但似乎从目前看来,中国内地计算机教育很难做到。
郭位:我们至少应该有一个危机意识。我必须强调,大学虽然跟企业不一样,大学不讲如何赚钱,企业是为了赚钱。可是企业很多精神,比如说创新意识、应用、与社会接轨上做得很好,这些我们大学应该做到。
我比较喜欢“问题驱动式研究”这个说法,其精神虽与“应用研究”一致,但这是指涉较为具体而适时的问题。该怎么理解呢?我们常常讲大学面很广,学到了很多基础知识,这个是对的,可是有时候我们就产生一种借口,就是大学不做那么好也没有关系,但是让大学能够赶上时代潮流,一定有一个问题驱动,从大学管理来讲,还包括我们用的经费,是不是用到刀口上,我们给学生的教育,是不是对学生的长远有帮助,我们现在开一门课是不是真的有效益,这门课是不是有道理,我们教育学生的,我们给学生讲课,受到学生评价,是不是有可以改进的空间。换句话说,我们不能够再有很多借口不做好。这也是问题驱动式的一部分。这是一种概念,而不是一个借口。
北京理工大学软件学院院长丁刚毅:计算机教育需要改革
电脑报:从你的工作经历来看,计算机教学改革的主要目的是什么?
我们软件学院七八年的示范实践不能说代表高校计算机专业教育的情况,但它的示范意义肯定对计算机专业教育有一些借鉴作用,教育部高教司设立35所示范软件学院的目的,也是在全国高校的计算机类专业中推广示范性软件学院建设经验,深入进行产学合作。
2001年教育部和国家计委联合批准试办35所示范性软件学院,主要有两个目的:一是推动软件产业发展,满足国家发展需要;二是为积极探索高等教育体制改革寻找突破口。在软件示范学院建设初期,教育部长周济就说过:软件学院的人才培养计划、课程安排千万不能把计算机学院的东西照搬过来,要有新的思路。希望通过软件学院的建设为我们高等教育的改革发展带来进一步的试验和突破。
现在的高校教育一种是致力于拔尖人才的培养,另一种是工程师教育,毕竟大多数毕业生出去后是要干活的,不是从事研究工作。现在2000多万的在校生,需求与教育肯定有问题,大量的毕业生不能直接为企业所用,软件学院的示范改革,不只在计算机教育本身,对社会需求量大的行业也是一种探索。
电脑报:你认为计算机教育应该如何与社会需求结合,主要问题在什么地方?
目前的软件工程教育有三大问题:第一是提前性未把握。像微软的技术,今天学习的东西,过两年又变了,更新、变化频繁。第二个是工程教育很昂贵,因为更新速度快,教育环境、模式、实践环节都要变。第三是计算机高端研究门槛太高。产业标准、技术标准等研究,大家都知道全世界受制于几大公司,与其他行业不一样。
软件技术的发展使得教材也在不断变,一般教材不能用上10年,在北理工软件学院,教材两年就要变,有的一年也在改变。现在的软件已突破了传统意义上的软件概念,融合了工程的特点,具有交叉性、复合性,对传统学科分类要重新认定。
电脑报:从未来的方向来看,计算机教育,尤其是软件应用重点在什么地方?
软件应用重点在工业软件和消费电子。国家在“十一五”规划中,强调要提高工业的信息化程度,希望工业化、信息化融合,所以在工业软件上是一个努力的方向。
在消费电子领域,软件已不再是介质而是一种消费内容,7亿手机用户的需求给软件很大的挑战。
电脑报:在实际改革中,作为学校,会做怎样的调整?
我们要把握好自己的定位,课程内容的设置一定要兼顾基础、兼顾社会,还要考虑5年以后的发展,否则就麻烦了,学生不能很好工作,有老师的责任。
软件学院将大量的实践环节加入到学习过程中,并增加设计能力、管理、服务、团队合作等内容的课程,这些课程占到学习课程的30%内容。课程设置模块化,大的架构不变,新的内容以模块化增加,老师、学生都便于选择,课程设置变成一个动态体系,确保适应软件行业每年30%的变化。
为此,北理工软件学院的教师也变成三部分,本校教师在计算机基础教育上课较多,一些新的专业,需要外聘教师,另外企业请来的设计师担当一部分教学内容,如微软、IBM、英特尔、SAP等公司都有设计师以上的专业人才来授课。
未来的变革将按照国际流行的CDIO工程化教育评估体系进行,这是美国麻省理工学院和另外一所高校共同提出的,国际上比较认可的一种工程教育。丁院长自豪地说软件学院今年的就业率是100%,这是实在的数字,而不是签约率。
posted @ 2009-09-24 13:07 duanx 阅读(276) 评论(10) 编辑
回答:很简单!使用 HttpContext.Current 获取 Context 对象,然后访问 Context.Session。
using System; using System.Web; namespace Context { // 演示从业务类中访问 ASP.NET 内部会话 public class UseSession { public void SomeMethod() { HttpContext _context = HttpContext.Current; // 获取请求上下文 object _value = _context.Session["TheValue"]; // 访问内部会话 } } }
我如何从自己的业务类中生成 ASP.NET 跟踪语句?
回答:很简单!使用 HttpContext.Current 获取 Context 对象,然后调用 Context.Trace.Write()。
[Visual Basic]
Imports SystemImports System.WebNamespace Context ' 演示从业务类中生成一个 ASP.NET' 跟踪语句。
Public Class TraceEmit
Public Sub SomeMethod()
Dim _context As HttpContext = HttpContext.Current ' 获取请求上下文
_context.Trace.Write("在 TraceEmit.SomeMethod 中") ' 使用上下文编写跟踪语句
End Sub End ClassEnd Namespace
[C#] using System; using System.Web; namespace Context { // 演示从业务类中生成一个 ASP.NET // 跟踪语句。 public class TraceEmit { public void SomeMethod() { HttpContext _context = HttpContext.Current; // 获取请求上下文 _context.Trace.Write("在 TraceEmit.SomeMethod 中"); // 使用上下文编写跟踪语句 } } }
回答:处理应用程序的 BeginRequest 和 EndRequest 事件,并使用 Context.Response.Write 生成页眉和页脚的 HTML。
从技术上讲,可以在 HttpModule 中或通过使用 Global.asax 处理 BeginRequest 这样的应用程序。HttpModules 的编写比较困难,而且正如本例所示,简单应用程序使用的功能通常不使用它。因此,我们使用应用程序范围的 Global.asax 文件。
与 ASP 页一样,一些固有的 ASP.NET 上下文已提升为 HttpApplication 类的属性,其中的类表示 Global.asax 继承类。我们不需要使用 HttpContext.Current 获取对 Context 对象的引用;它在 Global.asax. 中已可用。
本例中,我将 <html> 和 <body> 标记以及一条水平线放入页眉部分,而将另一条水平线及相应的结束标记放入页脚部分。页脚还包含版权消息。运行结果应如下图所示:
图 1:浏览器中呈现的标准页眉和页脚示例
这是一个简单的示例,但您可以很容易地将它扩展,使其包含标准的页眉与导航,或者仅输出相应的 <!-- #include ---> 语句。请注意,如果希望页眉或页脚包含交互内容,应考虑使用 ASP.NET 用户控件。
[C# Global.asax] <%@ Application Language="C#" %><script runat="server"> void Application_BeginRequest(Object sender, EventArgs e) { // 生成页眉 Context.Response.Write("<html>\n<body bgcolor=#efefef>\n<hr>\n"); } void Application_EndRequest(Object sender, EventArgs e) { // 生成页脚 Context.Response.Write("<hr>\2002 Microsoft Corporation 版权所有\n"); Context.Response.Write("</body>\n</html>"); }</script>
如何在用户经过身份验证后显示欢迎信息?
回答:测试 User 上下文对象以查看用户是否经过身份验证。如果是,还要从 User 对象获取用户名。
如上,复制了几行代码,不像VS里的那么好看哦,看见园子里的大虾们用的花括号前面还能折叠呢,而且插入框里还不支持输入法的中文状态.
大家用的是哪个
posted @ 2009-09-11 23:53 duanx 阅读(94) 评论(0) 编辑
posted @ 2009-09-11 00:11 duanx 阅读(47) 评论(1) 编辑
关于上下文 HttpContext
Susan Warren
Microsoft Corporation
2002年1月14日
编写 Web 应用程序时最常见的问题之一,是要让代码知道它的执行上下文。让我们通过一个简单的例子(即个性化页面)来说明这个问题:
请登录。
与
欢迎 Susan!
虽然看起来很简单,但即使是这一小段 Web UI,仍然需要好几段信息,而且每次请求该页时这些信息都会发生变化。我们需要知道以下内容:
更通常的问题是,每次请求该页时,唯一的上下文是什么?以及如何编写代码以便能考虑到此信息?
事实上,由于 HTTP 的无状态特性,Web 应用程序可能需要跟踪许多不同的上下文片段。当用户与 Web 应用程序交互时,浏览器将一系列独立的 HTTP 请求发送到 Web 服务器。应用程序自身必须将这些请求组织成令用户感到愉悦的体验;同时,知道请求的上下文也十分关键。
ASP 引入了几个内部对象,如 Request 和 Application,以便帮助跟踪 HTTP 请求的上下文。ASP.NET 完成下一步骤,并将这些对象以及其他几个与上下文有关的对象捆绑在一起,形成一个极为方便的内部对象 Context。
Context 是 System.Web.HttpContext(英文)类型的对象。它作为 ASP.NET Page 类的属性公开。也可以通过用户控件和业务对象(下文中详细介绍)获得该对象。以下是 HttpContext 形成的对象的部分列表:
| Application | 值的关键字/值对集合,可由应用程序的每个用户访问。Application 是 System.Web.HttpApplicationState 类型。 |
| ApplicationInstance | 实际运行的应用程序,它公开一些请求处理事件。这些事件在 Global.asax、HttpHandler 或 HttpModule 中处理。 |
| Cache | ASP.NET Cache 对象,它提供对缓存的编程访问。Rob Howard 的 ASP.NET Caching 专栏(英文)对缓存作了详尽介绍。 |
| Error | 处理页时遇到的第一个错误(如果有)。有关详细信息,请参阅 Rob 撰写的 Exception to the Rule, Part 1(英文)。 |
| Items | 关键字/值对集合,可以用来在参与处理同一请求的所有组件之间传递信息。Items 是 System.Collections.IDictionary 类型。 |
| Request | 有关 HTTP 请求的信息,包括浏览器信息、Cookies 以及在窗体或查询字符串中传递的值。Request 是 System.Web.HttpRequest 类型。 |
| Response | 用于创建 HTTP 响应的设置和内容。Response 是 System.Web.HttpResponse 类型。 |
| Server | 服务器是一个实用程序类,带有一些有用的帮助器方法,包括 Server.Execute()、Server.MapPath() 和 Server.HtmlEncode()。Server 是 System.Web.HttpServerUtility 类型的对象。 |
| Session | 值的关键字/值对集合,可由应用程序的单个用户访问。Session 是 System.Web.HttpSessionState 类型。 |
| Trace | ASP.NET 的 Trace 对象,提供对跟踪功能的访问。有关详细信息,请参阅 Rob 撰写的文章 Tracing(英文)。 |
| User | 当前用户(如果已经过身份验证)的安全上下文。Context.User.Identity 是用户的名称。User 是 System.Security.Principle.IPrincipal 类型的对象。 |
Context 中的部分对象也已升级为 Page 中的顶级对象。例如,Page.Context.Response 和 Page.Response 指的是同一个对象,因此,以下代码是等价的:
Response.Write ("您好") Context.Response.Write ("你好")
Response.Write ("您好"); Context.Response.Write ("你好");
还可以从业务对象使用 Context 对象。HttpContext.Current 是静态属性,可以很方便地返回当前请求的上下文。这在各种方法中都十分有用,下面仅列举一个从业务类的缓存中检索项目的简单示例:
' 获取请求上下文 Dim _context As HttpContext = HttpContext.Current ' 获取缓存中的数据集
Dim _data As DataSet = _context.Cache("MyDataSet")
// 获取请求上下文 HttpContext _context = HttpContext.Current; // 获取缓存中的数据集
DataSet _data = _context.Cache("MyDataSet");
Context 对象为一些常见的 ASP.NET“如何…?”问题提供了答案。也许,说明此宝贵对象的价值的最好方法,就是在操作中将它展示出来。下面是一些我所知道的最巧妙的 Context 技巧。
回答:很简单!使用 HttpContext.Current 获取 Context 对象,然后调用 Context.Trace.Write()。
Imports SystemImports System.WebNamespace Context ' 演示从业务类中生成一个 ASP.NET' 跟踪语句。
Public Class TraceEmit
Public Sub SomeMethod()
Dim _context As HttpContext = HttpContext.Current ' 获取请求上下文
_context.Trace.Write("在 TraceEmit.SomeMethod 中") ' 使用上下文编写跟踪语句
End Sub End ClassEnd Namespace
using System;
using System.Web;
namespace Context
{ // 演示从业务类中生成一个 ASP.NET // 跟踪语句。
public class TraceEmit
{
public void SomeMethod()
{
HttpContext _context = HttpContext.Current; // 获取请求上下文
_context.Trace.Write("在 TraceEmit.SomeMethod 中"); // 使用上下文编写跟踪语句
}
}
}
回答:很简单!使用 HttpContext.Current 获取 Context 对象,然后访问 Context.Session。
Imports SystemImports System.WebNamespace Context ' 演示从业务类中访问 ASP.NET 内部 ' 会话。
Public Class UseSession
Public Sub SomeMethod()
Dim _context As HttpContext = HttpContext.Current ' 获取请求上下文
Dim _value As Object = _context.Session("TheValue") ' 访问内部会话
End Sub End ClassEnd Namespace
using System;
using System.Web;
namespace Context{ // 演示从业务类中访问 ASP.NET 内部
public class UseSession { // 会话
public void SomeMethod() {
HttpContext _context = HttpContext.Current; // 获取请求上下文
object _value = _context.Session["TheValue"]; // 访问内部会话
}
}
}
回答:处理应用程序的 BeginRequest 和 EndRequest 事件,并使用 Context.Response.Write 生成页眉和页脚的 HTML。
从技术上讲,可以在 HttpModule 中或通过使用 Global.asax 处理 BeginRequest 这样的应用程序。HttpModules 的编写比较困难,而且正如本例所示,简单应用程序使用的功能通常不使用它。因此,我们使用应用程序范围的 Global.asax 文件。
与 ASP 页一样,一些固有的 ASP.NET 上下文已提升为 HttpApplication 类的属性,其中的类表示 Global.asax 继承类。我们不需要使用 HttpContext.Current 获取对 Context 对象的引用;它在 Global.asax. 中已可用。
本例中,我将 <html> 和 <body> 标记以及一条水平线放入页眉部分,而将另一条水平线及相应的结束标记放入页脚部分。页脚还包含版权消息。运行结果应如下图所示:
图 1:浏览器中呈现的标准页眉和页脚示例
这是一个简单的示例,但您可以很容易地将它扩展,使其包含标准的页眉与导航,或者仅输出相应的 <!-- #include ---> 语句。请注意,如果希望页眉或页脚包含交互内容,应考虑使用 ASP.NET 用户控件。
<FONT face="Arial" color="#cc66cc" size="5">常规页面内容</FONT>
<%@ Application Language="VB" %><script runat="server">
Sub Application_BeginRequest(sender As Object, e As EventArgs) ' 生成页眉
Context.Response.Write("<html>" + ControlChars.Lf + _"<body bgcolor=#efefef>" +
ControlChars.Lf + "<hr>" + _ ControlChars.Lf) End Sub
Sub Application_EndRequest(sender As Object, e As EventArgs) ' 生成页脚
Context.Response.Write("<hr>" + ControlChars.Lf + _ "2002 Microsoft Corporation 版权所有" +
_ ControlChars.Lf + "</body>" + ControlChars.Lf + "</html>")
End Sub </script>
<%@ Application Language="C#" %><script runat="server">
void Application_BeginRequest(Object sender, EventArgs e)
{ // 生成页眉
Context.Response.Write("<html>\n<body bgcolor=#efefef>\n<hr>\n");
}
void Application_EndRequest(Object sender, EventArgs e)
{ // 生成页脚
Context.Response.Write("<hr>\2002 Microsoft Corporation 版权所有\n");
Context.Response.Write("</body>\n</html>");
}</script>
回答:测试 User 上下文对象以查看用户是否经过身份验证。如果是,还要从 User 对象获取用户名。当然,这是本文开头的示例。
posted @ 2009-05-17 23:05 duanx 阅读(492) 评论(1) 编辑
当我们在层之间调用一些方法来获取数据时,将怎样接受数据呢?是用DataSet/DataTable,还是用自定义实体类对象集合呢?这是.NET架构师和开发人员之间争论最激烈的一个话题.在GOOGLE上搜索诸如 DataSet vs custom entities,DataSet vs custom collections 或者DataSet vs domain object,可以看到许多关于该主题的讨论,这两种方法有各自的优缺点,在不同的体系结构中都有自己的作用.
DataSet/DataTable的缺点可以分为三类:性能和扩张的局限性,数据的表现形式,业务规则验证.
如果只需用传递一行数据,仍需要创建和传递一个完整的DataSet/DataTable(这需要一些系统开销)因为它是驻留内存的小型数据库,所以需要一定得系统开销.它与RDBMS中的关系表格模型密切相关,没有一个清晰的,可自定义,面向对象的数据表示方式.尽管同IDE集成的很好,但每次数据库结构发生一点更改,就必须重建类型化DataSet,这比自定义集合类难度大.而最让开发人员头疼的是很难对DataSet添加自定义业务和验证逻辑.
当然DataSet也不是意味着在设计中完全没有用处.实际上在从DAL向BLL(不是BLL到UI)传递数据时偶尔会用到DataSet.在DAL中需要用到ADO.NET中的类,因为DAL是用数据库交互的地方,因此利用DataSet还是有意义的,并且只要生成了DataSet/DataTable,不需要额外的系统开销就能将它传递到BLL.而BLL才是添加验证逻辑的地方,并且在验证时它能将DataSet/DataTable中的数据转换到自定义的业务对象集合中(ToList<T>()等),这些自定义集合能被传递给UI,在UI中有一组功能强大的针对数据的OOP类,可以进行数据绑定,并且易于使用.
使用自定义的业务实体对象集合则显得很灵活,它可以用在两个地方:DAL和BLL之间,BLL和UI之间.在第一种情况下很简单,只是对数据库中的数据象征性的进行封装,没有对数据库进行增,删,改的方法.在这种情况下,实体类作为一个容器来保存两个层之间传输的数据.
第二种情况下,类则要复杂些,不但要封装数据,还要有对其父对象和子对象进行引用的其他属性,还要操作数据的实力方法.也就是常说的域对象(domain object)而不仅仅是实体类,一个实例完全代表了域中的一个元素(一份订单,一个雇员...)相对使用
自动创建的强类型化的DataSet(有现成的排序和过滤功能)创建实体类和域对象更复杂,要写更多代码,但是更灵活,占用较少的内存,因为使用了按需载入数据模式(lazy-load),只载入需要的数据,而不是将单个查询得到的所有内容同时载入.还可以给域对象增加自定义验证逻辑
tips:使用自定义对象更灵活,更优雅,适合需要很多验证逻辑的场景中,但是需要花费额外时间和精力去设计编写代码,这要自定义实体类才能显示出优势,如果只是简单的取得数据,那就用强类型化的DataSet,更方便快捷.
更多资料请看 Marco Bellinaso 写的网站开发解析一书
下一篇:使用存储过程还是使用SQL文本?
posted @ 2009-05-14 11:35 duanx 阅读(1946) 评论(25) 编辑
posted @ 2009-05-12 19:07 duanx 阅读(1243) 评论(19) 编辑
posted @ 2009-05-12 16:08 duanx 阅读(116) 评论(2) 编辑
posted @ 2009-04-23 15:55 duanx 阅读(361) 评论(1) 编辑