MIT OpenCourseWare
  • OCW home
  • Course List
  • about OCW
  • Help
  • FeedbackSupport MIT OCW

教学大纲

先修课程

课程6.170 及熟练掌握Java®

上课形式

课程6.035中的讲座、习题集和考试都是围绕编译器项目展开的,该项目分为五部分。每部分分别阐述了该编译器结构的一个独立侧面。每部分(除第一部分外)包括一系列的讲座,一个编程作业以及习题集或课堂测试。

在每部分开始时给出程序作业。然后,使用一系列讲义介绍相关材料。该部分剩余时间全部用于完成该项目,这个过程不采用课堂形式。每小组应该安排每周一次的“项目评估”会议,与助教讨论设计决策、项目进度和小组状态。每部分在项目作业完成之时结束。 教学日程 列出了时间安排表,分发资料4“项目总览”详细描述了项目细节。除项目作业之外,还会有三次课堂测试和四篇论文作业,每篇论文作业应包括与一小组成员进行一对一的论文讨论。

项目

课程6.035的主体内容是编译器的设计和执行。在课程的每部分中,逐步完成编译器建构。课程的五部分为:扫描器和剖析器、语义检查器、代码生成器、数据流优化器和指令优化器。这五部分作业都以小组形式完成。

如同之前,我们也提供两种版本的编译器项目:18位和12位。一个项目组的所有成员必须注册同一版本。课程6.035的所有学生应该注册12位的版本。想挑战更高难度项目的学生可以通过增加数据同时注册课程6.907(6位)。申请6.907课程的增加表不需要教授签名。这6位的的分数仅仅计算在项目成绩以内。

12位版本的项目是为你的健康着想:来一杯Decaf咖啡就可以让你获得建构一个简单而完整的编译器带来的键盘操作经历。而要完成18位版本的项目,你需要来一杯热气腾腾的Espresso浓咖啡,这样你还能体验在建构具有工业实用价值的编译器过程中所产生的一些实际问题。

我们提供更高难度的项目和增加的6位是为了给予有兴趣的学生一个机会,使他们能够对建构编译器过程中所涉及到的问题有更深的理解。这才是你们选择18位版本课程的原因,而不只是为了获得增加的6位。

两个版本的项目完成日期相同。

项目评估

每小组应该安排一个与助教讨论项目状况的周会。这个会议非常关键,学生可以详细阐述项目的执行细节。助教通过学生的参与情况来评估每个学生的能力和对项目的贡献。

助教咨询时间

助教自行设定每周提供咨询的时间,在此时间段内助教在办公室等候。这样增加了学生与助教的“面谈时间”。时间将稍后公布。如果想在咨询时间外与助教面谈,请打电话或发电子邮件预约。

评分规则

  • 无补考。如果有合理理由无法参加测试,请在测试  告知任一教师。
  • 在规定日期当晚之前提交项目(无论是否已经完成),但必须在下一个项目前完成此项目。逾期提交则扣除分数的10%。
  • 每一次项目作业,小组的每一个成员将会得到相同分数。但是,如果我们觉得小组某个成员做出了超越自己份额的贡献或者未完成所分配任务,我们将会相应调整其分数。所以,与助教保持沟通很重要,及时更新你所在小组的项目进度和你本人对项目的贡献。

总分根据以下权重给出:


评分内容 百分比
编译器项目 58%
论文讨论(每篇3%) 12%
课堂测试(每次10%) 30%

请明确你的最终分数是如何计算出的。有关项目成绩的计算方法详见 项目 部分。

论文阅读和讨论

课程6.035今年的新特点之一是我们希望学生能阅读分发的论文,然后与教授或助教进行一对一的讨论。这里描述的是,我们期望学生通过这个新特点完成什么内容,以及在学生阅读论文并参与讨论的过程中,我们能从学生身上得到什么新的启示。

  • 我们的期望: 论文是交流最新研究成果的首要方式。与标准的教材如教科书不同,论文往往是由做这个研究的个人或小组执笔,并且一般在研究结束后短时间内完成。因此论文趋向于反映研究人员的观点,而且此观点也许不同于相同研究领域其他人员的观点。如果论文在研究结束后立即完成,则该研究的影响以及该领域的整个结构还不会被人所知。这样论文可能会缺失关键概念,而其他人在后来会发现这些概念对于在该领域中理解此论文起着重要作用。

    我们发给学生阅读的某些论文是专注于表达研究者对于早些年研究的观点。所以这里要强调的重点不是新的研究成果,而是在于理解该项研究在整个领域中所起到的重要作用,也许此领域在该研究完成之后已经取得了重大发展。

    因此我们认为在你阅读一篇论文时,重要的是始终牢记自己的观点,并运用你对此论文发表后该领域发展状况的理解来诠释其研究成果。另外要充分领会作者在论文中体现的独到见地!

  • 我们对学生的期望: 基本上,我们期望学生能首先阅读论文,然后准备两个方面的讨论:研究成果和你对该研究的观点。很多论文展现了一种研究方法(在本课程中,具有代表性的是编译器创建和编程语言的某方面)和作者通过在实验背景下运用此研究方法所得到的实验结果。研究方法和实验结果两者综合即是此研究的客观研究成果。我们期望学生理解表述这些结论。
    一旦理解研究结论之后,学生就需要形成对于此研究的个人观点,能就此观点进行讨论,并有意识地捍卫自己的观点。以下是一些能帮助学生形成个人观点的问题:

    1. 你喜欢这项研究吗?你觉得所运用的研究方法有趣吗?

    2. 该项研究的研究背景是什么?在此项研究进行之前该领域的状况如何,以及这项研究又是怎样改变其状况的?

    3. 这篇论文有出乎你预料之处吗?从这篇论文中你是否得到任何能够推广应用于其它领域的见解?

    4. 你认为其实验结果是否可验证所运用研究方法?你是否曾经倾向于得出不同的实验数据或采用重新设计的实验?作者所做实验有哪些局限或目标?

    5. 作者是否理解比其所做研究更广泛的内容?作者对其研究持怎样的观点,你有不同的观点吗?

    6. 在论文发表后,该领域产生了怎样的变化?随着时间的推移,这个研究是否更加有趣、更与该领域密切相关?是有他学者在此研究基础上进行过新的研究,还是整个研究努力因与未来发展毫不相关而被放弃?
    7. 在未来,这项研究会有怎样的重要地位?

F最后,写一篇150到200字的论文摘要,用以准备一对一的讨论。

不完善

只有在非常情况下,才会出现不完善,并且这种情况需要工作达到不完善所要求的程度。引用MIT课程目录上话:“I分数只有在工作要求的一小部分没有完成并且在完成时达到了合格分数的情况下给出。”

团队合作方针

“院系关于学术诚信的指导方针”要求我们告知学生关于学术行为的期望。对于家庭作业和第一个项目作业,允许学生就问题要求和背景材料与任何人进行讨论。但是,学生所提交的解决方案必须是个人独立完成的作业。其余项目作业,学生可以与任何人就背景材料、问题要求、问题解决方法以及设计等方面进行讨论,但学生不能浏览由任何人包括往届学生为课程6.035编写的代码。实际代码必须是小组编写的结果。个人必须独立参加所有考试。在过去,许多学术不正当行为案例产生的原因在于学生的错误判断,这些学生要么发现着手完成作业的时间过晚,要么觉得自己没有能力完成作业。请记住:在课程6.035中可能得到的最差成绩也远比不上学术不正当行为对你的事业所产生的长期后果严重。请现在就认真思考这些问题,这样在该学期中如果你暂时感到疲倦、压力过大、绝望而试图违反团队合作方针时,才不会动摇。处理这些学术不正当行为事件需要我们的课程教职员工付出大量毫无意义的努力。如果在这学期必须处理类似事件,我们也不会高兴,但我们将在我校相关规定最大范围内对你进行最严厉的起诉。