This unit builds the foundation for core concepts in the Software Engineering knowledge area, most notably in the Software Processes, Software Design and Software Evolution knowledge units.
Program comprehension
Program correctness
Types of errors (syntax, logic, run-time)
The concept of a specification
Defensive programming (e.g. secure coding, exception handling)
Code reviews
Testing fundamentals and test-case generation
The role and the use of contracts, including pre- and post-conditions
Unit testing
Simple refactoring
Modern programming environments
Code search
Programming using library components and their APIs
Debugging strategies
Documentation and program style
Trace the execution of a variety of code segments and write summaries of their computations. [Assessment]
Explain why the creation of correct program components is important in the production of high-quality software. [Familiarity]
Identify common coding errors that lead to insecure programs (e.g., buffer overflows, memory leaks, malicious code) and apply strategies for avoiding such errors. [Usage]
Conduct a personal code review (focused on common coding errors) on a program component using a provided checklist. [Usage]
Contribute to a small-team code review focused on component correctness. [Usage]
Describe how a contract can be used to specify the behavior of a program component. [Familiarity]
Refactor a program by identifying opportunities to apply procedural abstraction. [Usage]
Apply a variety of strategies to the testing and debugging of simple programs. [Usage]
Construct, execute and debug programs using a modern IDE and associated tools such as unit testing tools and visual debuggers. [Usage]
Construct and debug programs using the standard libraries available with a chosen programming language. [Usage]
Analyze the extent to which another programmer’s code meets documentation and programming style standards. [Assessment}
Apply consistent documentation and program style standards that contribute to the readability and maintainability of software. [Usage]