CSC207 Software Design
Lectures
Introduction

Background

Engineering is about:

Applying science

Building large, complex things

Software engineering is about:

Applying computer science

Building large, complex applications

Who Needs It?

Research

Equivalent of good laboratory technique

Your results are only as reliable as your software

The better you use tools, the more research you will be able to do

Industry

"On spec, on time, on budget"

This Course

You have to walk before you can run

So this course is about software carpentry

Building houses, not skyscrapers

"Tools and techniques appropriate for up to a dozen people working for up to a dozen months"

Goal is to make you a better computer scientist by showing you how theory and practice are related

Some Actual Zen

"You can't drink tea without a cup"

I.e., you can't explain abstract concepts without giving examples

But the examples are not the concepts

You will learn many new tools in this course

They will make you a better programmer

But the real point of the course is the ideas the tools embody

What Matters Most?

There are no silver bullets

No technological change in the last 20 years has had a significant impact on productivity

"Productivity" measured by error rates, ability to meet schedules, development costs, etc.

What matters is how you program

Technologies come and go, but good working practices last forever

The easiest mistakes to fix are the ones you don't make

Course Content

Topics

Version control

Build management

Parsing using finite state machines

Systematic testing and debugging

Scripting

Meta-topics

(More) object-oriented programming

Design patterns

Reflection

Development process

Assessment

Exercises

Four exercises worth 5% each

Four exercises worth 10% each

Two of these exercises will be done in pairs

Final Exam: 40%

Glass's Law

"Any new tool or working practice initially makes you less productive"

Always faster to solve the immediate problem the old way

Do not let that stop you from learning new tools and skills

In the real world, you will have to re-train every three years

Or be as obsolete as an old PC

Remember: "busy" is not the same as "productive"


$Id: intro.html,v 1.1.1.1 2004/01/04 05:02:31 reid Exp $