And even if we don't go to these extreme examples, I'm
sure that you have all experienced
software problems, typically manifested in what
we call a crash. And that crash might happen while you're
finishing your homework or that three-page long email that you were preparing
for the last two hours. But why's it so difficult to
build software, or better, why's it so difficult to build good software?
And how can we do it? This is exactly the topic
of this class. And the reason why software engineering is a fundamental
discipline in computer science. To motivate that, in this class, we
will study a set of methodologies, techniques, and tools, that will help
us build high quality software that does what it's supposed to
do. And therefore, makes our customers happy. And that does it within
the given time and money constraints. So within the budget that
is allocated for the software. Before
jumping into today's software engineering techniques
though, let me take a step back and look at how
we got here, as I believe it is very important to have
some historical perspective on how this discipline was
born and how it was developed over the years.