Course offerings
Explore the courses offered to graduate and undergraduate students at the Department of Computer Science.
Note that the term information below is current as of the time when this document was produced. Course availability may vary by term or year. Always confirm your course planning in Aurora or by speaking to a science academic advisor.
Check with your instructor for up-to-date and term-specific information, such as whether the current offering has a website or additional materials. Official course details are available through the Academic Calendar; below is a general reference only and is subject to change.
On this page
Undergraduate courses
Below, we present a detailed and structured list of the undergraduate courses that students typically engage with during their academic journey. The courses are categorized year-by-year, spanning from the foundational year 1 through the specialized and advanced topics of year 4.
2024 - 2025 courses
Presented below is the most recent and updated list of undergraduate courses for the academic years 2024 - 2025. This compilation reflects the latest curricular changes and offerings for students.
COMP 1000 courses
Year 1 courses
- COMP 1000 - Introductory Programming: Think Like a Computer
- COMP 1002 - Introduction to Tools and Techniques in Computer Science 1
- COMP 1006 - Introduction to Tools and Techniques in Computer Science 2
- COMP 1010 - Introductory Computer Science 1
- COMP 1012 - Computer Programming for Scientists and Engineers
- COMP 1020 - Introductory Computer Science 2
- COMP 1600 - Navigating Your Digital World
COMP 2000 courses
Year 2 courses
- COMP 2002 - Tools and Techniques in Computer Science 1
- COMP 2006 - Tools and Techniques in Computer Science 2
- COMP 2080 - Analysis of Algorithms
- COMP 2140 - Data Structures and Algorithms
- COMP 2150 - Object Orientation
- COMP 2160 - Programming Practices
- COMP 2280 - Introduction to Computer Systems
- COMP 2600 - Technical Communication in Computer Science
COMP 3000 courses
Year 3 courses
- COMP 3010 - Distributed Computing
- COMP 3020 - Human-Computer Interaction 1
- COMP 3030 - Automata Theory and Formal Languages
- COMP 3060 - Programming Paradigms
- COMP 3170 - Analysis of Algorithms and Data Structures
- COMP 3190 - Introduction to Artificial Intelligence
- COMP 3350 - Software Engineering 1
- COMP 3370 - Computer Organization
- COMP 3380 - Databases Concepts and Usage
- COMP 3430 - Operating Systems
- COMP 3490 - Computer Graphics 1
COMP 4000 courses
Year 4 courses
- COMP 4020 - Human-Computer Interaction 2
- COMP 4060 - Advanced Topics in Computer Science
- COMP 4062 - Honours Topics in Computer Science
- COMP 4140 - Introduction to Cryptography and Cryptosystems
- COMP 4190 - Artificial Intelligence
- COMP 4350 - Software Engineering 2
- COMP 4360 - Machine Learning
- COMP 4420 - Advanced Design and Analysis of Algorithms
- COMP 4510 - Introduction to Parallel Computation
- COMP 4522 - Honours Project
- COMP 4550 - Real-Time Systems
- COMP 4560 - Industrial Project
- COMP 4580 - Computer Security
- COMP 4620 - Professional Practice in Computer Science
- COMP 4710 - Introduction to Data Mining
- COMP 4820 - Bioinformatics
Undergraduate course syllabus
Provided are the PDF files for our undergraduate courses, offering in-depth details for each subject. These documents cover everything from learning objectives to assessment criteria, equipping students with a clear academic roadmap.
This content is available in alternate formats upon request to sci.accessibility@umanitoba.ca.
COMP 1000 courses
COMP 2000 courses
COMP 3000 courses
COMP 4000 courses
- COMP 4020 (PDF)
- COMP 4050 (PDF)
- COMP 4140 (PDF)
- COMP 4190 (PDF)
- COMP 4350 (PDF)
- COMP 4360 (PDF)
- COMP 4300 (PDF)
- COMP 4420 (PDF)
- COMP 4380 (PDF)
- COMP 4430 (PDF)
- COMP 4490 (PDF)
- COMP 4510 (PDF)
- COMP 4522 (PDF)
- COMP 4560 (PDF)
- COMP 4550 (PDF)
- COMP 4580 (PDF)
- COMP 4620 (PDF)
- COMP 4710 (PDF)
- COMP 4820 (PDF)
A guide to first-year Computer Science courses
The Computer Science department offers six 1000-level courses: COMP 1000, COMP 1010, COMP 1012, COMP 1020, COMP 1500, and COMP 1600. There are also two 1000-level lab courses: COMP 1002 and COMP 1006. Note that some of these courses may not be offered in a particular term or year. The courses you choose to take and the order you take them will depend on your goals.
What do I need to get into a CS program?
All students who want to declare a major in Computer Science must have credit for COMP 1020, with at least a grade of B (for the Honours program) or C+ (for the Major program). This is the only computer science course used to determine eligibility for the Computer Science program. For additional requirements, such as mathematics courses, please see the current UM Academic Calendar.
However, before taking COMP 1020, students require a prerequisite CS course, in addition to a high school math prerequisite or equivalent. The computer science prerequisite is one of COMP 1010, COMP 1012, or high school Computer Science 40S.
The prerequisite is required because COMP 1020 assumes that students are already able to solve computer programming problems, using loops and if statements, strings and arrays, implementing simple algorithms like a binary search in working code, and organizing complex solutions into methods or functions. COMP 1020 teaches more advanced programming and computer science concepts, including the use of objects, data structures, more algorithms like sorting and recursion. Solutions are implemented by writing programs in the Java programming language.
Where do I start?
If you do not have high school Computer Science 40S, you must take either COMP 1010 or COMP 1012 before taking COMP 1020. Even if you do have high school Computer Science, many students will still take one of these first introductory courses to ensure their skills are at an appropriate level; this, along with entering the program stream at the same time as their future classmates. If you have high school 40S and want to jump straight into COMP 1020 and Computer Science, you may want to consult an advisor in your faculty (University 1 or Science) for help with more detailed program planning.
COMP 1010 is the traditional introductory computer science course. It teaches the fundamentals of programming, currently using the Java programming language. Although the course title is "Introductory Computer Science 1", most of the coursework will be in the form of computer programming assignments. There will be some discussion of the field of computer science more broadly, but the focus will be on solving programming problems.
COMP 1012 is a similar introduction to a programming course. Here though the course title includes "For Scientists and Engineers", and there is a focus on solving problems that are found in other science and engineering disciplines, such as numeric computing and simulations. Students must take a calculus course either before or in the same term as this one. This course uses the Python programming language instead, as it is more commonly used for solving these kinds of problems.
Please note that you cannot use the credit from more than one towards your degree.
Since COMP 1020 also uses the Java programming language, COMP 1010 is the most natural prerequisite to COMP 1020. Some students choose to take COMP 1012 instead, as learning how to use more than one programming language early can be valuable. This may be a more challenging path, and there are still plenty of opportunities to learn additional programming languages later, starting in second-year Computer Science.
If you are completely new to programming, you may want to consider COMP 1000 instead.
What is COMP 1000?
Although COMP 1010 and COMP 1012 officially start with no assumptions about previous programming experience, they can move very quickly for students who have never done any programming before. Students without prior experience have a much higher likelihood of failing these courses. The COMP 1000 course is an optional course for any student who would like a more gradual introduction to programming before taking COMP 1010 or COMP 1012. This course uses the Python programming language. After completing this course, students will be better prepared to meet the expectations of mastery in COMP 1010 or COMP 1012, one of which is still required prior to taking COMP 1020.
That is, this course does not replace COMP 1010 or COMP 1012, it is a course that you can take in preparation for either of those.
What is COMP 1500?
Since programming is the focus of COMP 1010/1012 and COMP 1020, there is only a limited amount of time remaining in those courses to discuss the broader field of computer science. Here are some examples of the questions we may introduce without satisfactory answers:
- If computers are machines, how does the text of a computer program instruct the machine how to solve problems?
- How do computational solutions scale to real-world-sized problems? For example, how does a search engine index the entire Internet?
- What is the theoretical foundation of practical computation?
- What are the fields of computer science? What is machine learning, data science, computer security, bioinformatics, human-computer interaction, and so on?
- While these questions are answered in our later-year courses, some students may be interested in finding out more before starting in computer science. To answer some of these questions and more, we offer COMP 1500. This course is designed for students who are interested in the field of computing but are more interested in first learning what computer science is, rather than diving straight into solving problems by writing programs.
Since this course does not satisfy the prerequisite for COMP 1020, students who take this course must still take COMP 1010 or 1012 (or high school 40S) before COMP 1020.
What is COMP 1600?
The discipline of computing reaches into all parts of our lives, even when we are not actively using computing devices, data about us is being stored and likely processed, somewhere. There are important societal and ethical consequences to the work that computer scientists do, and it is important enough to make the headlines daily, even in non-technical news outlets. COMP 1600 is an introduction to these issues framed in a way that is accessible to students planning to take computer science and those who are not.
While COMP 1600 is not currently a required course in CS, it is an important course for everyone to take.
What are COMP 1002 and 1006?
There are two lab courses available in the first year, COMP 1002 and 1006. These activity-based courses work through tools and techniques that are valuable for advanced computer usage, for computer science students, and for anyone else who needs these skills for work in other fields. The kinds of topics that are covered in these courses include text markup, version control, Unix shell usage, and virtualization. Many of these skills are necessary in later computer science courses, where they are often not explicitly taught. These courses are not required but are strongly recommended. For a more in-depth overview of the contents of these courses, the textbook for both is available on the website for an introduction to tools and techniques in computer science.
Where do I go next?
After taking COMP 1020 and the other courses required for entry to computer science, it is strongly advised that you declare your computer science major as early as possible. Many of our courses fill early, and registration in 2000-level and up computer science courses opens first to students who have declared a computer science Major/Honours (or joint CS) program.
Normally, the first (fall) term in computer science includes COMP 2140, COMP 2400, and COMP 2450. COMP 2140 looks at more advanced data structures and algorithms than those learned in COMP 1020, including both an examination of their theoretical efficiency, and implementation in the Java programming language. COMP 2400 takes a broader view of programming, exploring how different programming languages are suited to solving different kinds of problems. COMP 2450 is the first in a series of courses that move from solving simple isolated programming problems to beginning to develop more complete and robust software systems.
For more information on these and later computer science courses, please consult our official course offerings list, which includes detailed descriptions of nearly all of our courses.
Graduate courses
For those advancing to postgraduate studies, we've compiled an extensive overview of our graduate courses. This includes not only the course titles, but also the specific semesters they are offered, the esteemed instructors responsible for teaching them, the scheduled days and times for each session, and the corresponding credit values.
2024 - 2025 courses
Presented below is the most recent and updated list of graduate courses for the academic years 2024 - 2025. This compilation reflects the latest curricular changes and offerings for postgraduate students.
COMP 7210 - Research Methodologies
- Associate term: Fall
- Instructors: Ruppa K. Thulasiram
COMP 7570 - Parallel Programing for GPUs
- Associate term: Fall
- Instructors: Christopher Henry
COMP 7750 - Computational Complexity Theory
- Associate term: Fall
- Instructors: Avery Miller
COMP 7850 - Advances in Parallel Computing
- Associate term: Fall
- Instructors: Parimala Thulasiraman
COMP 7860 - Cyber Threat Intelligence and Response
- Associate term: Fall
- Instructors: Azadeh Tabiban
COMP 7570 - Blockchain systems and decentralized applications
- Associate term: Winter
- Instructors: Sara Rouhani
COMP 7570 - Robotics for Human-Robot Interaction
- Associate term: Winter
- Instructors: James Young
COMP 7720 - Introduction to Differential Privacy
- Associate term: Winter
- Instructors: Jimmy Zhu
COMP 7890 - Data-driven Software Engineering
- Associate term: Winter
- Instructors: Shaowei Wang
COMP 7920 - Human-AI Interaction
- Associate term: Winter
- Instructors: Andrea Bunt
COMP 7922 - Computational Geometry
- Associate term: Winter
- Instructors: Stephane Durocher
Contact us
Department of Computer Science
E2-445 EITC, 75 Chancellors Cir
University of Manitoba
Winnipeg, Manitoba, R3T 5V6 Canada
queries@cs.umanitoba.ca - General inquiries
cs.gradprogram@umanitoba.ca - Graduate Program inquiries
cs-support@lists.umanitoba.ca - Technical support for students