Overview
Why data structures is a key course Main points from syllabus Survey Warmup program And now to get started...
Problem-solving and software engineering What is problem-solving? The software life cycle What makes a good solution?
Problem solving (Optional) identifying a problem that can be solved by a computer Understanding the problem Designing, implementing, and testing a computer program to solve the problem
A solution is: an algorithm a step-by-step specification of a method to solve a problem within a finite amount of time plus a data structure a way of organizing the data the algorithm works on
The software life cycle Specification Design Risk analysis Verification Coding Testing & refining Production MAINTENANCE
Design Identify objects loosely coupled cohesive Specify the data flow among objects Specify each method’s purpose, assumptions, and I/O what it does, not how pre and post-conditions
Verification formal methods for proving that a program works correctly not necessarily efficiently, usably, etc.
Object-Oriented Design Abstraction and information hiding procedural abstraction data abstraction information hiding OOD Functional decomposition Modeling OO designs with UML Advantages of an OO approach
Key issues in programming A good program (problem solution) is: modular modifiable easy to use fail-safe stylish debuggable