# 1.4 课程结构和资源

接下来，我将花几分钟来介绍6.s081这门课程的结构，之后我们再来介绍具体的技术内容。

课程有一个网站，可以通过google查询6.s081找到。网站上会有课程的计划，lab的内容，课程结构的信息，例如最后是怎么打分的。

另一个资源是Piazza，它主要用来做两件事情，第一件是人们可以在上面咨询有关lab的问题，助教们会尝试回答这些问题，但是你们也可以彼此回答问题；第二件是上面会有课程相关的通知，我们会把通知发上去，所以你应该时不时关注Piazza，即使你不使用它寻求实验的帮助。

![](https://1977542228-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHZoT2b_bcLghjAOPsJ%2F-MHl9exK8EbTldim_YCM%2F-MHq9NI3bxdXL2Itz9mm%2Fimage.png?alt=media\&token=a3ccd690-e80d-4762-b3f0-c04cb33489fb)

授课内容是这门课程的一大部分，我们会讲解操作系统的基本概念。有几节课会专注于学习XV6中的代码，XV6是我们的一个小的用于教学的操作系统，我们会介绍它是如何工作，查看它的代码，并在课程中演示代码的运行。在每一节课程之前都会有作业，作业会要求你们阅读介绍XV6的书籍，书籍的内容是XV6如何运行以及设计思想。所以你应该在课程之前完成相应的阅读，这样你才能理解课程的讨论内容。有几节课会专注于帮助你完成实验内容，例如解释C语言是如何工作的，例如介绍RISC-V是如何工作的，这是我们将要使用的一个微处理器。这些内容对于你们完成实验是有帮助的。在课程的结束部分，我们会花几节课时间来阅读一些操作系统相关的论文，包括一些研究论文和一些经典论文。我们会要求你在课程之前阅读这些论文，我们也会在课堂上讨论这些论文。几乎对于所有的课，我们会要求你对于阅读材料提出一些问题，我们会读取这些问题，以帮助我们决定课程上讲解什么内容，并且我们也会尽可能的回答这些问题。

这门课程的下一大部分是lab，几乎每周都会有一些编程实验。实验的意义在于帮助你获得一些使用和实现操作系统的实际动手经验。比如说，下周截止的实验实际上是写一些应用程序代码来执行我们之前谈到的系统调用，之后的大部分实验则要求你要么实现基本的操作系统功能或者扩展XV6操作系统。最后一个lab会要求你添加一个网络协议栈和一个网络驱动，这样操作系统才能连接到网络上。如果你对于实验有问题，你可以在Piazza提出问题，助教会在办公时间解答。我们鼓励你们去讨论实验相关的内容，讨论如何完成实验，但是请不要抄别人的答案。lab中所有的代码都必须是你自己写的，你不应该分享代码或者查看别人的代码

![](https://1977542228-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHZoT2b_bcLghjAOPsJ%2F-MHl9exK8EbTldim_YCM%2F-MHsNSA3KtS8xxdyGBVQ%2Fimage.png?alt=media\&token=c361bf90-ca1e-4941-b1c9-92cb762a0c71)

最后的分数，主要是由lab决定的。70%的分数是由你提交的lab代码是否通过测试决定的。在打分的时候，我们会使用提供给你们相同的测试用例，所以如果你的代码通过了我们提供的所有测试用例，那么你很有可能会得到所有lab的分数。20%的分数是由lab核查决定的，对于每一个同学，我们会选择一些随机的lab，某个助教会问一些lab实现的问题，来确保你真正理解了lab的内容。最后10%，会由作业，课程参与，Piazza的活跃度决定。今年这门课程没有考试和测验。所以你可以看出，90%的分数是有lab决定的，所以你应该在lab上花费大量的时间，并且尽早开始，这样你才会有充足的时间来完成它们，并得到全部的分数。所以，你可以看出，这是一门注重软件实操经验的课程。

![](https://1977542228-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHZoT2b_bcLghjAOPsJ%2F-MHl9exK8EbTldim_YCM%2F-MHsQ8o0gWoNRkVg1Mpd%2Fimage.png?alt=media\&token=38c41cfb-a89b-458f-83ef-c51af6b01b9a)

> 学生提问：lab是只有对或者错两种结果吗？有中间结果吗？
>
> Robert教授：嗯。。。这个我还没考虑过。会有中间结果的。
