|
Formal methods in software engineering, first-order logic, basic specification elements and rigorous proofs. Verification and validation. Testing and debugging techniques and tools. Reusability, modularity, top-down and bottom-up development approaches, object classification, support for concurrency and polymorphism. |