apply enhanced problem solving skills to develop algorithms
implement programs from algorithms, showing an understanding of control flow
adhere to standard software engineering practices, including documentation, unit testing and debugging
compare different methods available for the same problem in terms of efficiency and other criteria
demonstrate foundational learning skills including active engagement in their learning process