By attending this course, the students are expected to
- Use modern development tools, including version control systems, development environments, build and test automation, debugger, and static analysis tools
- Understand common design paradigms in object-oriented languages, GUIs, and the design patterns associated with these paradigms
- Use UML for software modeling
- Design and develop medium-scale concurrent interactive software systems
- Follow a design process from a reference architecture, to object model, and to implementation
- Apply design patterns to achieve quality attributes such as performance, extensibility and reusability
- Design and develop software for reuse (libraries, components, frameworks, and product lines)
- Be able to write thread-safe concurrent programs
- Understand the importance of software testing and be able to perform unit test, module test and integration test mechanisms