斯坦福《编程方法学》公开课
刚看了斯坦福的《编程方法》公开课第一集。虽然第一节主要是讲一些课程要求、评分标准等等还没进入正题,但我还是聚精会神地看完了。
这位老师语速惊人啊,看着人人制作的字幕都要跟不上了,跟《社交网络》里的男主有一拼了。但他讲课风格很风趣幽默,比如一开场问多少人知道电脑是什么东西,说这是这门课唯一的学习前提,只要认识电脑,能认出电脑开没开机就可以了。还有讲到评分标准时,最高级别是++,能得到++分数的程序要超过作业要求,要让老师看得热泪盈眶。讲着讲着,还拿出一大袋子糖果,边讲课边扔给勇于提问的同学。课堂气氛很是活跃啊。
为了让同学更好的学到东西,每次作业不是只给一个分数就完事了。而是还要让每位同学跟自己的组长交流,谈谈自己的作业中有哪些不足,哪些可以改进的。他还说自己不是个严肃的人,但是有一件事会让他甚至整个斯坦福都严肃起来 -- 剽窃抄袭~ 可见,老师很认真负责,既要保证自己教授的知识同学能够听懂,还要让其独立的完成,最大程度的掌握这么课程。
第一节课最后才切入正题,课程选用Java语言,选择的教材是《Karel The Robot Learns Java》和《The Art and Science of Java》两本。国外的教材似乎都很喜欢用循序渐进的方式来讲解,比较重视在实践中一点点的传授知识。而国内的教材,知识归纳的很条理,比较方便记忆,当然也是为了方便考试。。。
虽然是门编程的入门课程,但从第一集来看,还是很精彩的。从课程安排上看,除去几节比较简单的讲解Java语法的课程外,其他不少课程还是很值得学习的!
老师介绍:
Mehran Sahami
我刚加入斯坦福大学计算机系时任副教授,本科教育附主任和教务处主任三职。2001年至2006年,任斯坦福大学计算机系讲师。2002至2007年,任谷歌公司的高级研究员,目前依然是研究团队的顾问。我的研究方向主要有计算机科学教育,机器学习和网络信息挖掘。
在此之前,我是Epiphany公司的高级工程经理。去Epiphany工作前,我在斯坦福大学的计算机系拿到了博士学位。我曾今也是斯坦福大学的本科生,一直深爱着这方土地,至今不愿离去。 工作之余,我喜欢跟家人团聚,喜欢弹吉他,喜欢户外旅行,还喜欢睡觉(虽然最近睡的越来越少)
课程简介:
第一课:课程简介
欢迎来到CS106A,授课人员,为什么称之为编程方法?,你真的适合学习这门课程吗?,课程常规,作业与评分,课外拓展,期中期末考试,成绩评定细则,行为准则,为何要从Karel学起?
第二课:欢迎来到Karel的世界
讲义相关,注册讨论小组,Karel基本命令,算法与程序孰轻孰重,Karel程序语法,运行一个Karel程序,创建函数的方法,超级Karel,For循环,While循环,Karel条件语句,If条件语句,综述
第三课:Karel与Java
Karel 与Java,常见的错误,注释,前提条件和后续条件,分解,例程序DoubleBeeper,养成良好编程习惯重要性,正确的分解,例程序CleanUpKarel
第四课:计算科学发展史
计算机科学与程序设计的千丝万缕,电脑懂什么,编译过程,Java-面向对象的程序设计语言,继承,类,acm.program层次结构,第一个Java程序,例程序ConsoleProgram,图形化界面,例程序Sending-Messages-to-a-GLabel
第五课:变量
变量的数据类型,调用变量相关语法,类的类型,对象变量,调用类成员函数的方法,图形坐标,对类GObject以及其子类的操作,描画几何对象,例程序FunGraphics,表达式与操作符
第六课:操作符
readInt() 和 readDouble()函数,整形与浮点数的除法运算操作符,操作符优先级,类型转换,常量,布尔数据类型,值的比较,布尔表达式,短路求值,语句块,变量的作用域,if套嵌,switch语句,for循环语句,while循环语句
第七课:循环与“一半”问题
For循环与While循环的对比,例程序CheckerBoad,在Java中创建函数,创建函数举例,FactorialExample程序,用函数返回对象
第八课:信息隐藏
Void函数类型,在函数间传递参数,函数的缺陷,类的使用,整体变量与局部变量,例程序RandomGenerator,例程序RollDice,setseed()函数
第九课:字符串
写一个类,公有和私有的区别,构造函数,this关键词,类的使用,对象的调用需要使用引用方式,将类作为变量,Javadoc技术,例程序Student
第十课:私有变量的重要性
扩展Student类,函数重写,acm.graphics程序包,GCanvas,GObjects中的常用函数,其中的接口与函数,BouncingBall例程序,GLable类中的几何学,GArc类
第十一课:Gimage类
GPolygon类,GCompound类,事件驱动程序,例程序ClickForFace,响应鼠标操作,响应键盘操作,例程序UFO
第十二课:枚举
字符,Unicode标准下的ASCII码,字符的读取,字符中的数学,基本类型char,字符对象,字符串及其操作
第十三课:对字符串的处理
编译器,加密
第十四课:内存
存放不同变量的内存区块,内存分配机制,对指针的看法,指针趣味小视频
第十五课:指针要点回顾
为什么要通过引用方式调用类,将封装类作为基本数据类型,文件,打开、读取、关闭文件的函数,异常状况,文件写操作函数
第十六课:数组
创建数组,++操作符,数组的真实长度与有效长度,将数组作为参数,初始化数组,数组列表
第十七课:多维数组
类模版,ArrayList类中的函数,使用ArrayList类的例程序,Glable数组列表例程序,例程序GrayImage
第十八课:多维数组收尾
数组列表方式,数组列表与数组的优劣分析,调试,程序调试的方法,Eclipse中的调试器
第十九课:接口
如何使用接口,映射,HashMap类,HashMap中的函数,中继器,HashMap例程序
第二十课:图形用户界面
Java程序中的Interactor,Swing Interactor层次结构,窗口区域,创建Interactor,例程序,探索更多Interactor,例程序InteractorDrawFace
第二十一课:Interactor与Listener回顾
例程序,例程序中应用的两种方法——使用getSouce或getActionCommand函数,例程序TextField,布局设计,温度换算例程序,例程序TextAndGraphics
第二十二课:NameSurfer概述
组件与容器,容器的监听器,设计可扩展程序,ComponentListener接口,例程序MusicShop,例程序MusicShopDisplay
第二十三课:搜索,排序与算法效率分析
课程材料介绍——搜索,排序及其算法效率分析,搜索,线性搜索,线性搜索的效率分析,二分法搜索,二分法搜索的效率分析,排序,选择排序算法,选择排序效率分析,基数排序算法
第二十四课:管理大型数据中的良好软件工程原理
设计思想,数据搜集层次结构,数据搜集实用函数,例程序:在线音乐商店FlyTunes,定义歌曲类,定义专辑类,鉴证程序运行,对所需数据结构的思考,数据的重复利用,浅拷贝与深拷贝
第二十五课:设计实用社交网络
思考程序所需功能,分离现象的六种程度,并行性,一个线程,运行接口,创建一个线程,例程序,在线程间共享数据
第二十六课:介绍Java标准库
JAR文件介绍,创建JAR文件,创建applet小程序,脱离ACM运行库创建标准Java程序,其他——深入学习Java
第二十七课:CS106A后续课程介绍
计算机专业简介,其他专业出路
第二十八课:宣布图形比赛结果
期末复习,例题1,例题2,课程总结
下载地址:http://www.verycd.com/topics/2860669/