Computer Science 351 — Theoretical Foundations of Computer Science II

Welcome to CPSC 351!

CPSC 351: Theoretical Foundations fo Computer Science II

About This Course

Computer Science 351 is a second-year undergraduate course in the mathematical foundations of computer science, and an introduction to theoretical computer science, offered by the Department of Computer Science at the University of Calgary. It is a required course for students majoring in Computer Science.

You will not be learning about “cutting-edge technology” in this course, and it will sometimes be difficult to point to applications of topics and skills in the workplace. As in CPSC 251, the focus is more on “foundational” knowledge and skills that you will need, in order to be ready for a later study of technology and applications like these. You certainly will have an an opportunity to study these things in courses after this one.

In particular, you will learn a little about material in areas called “automata theory” and “computability theory” that will help you to understand the limits of computation in this course. The study of discrete mathematics — specifically, discrete probability theory — that was started in CPSC 251 will also be continued here.

In Fall 2025, one section is available:

In Fall 2025, this is also a flipped course: Students will be expected to complete a reading assignment (or watch a video) before attending each lecture. The lecture time will be used to solve a problem that is related to the assigned reading and makes use of material introduced in it.

This course will have a D2L course site which will be used for course communication and reporting of grades. All material, supplied to students for course work, will be made available on the D2L site. The page that you are reading now (and other pages linked to it) includes a subset of this material that can also be accessed by people outside this course. They pages are certainly “under construction” at this point, and they describe the course as it will be offered in Fall 2024.

Lecture and Tutorial Material Organized by Topic

  1. Introduction to Course and Review of Prerequisite Material
  2. Finite Automata and Regular Languages
  3. Turing Machines and Their Languages and Functions

Additional Course Information


University of Calgary Extension of Logo
Department of Computer Science

cpsc 351 computer science faculty of science u of c

cpsc 351 intro and review finite automata and regular languages turing machines course admin assignments