This course is intended to lay the foundations for developing good problem solving skills within students of Computing. It is not aimed at teaching any particular programming language or paradigm per se. The ideas covered in this course will be revisited in more detail in a variety of courses in the subsequent part of the Information Technology/Computer Science major. As a consequence, no knowledge of programming is assumed as a prerequisite to this course, yet at the end of the course students would have been exposed in a concrete way to computation, and the tools that have been developed to control its complexity as well as implement its processes in physical devices. This course therefore serves as one of the cornerstone courses of the entire curriculum for the Information Technology programme and the Computer Science major, and requires only that students come to it prepared to think in ways unfamiliar to them.
Students will be required to pass both the coursework and the final examination to pass the course.
Anyone of the following: