Analyse general problem-solving strategies and algorithmic paradigms, and apply them to solving new problems;

  1. Analyse general problem-solving strategies and algorithmic paradigms, and apply them to solving new problems;
  2. Prove the correctness of programs, analyze their space and time complexities;
  3. Compare and contrast various abstract data types and use them appropriately;
  4. Develop and implement algorithms to solve computational problems.