计算机科学与技术学科的发展李师贤lnslsx@mail.sysu.edu.cn2007.12.14内容一、历史回顾二、计算机科学与技术的定义三、计算机科学与技术学科教育四、计算机科学与技术学科的基本问题五、发展趋势结束语一、历史回顾1、人类社会的发展阶段2、工程技术学科发展的三个阶段3、计算机科学与技术的发展4、Internet的发展5、计算机科学的发展1、人类社会的发展阶段阶段生产要素农业化社会土地工业化社会资本信息化社会知识2、工程技术学科发展的三个阶段•科学萌芽阶段•技术成长阶段•工程化、产业化成熟阶段科学3、计算机科学与技术的发展(1/2)阶段时期标志发展动力发展速度科学1945年以前数理逻辑数值计算图灵机知识驱动一般技术1945年至1980年一至四代计算机系统软件技术驱动快工程化、产业化1980年至现在标准化、批量生产性能价格比大幅度提高、开发环境日趋完善、工具软件丰富并普及应用市场(应用)驱动很快,但将逐步趋缓计算机科学与技术的发展(2/2)从整机和应用发展的角度划分变革阶段技术应用导向关键技术大型机时代数值计算时代大型机硬件信息处理技术PC时代事务模拟时代计算机平台信息获取技术网络时代知识处理时代网络信息传输技术4、Internet的发展因特网(Internet)万维网(Web)网格(Grid)第一个研究原型1969.10.11980--19891998第一个可用原型19701990.121999第一个标准1964.4(IMP)1974.5(TCP/IP)1994.6(URI)1996.5(HTTP)还没有现在标准总数3180个RPC4611个工作组中国参与标准1(1996.3)0还没有特征实现了计算机硬件的连通实现了网页的连通试图实现互联网上所有资源的全面连通5、计算机科学的发展阶段时间主要事件基本活动研究态度数据收集1950-1960硬件:元器件软件:大量程序语言和实现技术的发现与描述发现和描述计算现象经验科学的态度精细化和抽象1961-1969硬件:软件:对程序语言精细化;发展操作语义和数学语义理论、语言定义技术和形式编译及执行过程模型的若干结构;从事着20世纪50年代发现的计算机和语言的扩充与精细化,发展说明计算机科学现象中已观察到的性质的抽象。数学的态度工艺学1970-转向发展控制大程序的复杂性、价格和可靠性的工具和方法论。工程的态度二、计算机科学与技术的定义1、计算机科学的种种定义2、各发展方向的问题空间3、关于计算机科学定义的启示1、计算机科学的种种定义1、计算机科学是研究与计算机有关现象的科学。(Newell,Perlis和Simon,1967)2、计算机科学是研究算法的科学。(Knuth,1968)3、计算机科学是研究信息结构的表示、变换和解释的科学。(Wegner,1968)4、计算机科学是研究和管理复杂性的科学。(Dijkstra,1969)5、计算机科学技术是研究计算机的设计与制造和利用计算机进行信息获取、表示、储存、处理、控制等的理论、原则、方法和技术的学科。ComputingCurricula2004OverviewReport(2004.6.1)GuidetoUndergraduateDegreeProgramsinComputingForundergraduatedegreeprogramsinComputerEngineeringComputerScienceInformationSystemsInformationTechnologySoftwareEngineeringJointTaskForceforComputingCurricula2004AcooperativeprojectofACM/AIS/IEEE-CSStrawmanDraft1June2004这是在CCCS2001的基础上,根据大家建议提出来的。2、各发展方向的问题空间器件理论应用组织与系统行为CSISITSECE摘自CC20053、关于计算机科学定义的启示(1/3)计算机科学定义的内容:-部分是关于经验地研究一类现象的科学;-部分是关于若干类抽象结构的形式性质的数学;-部分是关于价格上经济地设计和构造商业上和社会上有价值产品的工艺学。3、关于计算机科学定义的启示(2/3)计算机科学研究人员所持的研究态度:-自然科学态度(经验科学态度)-数学态度-工程态度3、关于计算机科学定义的启示(3/3)计算机科学研究人员应具有的能力:-有经验科学家追根问底的精神;-有数学家建立模型和抽象的能力;-有工程师建造工具和实现的能力。三、计算机科学与技术学科教育1、专业方向特点2、人才培养的基本定位3、问题空间4、知识领域的划分与核心学时分配5、能力要求6、课程体系示例7、计算机学科本科生应该具有的通用技能8、教学的三个过程9、实例1、专业方向特点专业内容相对突出计算的理论和算法,在计算理论以及相关的数学领域为学生打下较好的基础,要求学生掌握求解计算问题的有效方法,擅长算法分析与设计,对于应用的实际问题具有理性分析的能力。2、人才培养的基本定位德、智、体、美全面发展掌握自然科学基础知识注重计算机科学基础理论,兼顾计算机系统及应用3、问题空间理论原理创新应用部署配置开发倾向理论倾向应用组织系统行为应用技术软件开发系统平台结构计算机硬件体系CS摘自CC20054、知识领域的划分与核心学时分配1.CS-AR计算机体系结构与组织(82)2.CS-AL算法与复杂性(54)3.CS-HC人机交互(12)4.CS-OS操作系统(40)5.CS-PF程序设计基础(69)6.CS-SP社会与职业问题(11)7.CS-SE软件工程(54)8.CS-DS离散结构(72)注:红色为计算机科学特有或者重点知识领域(括弧内为每个领域核心学时数,全部领域共560学时)9.CS-NC网络计算(48)10.CS-PL程序设计语言(54)11.CS-GV图形学与可视化计算(8)12.CS-IS智能系统(22)13.CS-IM信息管理(34)14.CS-CN数值计算详细信息参见计算机科学与技术专业规范3.2.3小节的表3-15、能力要求具备在计算机科学领域里分析问题、解决问题的能力具备实践能力具备良好外语运用能力团队精神与组织才能沟通能力与良好的人际关系表达能力6、课程体系示例(1/2)序号课程名称理论学习学时实践学时涵盖核心知识单元非核心知识单元1计算机导论248SP1,PL1,SE3,PL3,HC1,SE7,NC22程序设计基础4816PL1,PF1,PF2,PF5,AL2,AL3,PL63离散结构72DS1,DS2,DS3,DS4,DS54算法与数据结构4816AL1,AL2,AL3,AL4,AL5,PF2,PF3,PF45社会与职业道德248SP1,SP2,SP3,SP4,SP5,SP6,SP7SP8,SP9,SP106操作系统3216AL4,OS1,OS2,OS3,OS4,OS5OS6,OS7,OS8,OS117数据库系统原理3216IM1,IM2,IM3,IM4,IM5,IM6IM7,IM8,IM9,IM10,IM11,IM13,IM146、课程体系示例(2/2)序号课程名称理论学习学时实践学时涵盖核心知识单元非核心知识单元8编译原理4016PL1,PL2,PL3,PL4,PL5,PL6PL7,PL89软件工程3216SE1,SE2,SE3,SE4,SE5,SE6,SE7,SE8SE9,SE1010计算机图形学248HC1,HC2,GV1,GV2HC5,GV3,GV4,GV5,GV6,GV7,GV8,GV911计算机网络3216NC1,NC2,NC3,NC4NC5,NC6,NC8,NC9,AR912人工智能328IS1,IS2,IS3IS4,IS5,IS6,IS713数字逻辑3216AR1,AR2,AR314计算机组成基础4816AR2,AR3,AR4,AR515计算机体系结构328AR5,AR6,AR7AR8,AR97、计算机学科本科生应该具有的通用技能(毕业生的要求)(1)基本要求数学要求科学方法熟悉应用沟通技能团队工作能力其它(职业道德、知识产权、法律等应有足够的重视和了解)(2)具体要求系统级的预测能力理论与实践间相互作用的判断熟悉重复出现的概念大项目的经验知识适应变化的能力(3)能力与技巧认知CS中的能力和技巧实践CS中的能力和技巧其它能力和技巧(交流、团队协作、数据表达、自我管理、职业开发等)(4)典型标准对知识体的主领域和科学理论有较深刻的理解对非形式描述的问题能进行准确的分析,并能用相关的概念、理论和准则,还能有效地选择和使用相应的技术和工具能完成一个项目的分析、定义、设计和实现能在极少指导下独立工作,以及作为团队或成员进行工作的能力能从事专业的、合法的、合乎道德的正确的实践活动明确继续专业发展和终身学习的机制能在一个广泛的范围内综合地运用所学知识的能力8、教学的三个过程(1)TheoryDefinitionandAxioms,Theorems,Proof,Interpretationofresult(2)AbstractionDatacollectionandHypothesisformation,ModelingandPrediction,Designofanexperiment,Analysisofresults(3)DesignRequirements,Specification,DesignandImplementation,TestingandAnalysis9、实例ProgrammingLanguages(1)理论①形式语言与自动机,包括语法分析和语言翻译理论②TuringMachines(过程语言的基础)、PostSystems(串处理语言的基础)、λ一Calculus(函数语言的基础)③形式语义学:定义计算机数学模型的方法,以及模型、语言语法与实现之间的关系。主要方法包括符号、代数、操作和公理的语义学④作为支持领域:谓词逻辑、时态逻辑、近世代数、及数学归纳法(2)抽象①基于语法和动态语义学模型的语言分类:静态类型、动态类型、函数、过程、面向对象、逻辑、规格说明、消息传送和数据流②按应用领域的语言分类事务数据处理、模拟、表处理、及图形③对程序结构的基本语法和语义模型的分类:过程分层、功能组合、抽象数据类型、通信并行处理④各种基本语言类型的抽象实现模型⑤语法分析、编译、解释和代码优化的方法⑥语法分析器、扫描仪、编译器构件和编译器的自动生成方法(3)设计①具体的语言-把个别的抽象机器(语义)装配在一起形成可实现的整体过程式(Fortran、ALGOL、Cobol、Ada、C)函数式(Lisp)数据流(SISAL,VAL)面向对象的(Smalltalk、C++)逻辑式(Prolog)串式(SNOBOL)并发(CSP、OCCAM、ConcurrentPascal、Modula-2)@②特殊语言的具体实现方法:运行期模型、静态和动态执行方法、打印校对、存储器和寄存器的分配、编译器、交叉编译、解释器,及在程序中寻找并行性的系统③编程环境④语法分析器和扫描生成器(YACC,LEX)、编译生成器⑤用于检查语法和语义错误的程序,程序特征表的产生、调试和跟踪⑥编程语言用于文档处理功能的方法:如建表、图、化学公式、展开方程、I/O及数据处理。其它应用:如统计处理请仔细阅读并思考下列所示的五个程序段,指出它们的功能程序段1:maxv=(b+a)/2+abs((a-b)/2);maxv=(maxv+c)/2+abs((maxv-c)/2);程序段2:#includeiostream.hvoidmain(){inta;intb;intc;intmaxv;coutEnterthreenumber:\n;cinabc;if(ab)gotoL1;if(bc)gotoL2;maxv=c;gotoL4;L1:if(bc)gotoL3;if(ac)gotoL3;maxv=c