CEGEP
Why CS? Program List How to Choose Freshman Introductory Courses McGill Transfer Interdisciplinary Internships Jobs Grad School Med School Research Games Personal Advice Applying Chinese

Introductory Computer Science CoursesThere are many choices for introductory computer science courses, whether you are looking for general interest courses or more technical courses that prepare you for a computer science minor or major or software engineering major. On this page we describe all of the entrylevel computer science courses. You might also be interested in viewing these related pages:
COMP 102  Computers and ComputingCOMP 102 is a general interest course most suitable for you if you would like a broad overview of computing and computers. This course assumes no previous knowledge of computer science and has been successfully taken by students from a wide variety of faculties. (Note that Management students cannot receive credit for COMP 102.) The topics in this course include impact of computers on society, the workings of web pages and dynamic content, the inner workings of computers (hardware), networking principles, a brief introduction to algorithms and programming, how computers store data (image, sound and video), and software distribution policies and mechanisms. If you are more interested in learning how to program with a modern highlevel programming language, then COMP 202 is a better choice for you. COMP 102 cannot be taken concurrently or after COMP 202, COMP 203, COMP 208 or COMP 250, so if you are interested in this course, make sure you take it before any of those other courses. COMP 202  Introduction to Computing 1This is an introductory course in computer programming for students who would like to understand how software is written and learn the basics of writing their own software. COMP 202 has a new team of professors who have modernized the course and are making sure that it is at an appropriate level for beginning programmers. In COMP 202 students learn and practice with fundamental and modern concepts of programming as well as learn good programming practices. Assignments allow students to gain experience with both numerical and graphic applications; this experience can be extended into further computer science studies or applied directly to a wide variety of domains outside of computer science. Students from a large range of faculties and programs take COMP 202; no prior programming experience is assumed. Students interested in pursuing a computer science or software engineering program should choose COMP 202 in their first year at McGill, whereas other students may include it later in their studies. Students who already have a solid background in programming in any highlevel language may prefer to start directly with COMP 250. COMP 202 is offered in both the fall and winter terms, with several sections available for each term. COMP 208  Computers and EngineeringThis course is intended for engineering students, except for electrical and computer engineers, who take COMP 202 instead. COMP 208 has a greater emphasis on numerical problems than COMP 202 . B.Sc. students are allowed to take this course, but it is generally preferable for Science students to take COMP 202, since COMP 202 is part of the minor and major programs in computer science and it gives better preparation for subsequent computer science courses. COMP 230  Logic and ComputabilityThe purpose of this course is to offer the general undergraduate student  whether in Science, Arts, or any other faculty  the chance to learn some of the fundamental and revolutionary ideas that underlie modern concepts of computation, and to explore their theoretical limitations. The influence of these ideas is pervasive today and plays a central role in discussions of artificial intelligence, the origin of consciousness, and the nature of information. The aim of this course is to introduce students with no background other than CEGEPlevel mathematics to the theoretical foundations of computer science. These include an introduction to classical and intuitionistic propositional logic and the predicate calculus, leading up to Gödel's incompleteness results, one of the major intellectual achievements of the 20th century. Other topics are proof systems, notions of computability, Turing machines, the ChurchTuring thesis, the existence of unsolvable problems, completeness, Tarski semantics, and uses and misuses of Gödel's theorem. In the past this course has been taken successfully by students in history, linguistics, environmental studies, economics, chemical engineering, mathematics, physics, computer science, and software engineering. COMP 230 is offered in the fall term. If you would like to know more about this course or if this course is a good choice for you, please contact the instructor, Professor Dirk Schlimm. COMP 250  Introduction to Computer ScienceThis course offers an overview of computer science and describes some of its most important concepts. At the core of computer science is the idea of an algorithm, which is a precise "recipe" for solving a given problem. In this course, students learn how to design algorithms, and how to transform them into computer programs. They learn how to analyze whether an algorithm produces the correct result, and to estimate how much time an algorithm should take to finish. They also learn how to quantify precisely the difficulty of a problem. The assignments allow students to gain handson experience in designing and programming their own solutions to different problems. The course also provides an overview of different areas of computer science and of exciting application areas, such as artificial intelligence, analyzing biological data or building computer games. Students registering for COMP 250 should have completed CEGEPlevel mathematics and have some knowledge of how to program. The latter can be acquired at McGill by taking COMP 202 or COMP 208. However, no particular programming language is required as a prerequisite. COMP 250 is a required course in all computer science and software engineering programs, so it is highly recommended for all students considering a major or minor in these areas. In the past, the course was also taken successfully by students from a variety of disciplines, including mathematics, physical sciences, life sciences, arts, engineering etc. COMP 250 is offered in both the fall and winter terms. COMP 280  History and Philosophy of ComputingThis course offers a historical introduction to computing machines and the notion of computability. Part I covers developments from the Babylonians to the late 19th century (including number systems, Leibniz's idea of an allpurpose language and associated calculus to derive conclusions, Babbage's analytical engine). Part II introduces the logical foundations of modern computers (Frege's logic, mathematical models of computation, and theoretical limitations of computability), and the third part will cover 20th century developments up to the present (e.g., analog and digital computers, the development from mainframe computers to personal computers, programming languages, artificial intelligence, robotics, quantum computing). This course is intended to exhibit the deep roots of computer science, revealing its rich cultural heritage and showing its emergence as a confluence of philosophy, mathematics, and engineering. Because of the historical approach of this course, it should be appealing to students from a variety of disciplines, introduce them to many fundamental concepts revolving around computing and computers, and stir their curiosity to learn more about the subject. For students in computer science this course will provide a framework to better understand the material they learn in other courses and foster a better understanding of their own discipline (Comment by a senior CS student, who took this course: "I wish I would have taken this class in my 1st year"). In the past this course has been taken successfully by students in history, philosophy, linguistics, mathematics, computer science, and software engineering. COMP 280 can be used by B.A.&Sc. students as an integrative course. This course is offered in the winter term. If you would like to know more about COMP 280 or if this course is a good choice for you, please contact the instructor, Professor Dirk Schlimm. COMP 364  Computer Tools for the Life SciencesAre you a student in life sciences who would like to learn important computer tools for your upper year, graduate or professional studies? COMP 364 is a new course, designed specifically for you and taught by a computer scientist who does research in bioinformatics. see the course web page for more information. Here is text from the website that describes the content: Computers have become an essential tool in every field of scientific research. Whether collecting data in the field, running experiments in a laboratory, or using existing software to analyze living systems, every scientist will have to use a computer to visualize, filter, analyze, and present their results. The goal of this course is to give young scientists the knowledge and experience they will need to select and use the right computational tools necessary to perform computer tasks quickly and efficiently. We identify three general activities that many scientists will perform: data filtering and transformation, automation of largescale data analysis, and data visualization. In this course, we will learn ways of using the unix commandline and the Python scripting language to perform all three of these activities. In addition, we will also spend time developing programming literacy – the ability to read and understand software written in languages we may not be intimately familiar with. Because it is commonplace to encounter software written by others that we would like to modify for our own purposes, the ability to quickly understand a block of code, regardless of the language it is written in, is an essential skill for scientists from all fields to have. 