大学计算机-计算思维导论ResearchCenteronIntelligentComputingforEnterprises&Services,HarbinInstituteofTechnology战德臣哈尔滨工业大学教授.博士生导师教育部大学计算机课程教学指导委员会委员OKZhanDCOKZhanDC战德臣教授计算机文化基础基本概念流行软件产品的使用介绍《大学计算机》是大学教育中“不可缺少”的独立课程。讲授计算思维----大学生创造性思维培养的重要组成知识传授与素养培养贯穿于思维教学当中大学计算机学校数量示意软件与操作计算思维课堂教学(任务驱动的共性知识讲授)与实验教学(流行软件产品应用技能训练)的分工计算机应用基础应用与素养大学计算机基础引子—致大学计算机(基础)课程的所有教师1.《大学计算机》课程的发展历程战德臣教授第一门课大学计算机学生基础课程学时计算学科-内容矛盾课程应该是:与《大学数学》、《大学英语》一样地位?举足轻重、不可或缺水平很高vs.课程现状却是:没有地位无足轻重、可有可无水平不高引子—致大学计算机(基础)课程的所有教师2.《大学计算机》课程的矛盾与人们观念上的偏差战德臣教授目的不清为什么要讲?浅/泛示例不精学生接受不了“深”吗?怎样深入?面窄/无体系仅是程序设计吗?仅是算法解题吗?误“用”怎样理解“用”?工具vs.思维?缺少思维训练更多的讲“事实”,很少讲思维内容不明确核心内容是什么?---无共识。后果是水平低陈旧教学内容陈旧概念化以概念讲概念,以概念讲原理《大学计算机》课程的存废之争?引子—致大学计算机(基础)课程的所有教师3.《大学计算机》课程面临的严峻问题战德臣教授计算机就是用电脑、用软件吗?计算机就是编程序吗?编程序就是计算机语言(C语言、Java语言等等)吗?什么是真正的会“编程序”呢?引子—致大学计算机(基础)课程的所有教师4.学习计算机只是学习“使用吗”?战德臣教授引子—致大学计算机(基础)课程的所有教师5.对学生的认识是这样的吗?二本/三本的学生是否不需要计算思维?二本/三本的学生是否理解不了计算思维?第1讲计算机、计算与计算思维ResearchCenteronIntelligentComputingforEnterprises&Services,HarbinInstituteofTechnology战德臣哈尔滨工业大学教授.博士生导师教育部大学计算机课程教学指导委员会委员OKZhanDCOKZhanDC课程导引ResearchCenteronIntelligentComputingforEnterprises&Services,HarbinInstituteofTechnology战德臣哈尔滨工业大学教授.博士生导师教育部大学计算机课程教学指导委员会委员OKZhanDCOKZhanDC战德臣教授本课程学什么?课程内容组织的基本脉络?课程导引(1)课程内容组织的基本脉络?战德臣教授人-计算机器-自动计算机器-难于计算1、程序是如何被机器自动执行的:程序vs.系统?2、如何编写机器可以执行的程序:语言vs.编译?3、怎样构造求解问题的算法:问题算法程序?自然/社会问题计算自然/社会问题的求解结果4、可求解vs.难求解?5、如何降低计算量:计算vs.算法?6、怎样研究算法?7、针对具体的自然/社会问题如何计算?8、计算如何与社会/自然进行融合?课程导引(1)课程内容组织的基本脉络?战德臣教授第一门课程大学计算机计算与程序符号化计算化自动化计算系统与程序构造计算与计算思维程序构造方法:递归与迭代由社会/自然到计算的、最基本的抽象(Abstraction)与自动化(Automation)机制学生不会编程序,不一定是语言没学好,而可能是没有理解程序的真谛课程导引(2)课程内容选择与划分?战德臣教授第一门课程大学计算机如何编写让计算系统执行的程序?程序是如何被执行的?内存环境下程序的执行复杂环境下程序的执行计算与程序计算系统由机器语言到高级语言及其编译学生不会编程序,不一定是语言没学好,而可能是不理解执行程序的环境课程导引(2)课程内容选择与划分?战德臣教授第一门课程大学计算机问题算法环境难解问题算法计算问题与数学建模算法策略设计数据结构与控制结构复杂性与正确性算法类问题求解框架计算与程序计算系统算法思维学生不会编程序,不一定是语言没学好,而可能是未理解为什么要研究算法受限资源约束下的算法降低计算量的算法课程导引(2)课程内容选择与划分?战德臣教授第一门课程大学计算机网络化:机器网络信息网络群体互动网络网络化社会数据化:数据获取数据管理数据分析与运用计算与程序计算系统算法思维信息素养学生不会编程序,不一定是语言没学好,而可能是未理解计算与社会/自然的融合课程导引(2)课程内容选择与划分?战德臣教授第1讲-计算机-计算-计算思维第2讲-符号化-计算化-自动化0和1与易经----语义符号化表达与计算0和1与逻辑----思维方式与逻辑运算,符号表达与计算0和1与数值----二进制(数值性信息)与算术运算,符号计算0和1与字母与符号----编码(非数值性信息),符号计算0和1与电子元件----基本硬件实现(开关和门电路),计算自动化0和1与电路----复杂部件的硬件实现(芯片、主板),分层构造与构造集成第3讲-程序与递归-组合-抽象-构造第4讲-冯-诺依曼计算机器-程序执行第5讲-现代计算机-复杂环境下程序执行第6讲-由机器语言到高级语言-程序编写编译第7讲-算法-程序与计算系统之灵魂第8讲-怎样研究算法-排序算法研究示例第9讲-怎样研究算法-遗传算法研究示例第10讲-怎样管理和利用数据I第11讲-怎样管理和利用数据II第12讲-怎样连接和利用网络I第13讲-怎样连接和利用网络II教学内容规划--课程讲/节的划分及课程讲/节之间的关联--100分钟/课程讲教学内容的分解--问题小节的分解及问题小节之间的关联--8-12分钟/问题小节问题小节独立问题小节之间关联课程节间形成体系课程导引(3)课程内容的章节安排?战德臣教授教师学生中国大学MOOC课程《大学计算机-计算思维导论》课程导引(4)课程教学的支持手段?战德臣教授什么是计算思维?有哪些经典的计算思维?并非让学生去记住计算思维的概念课程导引(5)什么是?有哪些?战德臣教授递归程序0和1云计算环境并行分布环境个人计算环境冯.诺依曼机算法系统社会/自然的计算化计算/求解的自然化局域网/广域网:机器网络互联网:信息网络/广义资源网络物联网;知识网;服务网;社会网抽象自动化事务管理与数据库数据分析与数据仓库数据聚集与大数据量子计算/光子计算移动计算生物计算计算生物学计算物理学计算化学计算经济学计算统计学计算金融学企业计算计算工程学服务计算云计算社会计算计算广告学媒体计算纳米计算智能计算计算语言学神经计算计算机计算机科学计算科学数据化网络化模型语言协议系统编译器编解码器课程导引(6)计算(机)科学有哪些计算思维需要学习?战德臣教授为什么学习计算思维而不是学习具体软件的应用?课程导引(7)为什么学?战德臣教授支持各学科研究创新的新型计算手段Gap计算思维/计算能力计算机及其通用计算手段的应用当前的非计算机专业计算机关注点应用计算手段进行各学科研究和创新非计算机专业学生的未来计算能力知识/技能计算思维的学习和训练1998年诺贝尔化学奖奖励给一个计算手段的研究者--JohnPople化学学科工作者利用计算手段进行本学科的科学研究课程导引(8)各学科人才需要计算思维,以便形成复合型的创造性思维支持面向化学学科计算手段研究的计算思维--符号化计算化自动化--算法、程序与计算系统--数据化与网络化思维……GAUSSIAN软件包战德臣教授课程导引(9)怎样学--贯通的知识才是思维?怎样学习计算思维?战德臣教授语义符号化符号计算化计算0(和)1化0(和)1自动化分层构造化构造集成化;知识知识的贯通-思维表层意义深层意义集成意义社会/自然现象逻辑二进制电路集成电路计算机场景的理解(场景问题求解技巧);场景术语/概念(为区分场景的不同要素而提出概念,而不是为概念而概念)大思维与小技巧可视化可实现的思维,而非实现的细节宽度与深度相结合计算思维与科学素养培养课程导引(10)怎样学--贯通的知识才是思维?人-计算与机器-计算?ResearchCenteronIntelligentComputingforEnterprises&Services,HarbinInstituteofTechnology战德臣哈尔滨工业大学教授.博士生导师教育部大学计算机课程教学指导委员会委员OKZhanDCOKZhanDC战德臣教授什么是机器自动计算?通过案例理解自动计算与人计算的差别人-计算与机器-计算?(1)“人”计算与“机器”计算的差别?战德臣教授例如:求ax2+bx+c=0的根人进行计算:一条规则可能很复杂,但计算量却可能很小人需要知道具体的计算规则特定规则,只能求:a1x2+a2x=c机器-自动计算:每条规则可能很简单,但计算量却很大机器也可以采用人所使用的计算规则一般性的规则,可以求任意:a1x1b1+a2x2b2+…+anxnbn=c人-求解机器-求解(1)从-n到n,产生x的每一个整数值;(2)将其依次代入到方程中计算;(3)如果其值使方程式成立,则即为其解;否则不是人-计算与机器-计算?(1)“人”计算与“机器”计算的差别?利用上述公式计算得到x值战德臣教授nn2一阶差分n=n2-(n-1)2二阶差分n=n-n-100112439416525135792222(n+1)2=n2+n+n仅需能够进行加法运算和减法运算;其他运算可通过组合加法与减法运算来实现;例如:乘方运算?多项式运算?人-计算与机器-计算?(2)基本计算规则vs.程序vs.机器?初始值不一样,计算的多项式也是不一样的;战德臣教授/*类C语言表达的计算规则—程序Main(){intk,n,square[],alpha[],beta[];inputk;square[0]=0;square[1]=1;square[2]=4;alpha[1]=1;forn=2tok-1{alpha[n]=square[n]-square[n-1];beta[n]=alpha[n]-alpha[n-1];square[n+1]=square[n]+alpha[n]+beta[n];}outputsquare[k];}人-计算与机器-计算?(2)基本计算规则vs.程序vs.机器?输入不同的初始值便可计算不同的一元二次多项式的值战德臣教授/*类C语言表达的计算规则—程序Main(){intk,n,square[],alpha[],beta[];inputk;square[0]=0;square[1]=1;square[2]=4;alpha[1]=1;forn=2tok-1{alpha[n]=square[n]-square[n-1];beta[n]=alpha[n]-alpha[n-1];square[n+1]=square[n]+alpha[n]+beta[n];}outputsquare[k];}人-计算与机器-计算?(2)基本计算规则vs.程序vs.机器?square[0]square[1]square[2]square[3]square[4]square[5]…square_n战德臣教授/*类C语言表达的计算规则—程序Main(){intk,n,square_nminus1,square_n,alpha_nminus1,alpha_n,beta_n;inputk;square_nminus1=1;square_n=4;alpha_nminus=1;forn=2tok-1{alpha_n=square_n–square_nminus1;beta_n=alpha_n–alpha_