作者:易勋 软件开发系05级 来源:北软博客  ithao123整理 2007-06-05

摘要
  个人认为,就软开的学生来说,下面的几门课程比较重要,也是比较好,能够学到很多东西的:算法分析与设计,Internet高级编程,程序开发环境分析与实践,操作系统高级课程,软件构件与中间件技术,软件设计模式,数据库设计与实践。

  又是新的一年了,我想同我们过去一样,刚来的新生一定对如此多的专业,如此多的课程感到迷茫。想起去年的时候,我们何尝不是这样?好在学长们都给予了耐心的解答。转眼间,偶也来软院一年了,算是抛个砖引个玉吧,给软件开发方向的同学们一点选课的建议,不妥之处欢迎大家拍砖。另外,毛主席说过,没有调查就没有发言权,所以下面我要说的课程全是我听过或者选过的课。

  软开总的来说,是个比较泛的专业,不像嵌入式和IC,特点很鲜明(至于今年新开的语言工程系和金融工程系,我没有看到全部的开课计划,不便说明。),说实话,现在我也没搞清楚软开的定位到底是什么,好像有点偏企业级应用。

  说到企业级应用,想多唠叨两句,个人觉得在学校很难学好企业级应用,因为学校毕竟没有那个环境,对于大型的企业级系统,分布式,集群,大并发,文件系统和数据库系统在这种情况下该如何控制等知识和经验基本很难涉及。课堂上的一些J2EE/.Net的项目只能算是Toy,也许金融工程系的新开就是为了解决这个问题的吧:)还有一点,软开关于企业计算方面的课比较多,有数据库设计与实践,面向对象技术,软件构件与中间件技术,软件开发案例分析,软件设计模式等,这些课程的内容和侧重点虽然不同,但最后的课程项目都是做一个Web应用,所用到的知识基本都是J2EE再加上数据库的那一套。注意,我这里所说的J2EE的概念比较广泛,不单单指EJB的东西,说实话,反反复复做得还真是有点烦了,而且课程项目时间很紧,加上大家又都没有什么经验,做出来的东西很多都离真实的项目要求相去很远。去年我们有人建议能将这些课程的项目合并成一个,减轻负担。

  偶个人也建议学院能够合一下,比如要求软开专业的一年学习后必须能拿出一个健壮的企业级应用系统,然后认认真真能够做上半年一年的,做精做好,能够经得住一定规模的压力测试,比每个课都泛泛的做一个要好得多得多!因为想要撑得起访问量和访问速率,需要数据库的调优,需要中间件的控制,而且在反复的代码修改中,自然就会学到面向对象,设计模式带来的巨大便利,也能够理解软件工程的重要,可以说,一个做精的项目把所有这些课程全部囊括进来了。

  Okey,说了这么多企业级应用的话题,就此打住,下面说说该如何选课。

  个人认为,就软开的学生来说,下面的几门课程比较重要,也是比较好,能够学到很多东西的:算法分析与设计,Internet高级编程,程序开发环境分析与实践,操作系统高级课程,软件构件与中间件技术,软件设计模式,数据库设计与实践。

  算法分析与设计是屈婉玲老师开的,没得说,经典中的经典,也是将来面试微软,google的必备利器。选这课的人非常多,建议上课勤快点,坐前排的位置认真听,最好课前先预习一下,因为3小时的课程容量还是很大的,想持续的跟上屈老师的思维还是有点难度。最后说明一下,最后的考试是比较简单的,如果单为应付考试,随便都能过,但要想一年后能对付刁钻的面试,建议不仅要认真听讲,还要好好看书,对各种算法及其应用如数家珍。

  Internet高级程序设计是李素科老师开的,也是相当的精彩,能够将纯技术性的课程讲得妙趣横生,笑声不断真的是不简单,有些同学将其与新东方的罗永浩相比,还有些同学的space里记录了李氏语录,大家有兴趣可以查一查。这门课的作业和项目一定要认真做,收获会非常之大,对Linux操作系统,对C/C++语言编程都会有更深的了解。期末考试同样比较简单,但还是那句话,如果想找到好工作,认认真真搞通每一个细节吧,虽然大多考试都不考。

  程序开发环境分析与实践是王亚沙老师任教,课堂上也同样是笑声不断。可以说,是王亚沙老师对C++语言的理解十分透彻,并且理解吸收成为自己的东西,才能打出精妙而恰当的比方,使大家在听故事中对C++的许多原理就掌握了。需要说明的是,这门课关于C++语言的部分只有一个月,感觉短了些,其余都是MFC的内容,主要是应用,个人对MFC不是太感兴趣,所以建议如果同样对MFC不敢兴趣的同学可以不选这个课,而选择旁听。当然,这课同样会爆满,记得勤快点坐前排:)上学期期末的时候还跟王亚沙老师交流过,觉得他讲MFC太浪费,呵呵,他说他想讲设计模式,可惜没机会。我想他讲设计模式一定会非常有趣。

  操作系统高级课程是陈向群老师开的,这门课可以让你对熟悉一下Windows API编程,如多进程,多线程,IPC,磁盘IO等等,也能熟悉Linux内核,如进程调度,中断,文件系统等。还是那句话,认真做作业,写报告,会让你受益匪浅。

  软件构件与中间件技术是王千祥老师的课,这门课由于学分的关系我没有选,但起初的几个月一直在旁听,从听课中感觉王老师思路清晰,讲课层次分明,很不错。课程最后的项目是一个J2EE的项目。如果想向企业级应用方向发展的同学建议好好学习这门课。

  软件设计模式的老师是David Kung,很有名的老师,讲课也很不错,对设计模式的一些东西点得较透。但很遗憾的是David Kung时间不是很多,只每年暑期来一下,今年我们的授课只有一个月,每周两次,觉得设计模式不太适合这么短的时间上完,设计模式的思想需要慢慢体会,并结合大量的案例去比较,去分析,各种模式的利,弊,微妙的差别等等都在这些案例中去理解,去升华。想好好学的同志还是自己认认真真看书吧,在平时也多去应用,多去观察。

  数据库设计与实践是须凌老师的课,老实说,课程内容有点枯燥,但项目会让新人收获很多,期末考试也有一定难度,在准备的过程中能够让你对数据库的原理加深理解,如索引,锁机制,查询的解析和优化等。

  好了,上面都是软开的课,但我们选课并不拘泥于系,其他系的有些课程也是非常适合软开的同学的。比如希望向企业级应用方向发展的同学,可以选一点电子服务的课,不过个人觉得电服的课虽然会涉及一些企业级应用的高级内容,但实践性不强——纸上得来终觉浅啊!也许新开的金融工程系可以弥补这方面的不足。

  另外,学校今年新开了语言工程系,因为现在对人类语言的分析和处理比较热门,其应用如搜索引擎,机器翻译,语义理解等都是很热门的研究方向;去年这个系没有开起来,但是常宝宝老师率先开设了自然语言处理的课程,非常精彩,常老师本身讲课清晰,通俗易懂,让我们这些之前没有太多语言处理基础的同学能够很快入门,课程中也介绍了许多实用的技术,如切词,词性标注等,其中的各种算法和优化策略(n-gram,隐马尔可夫等)也许会对今后敲开google的大门很有帮助:),最后的课程项目是做一个切词的应用程序,做完后还是很有成就感的,后来我们还在此基础上完成了一个搜索引擎作为Internet高级程序设计的项目,可以说,这两门课是绝配:)。不过遗憾的是这门课只有两个学分,半学期就结了,只做一个项目也觉得锻炼不足,个人建议学院能够把这门课改为3学分,然后做两个项目(如切词和词性标注),这样能对隐马尔可夫模型有更深的了解,这些知识在切词,搜索,语音识别等领域都用得上。

  好了,不知不觉罗嗦了这么多,因为并不想简单的说应该选什么不应该选什么,而是想告诉大家这些课都讲些什么,你从中能够收获什么,然后大家根据自己的兴趣爱好还有发展方向做出自己的选择。这些也算是个人在软院一年的心得体会吧,不妥之处还请见谅和指正。

  多说一句,上面我说的课程大都比较重,所以选之前想好,自己有不有充足的时间,能不能沉得下心去完成这些课程,如果想混劝你还是省着这3000块钱吧!

分类: 程序人生 北软经验


关于ithao123.COM | 联系方式 | 免责声明 | 友情链接