Department of Computer Science

This course aims to provide a solid introduction to foundational topics in computer science, so covers a lot of useful and interesting topics.

A sample course outline can be found here.

A Long and Winding Road

We begin the journey using Python, looking at algorithms, and how to use and create rich data types and structures.

Then we move on to the theory of computing, where we meet the Turing Machine, a conceptual computer at least as powerful as any other we've ever built or seen. The Turing Machine also helps us to learn about the limits of computability.

Finally, we explore the architecture of the computer, from the underlying circuits up to the language of the machine. We see how these are organized and operate, along with some historical context to illuminate why almost all computers work in a very similar way.

Other useful information

The course text is Computer Science: An Interdisciplinary Approach, and the authors' wesbite for it is here. A digital version is available to purchase online from VitalSource, or direct from the publisher.

All programming on this course will be in Python.

Students who do not already have Python Version 3 installed should download it from here.

COMP1001 - Introduction to Programming is one of the pre-requisites. If you took that course prior more than two semesters ago then I strongly suggest that you refresh your understanding of Python before this course begins.

The course also uses simulators which require that you have a Java Virtual Machine (JVM) installed, version 1.6 or newer. If necessary, go to and download it from there.

CS Majors who took the 'old' COMP1000 in Spring 2019 or earlier do not need to take this course.