Develop and use a series of test cases to verify that a program performs according to its design specifications.
Modify an existing program to add additional functionality and discuss intended and unintended implications (e.g., breaking other functionality).
Evaluate key qualities of a program through a process such as a code review.
Compare multiple programming languages and discuss how their features make them suitable for solving different types of problems.
Evaluate computational artifacts to maximize their beneficial effects and minimize harmful effects on society.
Use and adapt classic algorithms to solve computational problems.
Evaluate the impact of equity, access, and influence on the distribution of computing resources in a global society.
Evaluate algorithms in terms of their efficiency, correctness, and clarity.