我的
24
年计算机生涯
:
n
十年学校教育
n
本科(北大)
,
研究生(北大)
,
博士生(
OSU)
n
十四年工作
(
微软
, Continuum, MicroTechnology)
n
参与制作
Visual Studio, Visual InterDev Studio, SQL Server, Access, Office, MSN ...
n
数项美国软件专利
/
学术文章
n
北大,上海交大,北航的客座教授
n
北大软件学院软件技术系系主任
反思
:
我的十年教育的缺憾
n
在学校学的东西大部分对我后来的工作没有直接帮助
n
我在工作中碰的大部分问题在学校没有学到
.
如果我能再回到学生时代
...
凌小宁
博士
微软研究院总部
北京,
2005
四月
n
大学生混的最高境界
(
考试版
)
-
zms1844,
开复学生论坛
n
人:什么?明天要考高数??
n
得道:什么?下节课要考高数??
n
入仙:什么?刚才考的是高数??
n
成佛:
什么?昨天有考试??
n
高级佛爷:高数?刚才考的不是英语??
n
我寝室一哥们:高数是什么树??
n
回帖
–
小帆,开复学生论坛
n
夸张之后有真实
n
搞笑之中有辛酸
大学生的境界
n
不学
n
教什么学什么
n
喜欢什么学什么
n
有目的地学
生存的境界
n
改变你能改变的;有度量接受你不能改变的;有智慧区分能改变的和不能改变的。
n
改变我们自己!在现有的环境下,最大限度的实现自己的理想
。
晏才宏
-
上海交通大学教师
学习的境界
n
学会答案
n
学会一个解
n
学会方法
n
学会一个方法
n
学会学习
n
学会找到方法的方法
n
学会做事
n
学会超越
“
纸上谈兵
”
,与实际
“
融会贯通
”
学编程的境界
学编程 学写作
n
学会写程序
学字,词,文法,句法
n
学会高效地写程序
快速地写文章
n
学会写高效的程序
写简洁明快的好文章
n
学会设计程序
选择结构,流程,方法
n
学会设计有用的程序
写人们喜欢看的文章
编程的最高境界
学数学的境界
n
学会解数学题
n
物理问题
à
数学问题
n
实际问题
à
数学问题
n
实际问题
à
数学问题
à
软件解
数学与计算机
n
离散数学
(
布尔代数,集合论,数理逻辑,图论)
n
计算机基础的基础
n
代数
/
数论
n
计算机安全(加密解密)
n
傅利叶变换
n
信号处理
(语音识别,
…
)
n
概率,随机过程
n
机器学习,数据挖掘,语音识别,信号处理
...
n
几何学
n
计算机图形
n
数理逻辑
/
证明方法
n
可计算性,计算复杂性
软件工程的要素
n
是研究大规模软件生产的学问
n
不是关于编程的学问!
n
要素:大规模软件生产的
n
过程
n
方法
n
工具
软件工程对编程的特殊要求
n
程序的
n
可读性
n
可测试性
n
可调试性
n
可扩充性
n
可维护性
情商与事业的潜力
美国的尝试
–
CMU
软件学院
n
院长:
Dr. Raj Reddy
n
首席教育家
:
Dr. Roger Schank
n
培养工程硕士
(两年)
n
采用
Dr. Roger
的教育方法
n
完全不上课
n
完全在实际中学
(Learning by Doing)
Dr. Roger Schank
n
计算机科学家,心理学家,教育家
n
CMU
教授
n
曾是西北大学,斯坦福大学,耶鲁大学教授
n
美国政府部门的高级顾问
Roger:
教育中常见的错误
n
读书听课是获取知识的最重要的部分
–
错!
n
学生只需要努力争取好分数就能成功
–
错!
n
获取知识能独立于实际操作
–
错!
n
学生被告之什么是重要的应该了解的
–
错!
n
获取知识可独立于实际使用目的
–
错!
Dr. Roger
的方法
:
CMU
的课程设计
(Roger)
中国的软件学院
–
新的尝试
n
实用型高级软件人才
n
注重实用的课程设计
n
大量的实践项目
n
软件工业界专家的直接参与
如果我能重新开始学习计算机
......
如果我能重新开始
...
n
确立一个相对明确的目标
n
根据这一目标
,
确定要掌握的专业
/
课程
/
技能
/
知识
n
选做大量的相关实践项目
n
对每一个实践项目
,
n
确立一个模拟的实际工作中的用户场景
(scenario)
n
尽量以实际工作中的方法和标准作每件事
n
碰到没学的东西
,
去问
,
去学
.
在用中学
,
带着目的学
.
学会最有效地解决问题的手段
/
方法
n
联合同学做团队项目
,
做好自己的部分
,
帮助团队整体成功
新型软件教育课程模式
n
CUM Learning by Doing +
中国国情
+
软件工业直接参与
n
采用大规模实用的或模拟的软件产品项目
n
以软件公司生产架构组织学生
n
以实际软件生产流程组织课程
n
20%
上课
; 80%
做项目
n
教师在流程中每个环节开始前,讲授此环节的要点。学生根据要点在项目中自学。教师为学生自学随时提供帮助。
n
以按要求按时完成软件产品作为成功完成课程的标准
新型软件教育课程模式
n
掌握五种核心的知识和技能
例:排课系统
n
学校每学期都要进行一件非常费时、费力的事情,就是安排教室。因为一个教师可以任多门课程、这多门课程的教学对象(学生)又不相同;每门课程的听课人数不同;教室分多媒体、普通教室两类,有的教师需要多媒体进行讲课,有的教师不需要多媒体;有个别教师需要特殊照顾(例如,爬楼有困难);每个教室的座位数不同;而教室管理部门又希望在某个时间段按物理位置集中使用教室(例如,晚上、周末相对课少,希望楼上的教室尽量不用,便于管理),并能够保留某些教室以作临时调用。
现请开发一个能够既考虑方方面面的因素、又符合学校教学计划的
“
教室
-
排课
”
互联网服务软件,帮助进行这项工作。
这个服务软件应集成到校园网中。
n
学生班级组织结构
通过这个项目学习:
n
商务计划
/
规划
(product manager, product planer)
n
市场分析,可行性分析,资源需求分析,时间线,商业开发
n
项目管理
(program manager)
n
需求分析,说明书,过程管理,负有按时完成的权责
n
开发(
software design engineer)
n
按说明书设计,按编程标准(
coding guideline)
实现系统
n
测试(
testing engineer)
n
根据说明书,制定测试标准,编写测试文件,实现自动测试工具,测试
n
团队,沟通,演讲,谈判,技术写作,
……