麻省理工学院计算机工程教程10
- 格式:pdf
- 大小:26.31 KB
- 文档页数:6
太傻留学
麻省理工学院电气工程和计算机科学博士申请要求有哪些
麻省理工学院电气工程和计算机科学研究生申请只适用于博士项目,没有终端硕士学位,但所有博士生在攻读博士学位时都能获得硕士学位。
下面,太傻小编就为大家介绍麻省理工学院电气工程和计算机科学博士申请要求。
电气工程和计算机科学系提供四种研究生学位课程:
理学硕士(SM),学生攻读博士学位需要修读,但是不授予终端硕士学位
工程硕士(MEng),只针对麻省理工学院本科生
电气工程工程师(EE)/计算机科学工程师(ECS)
哲学博士(PhD)/理学博士(ScD)
麻省理工学院电气工程和计算机科学博士申请条件:
申请费:75美元
学历要求:拥有学士学位,并拥有很强的数学,物理,计算机科学或工程背景。
如果没有硕士学位,会在MIT 得到硕士学位,然后继续攻读博士学位。
如果你已经持有另一所学校的硕士学位,你可以开始直接攻读博士资格。
语言成绩要求:雅思考试最低7.0,托福考试最低分100,首选雅思成绩。
GRE考试成绩:不需要
完成申请表格
目的陈述
3封推荐信
成绩单
麻省理工学院电气工程和计算机科学博士申请截止日期:12月15日
麻省理工学院电气工程和计算机科学博士奖学金申请:
所有申请者将自动考虑奖学金授予,自动随Offer发放,无需单独申请。
奖学金形式主要有:TA、RA和Fellowship奖学金,涵盖全部学费、医疗保险和生活补助。
Instead of waiting for others to love you, it is better to love yourself and treat yourself better, because your life is not long, and be better to the people around you, because you may not be able to meet you in the next life.悉心整理祝您一臂之力(WORD文档/A4打印/可编辑/页眉可删)美国麻省理工学院的申请条件及课程设置怎么申请麻省理工学院留学,要申请麻省理工学院留学就要对麻省理工学院有所了解,了解麻省理工学院的申请条件,麻省理工学院的课程设置,麻省理工学院的留学费用。
下文一一阐述。
麻省理工学院成立于1861年,是美国一所综合性私立大学,有世界理工大学之最的美名。
泰晤士报专上教育增刊的世界大学排名,马麻省理工学院在总平均排名世界第二(仅次于哈佛大学),在科学技术方面排名世界第一,在工程科学方面排名世界第二,在自然科学方面排名世界第五,在社会科学方面排名世界第七。
美国国家研究协会把麻省理工学院在美国大学的知名度排第一。
麻省理工学院本科申请条件:TOEFL90;SAT735;GPA3.89。
麻省理工学院研究生申请条件:TOEFL100或IELTS7;GMAT705;GPA3.5。
麻省理工学院20__-20__学年的学杂费是$47,100美元。
20__-20__麻省理工学院学生平均领到的奖学金为$27,800 美元。
美国麻省理工学院院系和学位设置根据专业的分类,MIT被分成了如下13个学院:1.建筑及城市规划学院(School of Architecture and Planning)2.工程学院(School of Engineering)3.人文及社会科学学院(School of Humanities, Arts, and Social Sciences)4.阿尔佛雷德·P·斯隆管理学院(Alfred P. Sloan School of Management)5.自然科学学院(School of Science)6.维泰克健康科学技术学院(Whitaker College of Health Sciences and Technology)7.麻省理工—雾兹侯海洋学院:海洋学和应用海洋科技与工程联合项目(MIT-WHOI Joint Program in Oceanography and Applied Ocean Science and Engineering)8.建筑和规划学院:建筑学系、城市研究与规划系以及介质艺术和科学组等;9.工程学院:市政工程系、电气功工程与计算机科学系和材料科学与工程、化学工程系、机械工程、航空和宇航工程系、核子工程、海洋工程等系;10.人文和社会科学学院:语言学与哲学系、政治科学系、经济系、科学、人文学系(人类学或考古学、外国语言文学、历史学、音乐与戏剧艺术、写作计划等组)、技术和社会计划系等;11.斯隆管理学院:管理系;12.理学院:大气与行星科学系、化学系、生物学系、地球、数学系、物理系、应用生物科学计划等;13.怀特克尔保健科学和技术学院:脑和思维科学系、毒理学部等。
附录一VERYCD上目前已有的一些开放课程(1)麻省理工学院《麻省理工开放课程:微积分重点》(Highlights of Calculus)《麻省理工开放课程:单变量微积分》(Single Variable Calculus)《麻省理工开放课程:多变量微积分》(Multivariable Calculus)《麻省理工开放课程:微分方程》(Differential Equations,Spring,2004)《麻省理工开放课程:线性代数》(Linear Algebra)《麻省理工开放课程:经典力学》(Classical MEchanics)《麻省理工开放课程: 物理学I》(Physics I)《麻省理工开放课程:电磁学》(Electricity & Magnetism)《麻省理工开放课程: 振动与波》(Vibrations and Waves)《麻省理工开放课程:航天系统工程学》(Aircraft Systems Engineering)《麻省理工开放课程:算法导论》(Introduction to Algorithms)《麻省理工开放课程:计算机科学及编程导论》(MIT Introduction to Computer Science and Programming)《麻省理工开放课程:计算机程序设计与解释》(Structure and Interpretation of Comput er Programs)《麻省理工开放课程:固态化学导论》(Introduction to Solid State Chemistry)《麻省理工开放课程:生物学》(Biology)《麻省理工开放课程:生物学导论》(Introduction to Biology)《麻省理工开放课程:生物工程学导论》(Introduction to Bioengineering)《麻省理工开放课程:西方世界的爱情哲学》(Philosophy of Love in the Western World)《麻省理工开放课程:哥德尔,埃舍尔,巴赫:一次心灵太空漫游》(Gödel, Escher, Bac h: A Mental Space Odyssey)《麻省理工开放课程:建筑设计:地景中的建筑》(Architecture Studio : Building in Land scapes)《麻省理工开放课程:电影哲学》(Philosophy of Film)《麻省理工开放课程:艺术、科学和技术中的情感和想象》(Feeling and Imagination in Art, Science, and Technology)《麻省理工开放课程:心理学导论》(Introduction to Psychology)《麻省理工开放课程:西班牙语学习》(Learn Spanish)(2)斯坦福大学《斯坦福大学开放课程:编程范式》(Programming Paradigms )《斯坦福大学开放课程:抽象编程》(Programming Abstractions)《斯坦福大学开放课程:iPhone开发教程》(Phone Application Programming)《斯坦福大学开放课程:编程模式(C和C++)》(Introduction to Computer Science - Pro gramming Abstractions)《斯坦福大学开放课程:编程方法》(Programming Methodology)《斯坦福大学开放课程:人机交互研讨》(Human-Computer Interaction Seminar)《斯坦福大学开放课程:机器学习》(Engineering Everywhere - Machine Learning)《斯坦福大学开放课程:机器人学》(Introduction to robotics)《斯坦福大学开放课程:傅立叶变换及应用》(The Fourier Transform and Its Application s )《斯坦福大学开放课程:近现代物理专题课程-宇宙学》(Modern Physics - Cosmology)《斯坦福大学开放课程:近现代物理专题课程-经典力学》(Modern Physics - Classical Me chanics)《斯坦福大学开放课程:近现代物理专题课程-统计力学》(Modern Physics - Statistic Me chanics)[《斯坦福大学开放课程:近现代物理专题课程-量子力学》(Modern Physics - Quantum M echanics)《斯坦福大学开放课程:近现代物理专题课程-量子纠缠-part1》(Modern Physics - Quant um Entanglement, Part 1)《斯坦福大学开放课程:近现代物理专题课程-量子纠缠-part3》(Modern Physics - Quant um Entanglement, Part 3)《斯坦福大学开放课程:近现代物理专题课程-广义相对论》(Modern Physics - Einstein's Theory)《斯坦福大学开放课程:近现代物理专题课程-狭义相对论》(Modern Physics - Special Re lativ ity)《斯坦福大学开放课程:线性动力系统绪论》(Introduction to Linear Dynamical Systems)《斯坦福大学开放课程:经济学》(Economics)《斯坦福大学开放课程:商业领袖和企业家》(Business Leaders and Entrepreneurs)《斯坦福大学开放课程:法律学》(Law)《斯坦福大学开放课程:达尔文的遗产》(Darwin's Legacy)《斯坦福大学开放课程:人类健康的未来:七个颠覆你思想的演讲》(The Future of Huma n Health: 7 Very Short Talks That Will Blow Your Mind)《斯坦福大学开放课程:迷你医学课堂:医学、健康及科技前沿》(Mini Med School:Med icine, Human Health, and the Frontiers of Science)《斯坦福大学开放课程:迷你医学课堂:人类健康之动态》(Mini Med School : The Dyna mics of Human Health)(3)耶鲁大学《耶鲁大学开放课程:基础物理》(Fundamentals of Physics)《耶鲁大学开放课程:天体物理学之探索和争议》(Frontiers and Controversies in Astrop hysics)《耶鲁大学开放课程:新生有机化学》(Freshman Organic Chemistry )《耶鲁大学开放课程:生物医学工程探索》(Frontiers of Biomedical Engineering)《耶鲁大学开放课程:博弈论》(Game Theory)《耶鲁大学开放课程:金融市场》(Financial Markets )《耶鲁大学开放课程:文学理论导论》(Introduction to Theory of Literature )《耶鲁大学开放课程:现代诗歌》(Modern Poetry)《耶鲁大学开放课程:1945年后的美国小说》(The American Novel Since 1945)《耶鲁大学开放课程: 弥尔顿》(Milton)《耶鲁大学开放课程:欧洲文明》(European Civilization )《耶鲁大学开放课程:旧约全书导论》(Introduction to the Old Testament (Hebrew Bibl e) )《耶鲁大学开放课程:新约及其历史背景》(Introduction to New Testament History and Literature)《耶鲁大学开放课程:1871年后的法国》(France Since 1871)《耶鲁大学开放课程:古希腊历史简介》(Introduction to Ancient Greek History )《耶鲁大学开放课程:美国内战与重建,1845-1877》(The Civil War and Reconstruction Era,1845-1877)《耶鲁大学开放课程:全球人口增长问题》(Global Problems of Population Growth)《耶鲁大学开放课程:进化,生态和行为原理》(Principles of Evolution, Ecology, and Be havior )《耶鲁大学开放课程:哲学:死亡》(Philosophy:Death)《耶鲁大学开放课程:政治哲学导论》(Introduction to Political Philosophy)《耶鲁大学开放课程:有关食物的心理学,生物学和政治学》(The Psychology, Biology a nd Politics of Food)《耶鲁大学开放课程:心理学导论》(Introduction to Psychology)《耶鲁大学开放课程:罗马建筑》(Roman Architecture)《耶鲁大学开放课程:聆听音乐》(Listening to Music)(4)哈佛大学《哈佛大学开放课程:哈佛幸福课》(Positive Psychology at Harvard)《哈佛大学开放课程:公正:该如何做是好?》(Justice: What's the Right Thing to Do? )《哈佛大学开放课程:构设动态网站》(Building Dynamic Websites)(5)牛津大学《牛津大学开放课程:尼采的心灵与自然》(Nietzsche on Mind and Nature)《牛津大学开放课程:哲学概论》(General Philosophy)《牛津大学开放课程:哲学入门》(Philosophy for Beginners)《牛津大学开放课程:批判性推理入门》(Critical Reasoning for Beginners) (6)其它名校《普林斯顿大学开放课程:人性》(InnerCore)《普林斯顿大学开放课程:自由意志定理》(The Free Will Theorem)《剑桥大学开放课程:人类学》(Anthropology)《沃顿商学院开放课程:沃顿知识在线》(Knowledge@Wharton)《哥伦比亚大学开放课程:房地产金融学I》(Real Estate Finance I)附录二部分英美名校开放课程网站美国1. 麻省理工学院/index.htm2. 卡内基梅隆大学/openlearning/forstudents/freecourses3. 约翰霍普金斯大学彭博公共卫生学院/4. 斯坦福大学/5. 圣母大学/courselist6. 杜克大学法律中心的公共领域/cspd/lectures7. 哈佛医学院/public/8. 普林斯顿大学/main/index.php9. 耶鲁大学/10. 加州大学伯克利分校英国1. 牛津大学的文字资料馆2. Greshem学院/default.asp3. 格拉斯哥大学/downloads.html4. 萨里大学/Teaching/5. 诺丁汉大学/6. 剑桥大学播客/main/Podcasts.html 参考资料:/thread-42142-1-1.html。
计算机学科排名计算机学科排名是衡量计算机学科发展水平的重要指标之一。
根据相关机构的调查和评估结果,以下是计算机学科的排名情况。
1. 麻省理工学院(MIT)麻省理工学院计算机科学与人工智能实验室是世界领先的计算机研究机构之一。
该学院通过在计算机科学、人工智能、计算机工程等领域的研究与创新,为全球科技发展做出了重要贡献。
2. 斯坦福大学斯坦福大学的计算机科学系在教学和研究方面都非常优秀。
该学科涵盖了广泛的学术领域,包括人工智能、机器学习、网络安全等。
斯坦福大学由于其卓越的教学和研究质量,一直位居计算机学科排名前列。
3. 哈佛大学哈佛大学的计算机科学系在计算机研究和教育方面具有很高的声誉。
该学科的研究重点涵盖了计算机理论、人工智能、数据科学等领域。
哈佛大学计算机学科排名一直位于全球前列,为学生提供了优质的教育和研究资源。
4. 加州大学伯克利分校加州大学伯克利分校的计算机科学系在计算机学科研究和教学方面具有很高的声誉。
该学科涵盖了计算机科学理论、人工智能、计算机工程等广泛领域。
伯克利的学生在计算机学科领域享有很高的就业竞争力。
5. 剑桥大学剑桥大学计算机科学系是英国顶级的计算机学科之一。
该学科致力于计算机科学的研究和教学,涵盖了计算机理论、编程语言、人工智能等多个领域。
剑桥大学计算机学科的教学和研究水平一直备受认可。
6. 清华大学作为中国顶尖的学府之一,清华大学的计算机科学与技术系在国际上也享有很高的声誉。
该学科在算法、人工智能、软件工程等方面的研究取得了显著成果,并为国内外计算机科学领域的发展作出了重要贡献。
这只是一小部分在计算机学科排名上有较高声誉的学府。
计算机学科的发展速度日新月异,随着新技术的引入和新领域的涌现,今后的排名情况可能会有所变化。
对于学生来说,选择一所适合自己发展的计算机学科的学府是非常重要的,应综合考虑学校的声誉、师资力量、教学质量等方面的因素。
麻省理工学院简称MIT,创立于1861年,位于美国马萨诸州剑桥市,2016-2017年位列世界大学学术排名工程学世界第一,计算机科学第二,QS世界大学排名世界第一。
MIT软件工程开设两门课程,一门是Software Engineering Concepts (软件工程原理),由Prof.NancyLeveson授课,课程编号为16.355J/ESD.355J。
另外一门是Laboratory in Software Engineering(软件工程实验),由Prof.Daniel Jackson和Prof.SrinivasDevadas,课程编号为6.17。
软件工程原理总结了现阶段软件工程的进展,并且对传统方法和现代软件工程方法的可靠性作了比较和分析。
授课内容包括软件过程、生命周期、需求获取和规约撰写、设计原则、测试、分析和复查、质量管理和评估、产品和过程控制、COTS 和重用、开发团队组织和人员管理,还有软件工程中程序设计语言的选择和编码知识。
课程作业涵盖软件系统和软件开发项目设计中需要了解的问题,包括12个阅读作业。
该课程没有专门的实践作业,但是为了强化学生对软件工程概念的理解,要求学生在教师每次讲解后,撰写一篇相关内容的小论文。
软件工程实验介绍了大型软件系统开发的相关概念和技术,学生主要学习基于抽象识别和描述的编程技术。
课程包括以下内容:软件模块化、需求规格说明、数据抽象、对象建模、设计模式以及测试,涵盖一系列从一个问题的分析到解决实现软件开发过程的技术介绍。
该课程比较有特色的内容是要求学生完成一个桌面弹球的编程项目,可以由学生自行决定单独完成或分组完成。
MIT虽然没有专门的软件工程专业,但是关于软件工程方面开设了约17门课程,这些课程可以为软件工程课程的学习提供良好的专业技术基础。
下级是上级的先修课程,此外还有两门语言课:Introduction to C and C++,Introduction to Software Engineering in Java,二者均在小学期开设。
麻省理工学院研究生申请条件及研究生专业介绍目录麻省理工学院简介 (3)麻省理工学院研究生申请条件及研究生专业介绍 (4)麻省理工学院介绍 (6)麻省理工学院综合实力 (7)麻省理工学院排名 (8)麻省理工学院学业压力 (10)麻省理工学院简介麻省理工学院( Massachusetts Institute of Technology , MIT )是美国一所研究型私立大学,位于马萨诸塞州(麻省)的剑桥市。
麻省理工学院的自然及工程科学在世界上享有极佳的盛誉,该校的工程系曾连续七届获得美国工科研究生课程冠军,其中以电子工程专业名气最响,紧跟其后的是机械工程。
其管理学、经济学、哲学、政治学、语言学也同样优秀。
另外,麻省理工研发高科技武器和美国最高机密的林肯实验室、领先世界一流的计算机科学及人工智能实验室、世界尖端的媒体实验室、和培养了许多全球顶尖首席执行官,斯隆管理学院也都是麻省理工赫赫有名的宝贵资产。
麻省理工学院(Massachusetts Institute of Technology,MIT),是世界著名研究型私立大学,誉为“世界理工大学之最“。
麻省理工学院位于美国马萨诸塞州首府波士顿,临近哈佛大学。
截止2015年,先后有84位诺贝尔奖得主在麻省理工学院工作或学习过,在全球和全美高校中分别列第五名和第四名[1]。
麻省理工学院是爱国者联盟盟校。
除麻省理工学院之外,该联盟由包括乔治敦大学(Georgetown University)、理海大学(Lehigh University)、西点军校和美国海军学院(USNA)在内的其他12个精英学府组成。
这些学府的共同特点是规模小和高度精英化。
麻省理工学院是美国一级国家级大学。
麻省理工学院介绍麻省理工学院(Massachusetts Institute of Technology,MIT)是美国一所综合性私立大学,位于马萨诸塞州首府波士顿,查尔斯河(Charles River)将其与波士顿的后湾区(Back Bay)隔开。
美国硕士计算机专业前50名是哪些大学?麻省理工学院第一!斯坦福大学第二计算机专业是一个很不错的专业,今天店铺小编就给大家介绍美国硕士计算机专业前50名是哪些大学?麻省理工学院当仁不让!如果对这个话题感兴趣的话,欢迎点击。
美国硕士计算机专业前50名是哪些大学?1麻省理工学院学费/年或/学分:$53,450 ;学生人数:166;2斯坦福大学学费/年或/学分:$55,905 ;学生人数:167;2加州大学伯克利分校学费/年或/学分:$26,544 ;学生人数:166;4卡耐基梅隆大学学费/年或/学分:$48,500 ;学生人数:166;5伊利诺伊大学厄本那-香槟分校学费/年或/学分:$35,458 ;学生人数:166;6佐治亚理工学院学费/年或/学分:$29,140 ;学生人数:165;6密歇根大学安娜堡分校学费/年或/学分:$51,126 ;学生人数:166;8普林斯顿大学学费/年或/学分:N/A;学生人数:167;9加州理工学院学费/年或/学分:N/A;学生人数:168;9康奈尔大学学费/年或/学分:$29,500 ;学生人数:166;9德克萨斯大学奥斯汀分校学费/年或/学分:$19,320 ;学生人数:165;12普渡大学西拉法叶分校12华盛顿大学学费/年或/学分:$32,439 ;学生人数:164;14哥伦比亚大学学费/年或/学分:$50,496 ;学生人数:167;14加州大学圣地亚哥分校学费/年或/学分:$26,544 ;学生人数:166;14马里兰大学学院公园分校学费/年或/学分:$1,625 ;学生人数:164;14威斯康辛大学麦迪逊分校学费/年或/学分:$24,054 ;学生人数:165;18南加州大学学费/年或/学分:$2,075 ;学生人数:165;18弗吉尼亚理工学院学费/年或/学分:$27,614 ;学生人数:163;20杜克大学学费/年或/学分:$55,680 ;学生人数:166;20哈佛大学学费/年或/学分:$54,880 ;学生人数:167;20宾夕法尼亚大学学费/年或/学分:$40,716 ;学生人数:168;23西北大学学费/年或/学分:$56,067 ;学生人数:167;23俄亥俄州立大学学费/年或/学分:$35,144 ;学生人数:160;23宾州州立大学公园分校学费/年或/学分:$39,216 ;学生人数:164;23莱斯大学学费/年或/学分:$48,330 ;学生人数:N/A;23明尼苏达大学双城分校28约翰霍普金斯大学学费/年或/学分:$55,850 ;学生人数:166;28德州农工大学学费/年或/学分:$779 ;学生人数:163;30亚利桑那州立大学学费/年或/学分:$31,400 ;学生人数:162;30北卡罗来纳州立大学学费/年或/学分:$26,421 ;学生人数:163;30科罗拉多大学博尔德分校学费/年或/学分:$34,128 ;学生人数:163;30佛罗里达大学学费/年或/学分:$27,335 ;学生人数:162;30弗吉尼亚大学学费/年或/学分:$28,330 ;学生人数:164;30耶鲁大学学费/年或/学分:$43,300 ;学生人数:167;36东北大学学费/年或/学分:$1,616 ;学生人数:163;36加州大学戴维斯分校学费/年或/学分:$28,700 ;学生人数:163;36加州大学尔湾分校学费/年或/学分:$26,544 ;学生人数:164;36圣路易斯华盛顿大学学费/年或/学分:$54,250 ;学生人数:166;40纽约大学坦顿工程学院学费/年或/学分:$1,869 ;学生人数:165;40罗格斯大学学费/年或/学分:$30,144 ;学生人数:163;42波士顿大学42爱荷华州立大学学费/年或/学分:$27,892 ;学生人数:162;42亚利桑那大学学费/年或/学分:$32,065 ;学生人数:162;45布朗大学学费/年或/学分:$8,321 ;学生人数:166;45伦斯勒理工学院学费/年或/学分:$54,000 ;学生人数:164;45马萨诸塞大学阿默斯特分校学费/年或/学分:$32,392 ;学生人数:164;45圣母大学学费/年或/学分:$54,908 ;学生人数:164;49纽约州立大学石溪分校学费/年或/学分:$23,100 ;学生人数:165;49匹兹堡大学学费/年或/学分:$45,808 ;学生人数:162;49犹他大学学费/年或/学分:$25,035 ;学生人数:163;美国计算机专业研究生申请条件美国高校申请五大件:GPA、TOEFL(IELTS)、GRE、科研、实习。
麻省理工学院-算法导论关于课本的介绍如下:本书自第一版出版以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考手册。
本书全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层次读者的接受能力。
各章内容自成体系,可作为独立单元学习。
所有算法都用英文和伪码描述,使具备初步编程经验的人也可读懂。
全书讲解通俗易懂,且不失深度和数学上的严谨性。
第二版增加了新的章节,如算法作用、概率分析与随机算法、线性编程等,几乎对第一版的各个部分都作了大量修订。
学过计算机的都知道,这本书是全世界最权威的算法课程的大学课本了,基本上全世界的名牌大学用的教材都是它。
这本书一共四位作者,Thomas H. Cormen,Charles E. Leiserson和Ronald L. Rivest是来自MIT的教授,Clifford Stein是MIT出来的博士,现在哥伦比亚大学做教授,四人姓氏的首字母联在一起即是此书的英文简称(CLRS 2e),其中的第三作者Ronald L. Rivest是RSA算法的老大(算法名字里面的R即是指他),四个超级大牛出的一本书,此书不看人生不能算完整。
再介绍一下课堂录像里面授课的两位MIT的老师,第一位,外表“绝顶聪明”的,是本书的第二作者Charles E. Leiserson,以逻辑严密,风趣幽默享誉MIT。
第二位,留着金黄色的络腮胡子和马尾发的酷哥是Erik Demaine,21岁即取得MIT教授资格的天才,1981出生,今年才25岁,业余爱好是俄罗斯方块、演戏、琉璃、折纸、杂耍、魔术和结绳游戏。
另外,附上该书的中文电子版,pdg转pdf格式,中文版翻译自该书的第一版,中文书名没有使用《算法导论》,而使用的是《现代计算机常用数据结构和算法》,1994年出版时没有得到国外的授权,属于“私自翻译出版”,译者是南京大学计算机系的潘金贵。
课程重点算法导论是麻省理工学院电机工程与计算机科学系“理论计算机科学”集中选修课程的先导科目。
美国MIT EECS系本科生课程设置简介清华大学郑君里于歆杰研究美国MIT(麻省理工学院)EECS(电气工程与计算机科学)系的课程安排,可以给我们一些启示,供我国同类系科教学改革参考。
国内已有一些文章对此给出介绍[1-3]。
但是由于该校课程门类很多,与国内教学计划的形式差别较大,往往不容易看清楚核心问题。
本文将MIT课程计划(2005—2006)列成一些表格,以突出要点,从而便于和我国情况进行比较。
首先,给出课程分类及学分,见表1。
表1课程类型划分、大致门数和学分MIT学分统计原则与我国情况不同。
每门课程要计入讲授、实验、复习自学(课外)三部分时间。
例如,电路与电子学为4+2+9=15学分(其中,每周讲课4学时,实验2学时,课后复习9学时),大致相当于我国的5~6学分(每周5~6学时,课内)。
因此,372学分对应我国约372/3=124学分(或稍多至148.8)。
我们关心电气工程与计算机科学本科的主要基础课程设置,下面着重讨论表1中的EECS必修课和限选课程两部分共10门课程的情况,略去其他内容的分析。
表2给出全系必修课。
表2 EECS全体必修课程对EECS系全体学生划分为3个学习(与研究)方向,见表3。
表33个方向及其与我国情况对比与此同时,将全部课程划分为7个工程领域,见表4,每个学习方向的学生按照各自方向规定之原则从7个领域中选取不同课程做组合。
表47个工程领域涉及的主要课程下面给出3个方向限选课程的指导原则,并举出可能构成的选课实例,见表5,这里的5门限选课加上表2的5门必修课以及表1中限选数学1门和限选实验1门共计12门课,大约在2—3年级学完。
将此处结果与我国各系2—3年级主修的10多门课程对照,即可看出二者的区别与共同之处。
表53个方向的选课原则(从7个领域的许多课程中选5门)课程设置特点及其与我国情况比较:(1)统一、坚实的系级平台核心课:表2中的课程是本学科基础知识的精华,全系学生必修。
MIT OpenCourseWare6.033 Computer System EngineeringSpring 2009For information about citing these materials or our Terms of Use, visit: /terms.6.033 2009 Lecture 8: PerformancePerformance: why am I lecturing about it?often has huge effect on designoften forces major re-design as loads growfaster CPUs haven't "solved" performanceproblems have grown too, e.g. Internet-scaledisk and net latency hasn't improvedPerformance Introductionyour system is too slow[diagram: clients, net, server CPU, server disk]perhaps too many users, and they are complainingwhat can you do?1. measure to find bottleneckcould be any of the components incl clientyou hope to find a dominating bottleneck!2. relax bottleneckincrease efficiency or add hardwareDecide what you mean by "performance"throughput: requests/second (for many users)latency: time for a single requestsometimes inverses:if it takes 0.1 second of CPU, and one CPU, then throughput = 10/sec often not inversesw/ 2 CPUs, latency still 0.1, but throughput 20/secqueuing and pipeliningI will focus on throughput, appropriate for heavily loaded systemsmost systems gets slow as # of users goes upat first, each new user uses some otherwise idle resourcesthen they start to queue[graph: # users, reply/sec, linear up, hits a plateau][graph: # users, delay, stays at zero then linear up (queuing delay)] How to find bottleneck?1. measure, perhaps find that e.g. cpu is 100% usedbut maybe not, e.g. cpu 50% use and disk 50% used, just at different times2. modelnet should take 10ms, 50ms CPU, 10ms disk3. profiletells you where CPU time goes4. guessyou will probably have to do this anywaytest hypothesis by fixing slowest part of systemcan be difficult:if disk busy all the time, should you buy a faster disk / two disks?or more RAM?You may need to make application logic more efficientfewer features, better algorithmsI cannot help you with that -- application-specificbut there are general-purpose techniquesThe main performance techniques1. caching2. I/O concurrency3. scheduling4. parallel hardware (two disks, two CPUs, &c)these are most useful when many waiting requestsbut that will often be the case if your server is heavily loaded I'm going to focus on disk bottlenecksEvery year it gets harder to be CPU-boundwhat tricks for good disk performance?hitachi 7K400: 400 GB. 7200. 8.5ms r seek, 9.2ms w.567 to 1170 s/t. 10 heads. abt 87000 cylinders.primer on disks[disk slide]physical arrangementrotating platter: 7,200 RPM, 120/sec, 8.3 ms / rotation continuous rotationcircular tracks, 512-byte sectors, about 1000 sectors/trackperhaps 100,000 tracks, concentric ringsmultiple platters, 5 for 7K400, so 10 surfacescylinder: set of vertically aligned tracksone disk arm, head per surface, they all move together can only read from one head at a timethree movements required:"seek" arm to desired track: varies w/ # tracks, 1 to 15 mswait for disk to "rotate" desired sector under head: 0 to 8.3ms read bits as they rotate under head at 7200disk performance?big multi-track sequential transfers:one track per rotation512*1000 / 0.008362 megabytes/secondthat is fast! unlikely to be a bottleneck for most systems small transfers, e.g. 5000-byte web page:from *random* disk locationseek + rotate + transferavg seek: 9 msavg rotate: 1/2 full rotation for random blocktransfer: size / 62 MB/sec9 + 4 + 0.1 = 13.1msrate = 5000 / 0.0131 = 0.4 MB/seci.e. 1% of big sequential rate. this is slow.sadly this is typical of real lifeLesson: lay your data out sequentially on disk!caching disk blocksuse some of RAM to remember recently read disk blocksthis is often the main purpose of RAM...your o/s kernel does this for youtable:BN DATA... ...read(bn):if block in cache, use itelse:evict some blockread bn from diskput bn, block into cachehit cost: about 0 s to serve a small file from RAMmiss cost: 0.010 to read a small file from diskeviction / replacement policiesimportant: don't want to evict something that's about to be used!least-recently-used (LRU) usually works wellif it's been used recently, will be used again soonLRU bad for huge sequential data that doesn't fitif you read it over and over (or even only once)if it's been used recently, won't be used again for a while!don't want to evict other useful stuff from cacherandom? MRU?how to decide if caching is likely to work?productive to think about working set size vs cache sizeyou have 1 GB of data on disk and 0.1 GB of RAMwill that work out well?maybe yes:if small subset used a lot (popular files)if users focus on just some at a time (only actively logged in users) if "hit" time << "miss" e.g. disk cacheif disk I/O signif fraction of overall timemaybe no:if data used only onceif more than 0.1 GB read before re-use (i.e. people read whole GB)if people read random blocks, then only 10% hit probabilityif hit time not much less than miss timee.g. caching results of computationi/o concurrencywhat if most requests hit but some have to go to disk?and you have lots of requests outstanding[time diagram: short short long short short]we don't want to hold up everything waiting for diskidea: process multiple requests concurrentlysome can be waiting for disk, others are quicker from cachecan use threadsnote: threads handy here even if only one CPUspecial case: prefetch (works w/ only one thread)special case: write-behindschedulingsometimes changing order of execution can increase efficiencyif you have lots of small disk requests waitingsort by trackresults: short seeks (1ms instead of 8ms)the bigger the backlog, the smaller the average seeksystem gets more efficient as load goes up!higher throughput"elevator algorithm"maybe you can sort rotationally also, but that's hardcons: unfair -- increases delay for someif you cannot improve efficiencybuy faster CPU/net/disk if you canotherwise buy multiple servers (CPUs + disks) -- but how to use?strict partition of work: easiestusers a-m on server 1 (cpu+disk)users n-z on server 2 (cpu+disk)no interaction, so e.g. no need for locks, no races hard if e.g. some operations involve multiple users -- bank xfers perhaps factor out computing from storagefront end / back endfront end can get data for all needed users from back endworks well if CPU-bound or FEs can cachePragmaticsprogrammer time costs a lothardware is cheapprogramming most worthwhile if allows you to use more h/w****show slidegoing to look at a quiz question from a few years agoas practice, and to illustrate performance ideasquizzes often present some new pretend system, ask lots of questions about it and effects of changesworth practicing a bit (old exams), takes some getting used to OutOfMoneyserving movie files, to clients, over netsingle CPU, single diskeach file is 1 GB, split into 8 KB blocks, randomly scatteredQ1: 1153 secondsseek + half rotation + (8192 / 10 MB/sec)0.005 + 0.003 + 0.0008 = 0.0088 sec/blocktimes 131072 = 1153if layout were better, how long would it take?mark adds a one-GB whole-file cacheQ2: 1153 secondsdoes that mean the caching scheme is bad?Q3: Bwhat behavior would we expect to see for each of those reasons ifit were true?in what circumstance would that caching scheme work well?how could it be improved?Threads: what is the point? do we expect threads to help?Why do we think it is telling us where it calls yield? What is the significance of those points? (I/O concurrency)Why might non-pre-emptive be important?new caching code:1. 4 GB2. reads each block independently: *block* cache, not whole-fileWhy might per-block caching be important? Probably second-order, tofix a bug in the question: that otherwise GET_FILE_FROM_DISK might prevent all other activity.Q4: 100% hit rate.Maybe an artifact of having sent a first non-concurrent request.What if he had started by sending many requests in parallel?Q5: Ben is right. One CPU, threads are non-pre-emptive.What if two CPUs, or pre-emption? Would this lock be enough?Might need to protect all uses of cache, disk driver, network s/w, maybe best done inside each of these modules.Might want to do something to prevent simultaneous disk read of same block, i.e. make IF, GET, and ADD indivisible. Though a spin-lock is probably not the right answer. Per-block busy flag, wait(), notify().Q6: 0.9 * 0 + 0.1 * 1153 = 115.3Q7: EThe cache is bigger than the total data in use, so no replacementis ever needed.。