MIT OpenCourseWare


» 進階搜尋
 課程首頁
 教學大綱
 教學時程
 相關閱讀資料
 課堂講稿
 作業

教學大綱


本頁翻譯進度

燈號說明

審定:無
編輯:蘇維宗(簡介並寄信)
編輯:侯嘉玨(簡介並寄信)

此教學大綱說明了本課程的目的、結構、指導原則以及教學方針。此教學方針是用來指導有選修此課程的學生。


目的:即將完成此課程之時,你將可以對軟體工程技術與方法進行評估。在需要為專案選擇一個方法時也可以根據你對目前所執行與軟體工程相關的工作、過去做了哪些嚐試、哪些是可行或不可行的、以及為什麼等因素的了解而做出專業的判斷。

必要的背景知識:本課程是一門研究所課程,因此並沒有提供程式設計或是發展軟體之特定方法與工具的基本訓練。雖然在選修此課程之前並沒有必修的課程,但是具有一些在程式設計上的基礎經驗以及曾經參與過軟體工程團隊專案將會非常有用。然而,以前修過本課程的學生認為即使他們沒有這些先修條件也能在本課程中獲益。

指派閱讀:本課程並沒有教科書,雖然在當你需要更多相關的背景知識而需要查閱特定主題時,擁有一本軟體工程的書籍將會相當有幫助。這樣的書籍非常的多而且每一本都對你有所幫助(它們都非常相似)。

取代教科書的是閱讀一些經過精心挑選而被認為是具歷史性且相當重要的基礎論文以及一些反映新想法的近期論文。有一些論文是技術性的,但是大部分是一些觀念和看法。由於文獻非常的多,因此在選擇論文時會以它們過去對此領域發展的關聯性或是可以幫助你對目前軟體工程準則下的假設提出看法的能力為根據。

指派作業: 本課程不會有程式設計的作業。因為我的目的是提升你們作出成功與專業判斷的能力而不是使用特殊的工具或方法來開發軟體,所以大部分的指派作業將會包含評估與解釋而不是真的去應用特定的技術或工具。

總共會有兩種類型的指派作業:在每一堂課之前,你會被要求繳交每週所指派之論文的心得報告(半頁到一頁)其中包含對此論文的評論(請參考下面的指引)以及回答在此主題或論文上的特定問題。因為課堂進行時會包含許多指派閱讀的討論,因此遲交的心得報告將不會被接受。

本課程也沒有考試,除了在最後一個禮拜的心得報告中必須包含綜合你在此課程中學到了什麼。

課堂時間:課堂活動將包含講授與討論。你會發現大部分的觀念都可以很容易地從指派閱讀中學習並且不需要我的解釋。有少部分的主題,因為比較難以自己學習或是我不能找到與這些主題有關與適合的論文,所以會在課堂上被介紹。參與課堂上的討論會比課堂上的講授獲得更多。

評分:評分的依據是每週所指派的作業。

教學時程:軟體工程是一個無法用一學期來涵蓋的浩瀚主題。因此會有一些特定主題隨時被挑選出來並且可能在未來的課程中進行修改。教學時程與指派閱讀的列表可以在課程網頁中找到。你也可以在該網頁中下載課程的講稿與筆記。

指派閱讀的指引:在每堂課開始之前,你必須繳交一份每週所指派之論文的心得報告(半頁到一頁)並包含下列問題的答案:

  • 此篇論文的創意和主題是什麼?(即,此篇論文的簡短摘要)
  • 對於此篇論文的評價: 哪些事情是你特別同意或喜歡的?哪些事情是你不同意的?它與你的經驗符合程度為何?
  • 任何在你閱讀此論文時所得到的其它想法或創意?

很明顯地在第一堂課時不可能有指派閱讀的心得(因為還沒指派),因此這些心得的特殊繳交期限會註記在教學時程中。

此外,此課程的行事曆列出了每一堂課的講授主題與指派作業,並且提供課堂講稿的連結。




The syllabus presents the objectives, structure, guidelines and policies for the course. The policies are intended to guide students enrolled in the course.


Objective: By the end of the class, you will be able to evaluate software engineering techniques and approaches. You will also be able to exercise professional judgment in selecting an approach for a particular project based on an understanding of how the present state of software engineering practice came about, what was tried in the past, what worked and what did not work, and why.

Required Background: This class is a graduate class and as such will not provide basic training in programming or in specific approaches or tools for developing software. While there are no prerequisites, some basic experience in programming will be helpful as will having participated in some software engineering team projects. However, students in previous classes say they have benefited from this class without these prerequisites.

Reading: There is no textbook for the class although it will be helpful to have a general software engineering textbook available to look up specific topics that you need more background on than you already have. There are lots of these available and any one will do (all are pretty much the same).

Instead of a textbook, required reading will consist of a carefully selected set of historically important and foundational papers as well as more current ones reflecting the latest thoughts. Some papers will be technical while others will be opinions or essays. The literature is vast, and papers have been selected for their historical relevance in the development of the field or for their ability to help you critique the assumptions underlying current software engineering dogma.

Assignments: There will be no programming assignments. Because my goal is to enhance your ability to make successful professional judgments rather than use a specific set of tools or a particular approach to engineering software, most assignments will involve evaluation and interpretation rather than practice in applying particular techniques or tools.

There will be two types of assignments: Before each class session, you will be required to submit a short (one half to one page) summary of each paper assigned for that week along with a critique of the paper (see instructions below) and occasionally answers to a few specific questions on that topic or paper. Because class sessions will involve a lot of discussion of the readings, late summaries will not be accepted.

There will be no exams aside from the last week's summaries, which will involve synthesizing what you have learned in the class.

Class Sessions: Class meetings will include a mixture of lecture and discussion. You will find that most concepts are easily learned from the readings and do not require my explaining them to you. A few topics are difficult to learn on your own or I could not find any good tutorial papers on them so they will be described in class. You will get the most out of the class if you participate in the class discussions.

Grading: Grades will be based on the weekly assignments.

Schedule: Software engineering is a vast topic that cannot be covered in one semester. The specific topics to be covered have been chosen somewhat arbitrarily and may change in future offerings of the class. A schedule and list of assigned readings will be available on the class web page. Copies of the class lecture notes will also be available for download there.

Instructions for Reading Assigments: Before each class session, you will submit a short (one half to one page) summary of each paper assigned for the week along with the answers to the following general questions:

  • What are the main ideas or themes? (i.e., a very brief summary of the paper)
  • Critical evaluation of the paper: What things in particular did you agree with or like? What things did you disagree with? How does it measure up with your experience?
  • Any additional thoughts or ideas you had while reading it?

Because it obviously will not be possible to read the papers for the first class by the first class meeting (as they were not available), their summaries will have special due dates as noted on the schedule.

In addition, there may be some short assignments during the semester that will be posted and described in class.




 
MIT Home
Massachusetts Institute of Technology Terms of Use Privacy