Design, implement, debug and test a modular application. Create reusable software components and analyse their performance. Select and use appropriate data structures to solve specific problems.