Lectures: 1 session / week, 3 hours / session
Most complex systems today contain a great deal of software and digital components and will contain even more in the future. At the same time, software is becoming the Achilles heel of complex system development: At least half of all large software-intensive system projects are cancelled or suffer major delays and problems. System engineers and managers are often unprepared to cope with this new technology. The goal of this class is to learn why building these systems is so difficult and to provide system engineers, managers, and software engineers with the tools and knowledge to avoid these problems. At the end of the class, you will be able to exercise professional judgment in selecting approaches 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. Note that the class is a system engineering of software class, not a standard software engineering class and as such will not provide basic training in programming or in specific approaches or tools for developing software.
There are no prerequisites and no required background although it will help if you have some minimal knowledge of programming. Having some system engineering project experience will also be helpful. What you get out of the class will be a function of what you bring to it along with your personal goals and objectives. Each student may find they get different things out of the class.
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/system engineering dogma.
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. The summaries from the last week will involve synthesizing what you have learned in the class.
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.
Grades will be based on the weekly assignments.
The topic is vast and cannot be completely 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 are available in the calendar and readings sections respectively. Copies of the class lecture notes are available in the lecture notes section.
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:
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 given and described in class.