At the end of the course, the students will be able to (compliant with Bloom’s Taxonomy):

**Explain**what an algorithm is and**describe**the algorithmic steps to take for solving a computational problem.**Recall**the programming constructs that are required for developing a program for implementing an algorithm that is a solution to a computational problem.**Apply**the algorithmic concepts and programming constructs covered in the course to**design**programs to solve computational problems that can commonly arise in engineering.**Analyze**an existing program to**understand**(i) what problem it solves, (ii) how it solves the problem, and (iii) the errors in the program if it is not working.

As such, the course will contribute to the following program outcomes:

- an ability to apply knowledge of mathematics, science, and engineering
- an ability to function on multidisciplinary teams
- an ability to identify, formulate, and solve engineering problems
- a recognition of the need for, and an ability to engage in life-long learning
- an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice