北大屈婉玲老师给ssm pku算法小组的一封信

北大屈婉玲老师给ssm pku算法小组的一封信

http://huxchina.spaces.live.com/blog/cns!541657a220b23c14!184.entry
一、先介绍一些相关的文件精神
2003年12月教育部设立“软件工程课程体系”研究项目,由清华、北大、南大、上海交通大学与北航等高校联合组织了课题组,深入分析ACM和IEEE发布的《Computing Curricula-Software Engineering》,结合国内部分著名高校软件学院的教学成果,形成了面向大学本科教育的《中国软件工程学科教程》(简称CCC2002-SE,清华大学出版社,2004)。在这个教程中有以下一些基本观点:

1. 软件工程的定义
?软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则。
?软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地解决软件问题。
?软件工程是将系统的、规范化的、可定量的方法应用于软件的开发、运行和维护。
软件工程建立在计算机科学和数学的基础之上,但已经超出了以这些技术为基础的学科范畴。

2. 软件工程与计算机学科的关系
关于软件工程的一个普遍的误解是认为软件工程主要是面向过程的活动(例如需求、设计、质量保证、过程改进和项目管理等),依照这种观点,获得软件工程方面的能力需要很强的工程背景、对软件开发过程的熟悉和最低限度的计算背景,其中也包括使用一种或多种编程语言的经验。事实上,这是完全不够的,这种误解是由于对软件工程的本质和挑战认识不全面而产生的。

由于软件的不可见性和软件操作的离散性,软件工程具有与其他工程学科不同的特点,它需要将数学与计算机科学原理与开发有形产品的工程实践相结合。软件工程以计算机科学和数学为基础,力求开发系统模型和可靠技术以产生高质量的软件,它涉及了从基本理论和原理到甚至超出本学科之外的开发实践的各个方面。虽然我们不能期望每一个软件工程师都是计算学科的专家,但是他们对相关知识有一个基本的理解,并掌握某些方面的专门技术,第4章描述的软件工程教育知识体系反映了软件工程对计算机科学的依赖。

3.  软件工程教育知识领域
软件工程教育知识体系包含以下10个知识领域:
计算基础、数学和工程基础、专业实践、软件建模与分析、软件设计、软件验证与确认、软件演化、软件过程、软件质量、软件管理
其中计算机科学基础,最少140学时,包含的知识点为:

知识点程度要求相关知识点
CMP.ef.1程序设计基础(控制和数据、类型、递归)应用必要
CMP.cf.2算法、数据结构与复杂性应用必要
CMP.cf.3问题求解技术应用必要
CMP.ef.4抽象(用于封装和分层)应用必要
CMP.ef.5计算机组织结构掌握必要
CMP.ef.6系统基本概念掌握必要
CMP.ef.7基本用户因素(I/O,错误信息,鲁棒形)掌握必要
CMP.ef.8基本开发人员因素(注释、结构、可读性)掌握必要
CMP.ef.9程序设计语言基础应用必要
CMP.ef.10操作系统基础掌握必要
CMP.ef.11数据库基础掌握必要
CMP.ef.12网络通信基础掌握必要
CMP.ef.13编程语言的语义学建议

二、谈一点自己的看法
1. 软件工程师不是仅仅遵照各种技术标准来设计与生产软件,就像设计一个建筑,不但需要技术,也需要灵感与创新。世界上每天都有新的建筑面世。有的建筑誉满全球,成为建筑史上的丰碑;有的建筑尽管符合标准,但是毫无声息,不会留下任何痕迹。要想设计优秀的软件,需要软件工程人员具有良好的素质,因为良好的素质是创新的基础。算法设计与分析课程是培养良好的素质,提高分析问题、解决问题能力的课程之一。

2.  通过算法与数据结构课程希望达到的要求:
?将实际问题加以形式化描述——建立数学模型
?对问题难度的基本认识——计算复杂性理论
?确定求解问题的好方法——算法设计与分析
?算法的实现——数据结构的选择与实现
  
3.  ACM竞赛是一项程序设计大赛,是为对程序设计有着特殊兴趣的学生设立的。作为竞赛,它涉及到问题的理解、求解方法(算法)的选择、数据结构的应用、程序设计的技巧等诸方面的知识与能力的考察。但是考虑到趣味性和竞赛的可操作性,题目的类型常常集中于某些方面,对算法的考虑与实际问题也有着较大的区别。比如:题目涉及的条件比较单一,很少有综合性的问题;基本上没有涉及建模方面的要求;输入规模一般不太大,有时候即使使用穷举的蛮力算法(程序代码比较简单,时间稍微长一点)也可以得到解;因为这个竞赛只检查输出结果,不管用什么算法,只要能得到正确的结果就算做出了一道题,而优胜的条件就是能够做出的题目的个数。竞赛可以考察参赛人员对程序设计的熟练程度、基本算法与数据结构的理解与使用能力、几个队员的合作是否默契有效、甚至对题义的理解或英语的阅读能力、输入输出格式的熟悉程度等。答案的简单与题目的趣味性也是命题时要考虑的因素。这个竞赛对于培养学生的程序设计能力、快速反应能力、合作精神、心理素质都是有益的。但是,这个竞赛不能代替教程中的核心课程,毕竟竞赛所涉及到的面比较窄,与核心课程所需要的比较广的基础和按部就班的训练不是一回事。曾经有人对中国许多数学奥赛的优胜者做了跟踪调查,想了解这些当初的少年天才有多少人成年后在数学领域做出了杰出的贡献。结果所占比例并不多。
我认为ACM竞赛完全是一种兴趣爱好,不能代替算法课程的基本功。

4.  算法与复杂性理论的经典著作
国际上著名的算法教材有:
?Aho, Hopcroft, Ullman, The Design and Analysis of Computer Algorithms, Pearson Education, Inc. 1974,机械工业出版社(影印版),2006.
说明:这是第一本全面深入阐述算法设计与分析方法和技术的经典著作,它奠定了算法
这个领域的基础。至今国外不少大学仍将它列为教学参考书。
?Thomas H. Cormen, Charles E. Leiserson, etc,Introduction to Algorithms(Second Edition),The MIT Press, 2001, 高教出版社(影印版),2002.
说明:这是一本近年出版的MIT的著名教材,国外许多大学目前正在使用它。内容丰
富,叙述严谨。由于国外部分大学的数据结构与算法的基础部分合成一门课,因此这本
教材不是完全按照算法设计与分析的框架组织教学内容,而是将算法与数据结构紧密结合(对于熟悉数据结构的学生,可以略去不少内容)
?Jon Kleinberg, Eva Tardos,Algorithm Design, Pearson Education, 2006,清华大学出版社,2006。
说明:美国康奈尔大学(Cornell University)的教材,刚出来的新书。图灵奖得主姚其智教授2006春在清华大学上课将要使用的教材。这本书内容丰富,叙述通俗易懂。与MIT教材的不同点在于,它完全按照算法设计的思路组织内容:从问题入手,将其形式化,然后提出不同的算法设计思路,再证明算法的正确性,分析算法的复杂度。同时它由浅入深,从算法分析,到问题难度分析,再到复杂性理论,与我们课程的教学思路一致。我与张立昂教授正在翻译这本书。
还有一本算法的教材,谈不上是经典,但是比较实用。
?Ellis Horowize, Sartaj Sahni, Sanguthear Rajasekaran,W H Freeman and Company 1997,冯博琴、叶茂、高海昌译,计算机算法(C++版),机械工业出版社,2005。
说明:本教材包含许多串行与并行算法,所有的算法都用C++描述,在实践中需要设计算法时,可以作为参考。
复杂性理论的主要著作:
?M. R. 加里, D. S. 约翰逊, 张立昂等译,计算机和难解性 NP完全性理论导引,
       科学出版社, 1987.
   说明:这本书堪称NP完全理论的经典著作,它的英文版本是第一部阐述这个理论的教材,尽管出版了几十年,仍旧有着参考价值,但是这本书在国内可能买不到了。
?堵丁柱,葛可一,王洁,计算复杂性导论,高教出版社,2002.
说明:堵丁柱教授目前是国际上研究计算复杂性理论的著名学者,现任美国米尼苏达大学计算机科学系教授,中科院应用数学所研究员。这本教材包含了许多计算复杂性理论前沿进展的信息,是一本好书。 
?Raymond Greenlaw, H. James Hoover, Walter L. Ruzzo, Limits to Parallel Computation: P- Completeness Theory, Oxford University Press, 1995.     
说明:这本书参照《计算机和难解性》一书的写作风格,将顺序算法的复杂性理论完全推广到并行计算领域,建立了涉及并行计算复杂度的P完全性理论。
其他一些有关计算复杂性理论的著名著作还有:
?Christos H. Papadimitriou, Computational Complexity, Pearson Education, 1994, 清华大学出版社(影印版),2004。

5. 网络是一个交流渠道,我们也从网上查找有关的算法信息。我们研究室有一个算法方向,目前有一个讨论班,大约有10多人参加,目前正在阅读一本有关近似算法的专著。上学期读了一部分,本学期继续进行。
北大未名BBS上有两个版与算法有关:计算理论、算法设计与程序设计竞赛,经常有学生,特别是计算机系、数学系的学生在上面讨论问题。有些问题也可以发到北大计算机系研究生版上,那里有些人也会讨论一些算法问题。

猜你喜欢

转载自blog.csdn.net/qq_34793133/article/details/80721385