Computer Science (COMP)

Note: This is the 20102011 edition of the eCalendar. Update the year in your browser's URL bar for the most recent version of this page, or click here to jump to the newest eCalendar.

Computer Science (COMP)

Location

Location

  • McConnell Engineering Building, Room 318
  • 3480 University Street
  • Montreal, Quebec, H3A 2A7
  • Telephone: 514-398-7071
  • Fax: 514-398-3883
  • Undergraduate Student Affairs Office
  • Lorne Trottier Building, Room 2060
  • 3630 University Street
  • Montreal, Quebec, H3A 2B2
  • Telephone: 514-398-7071 ext. 00739
  • Fax: 514-398-4653

About Computer Science

About Computer Science

Computer Science covers the theory and practice behind the design and implementation of computer and information systems. Fundamental to computer science are questions about how to describe, process, manage, and analyze information and computation. A fundamental building block is the study of algorithms. An algorithm presents a detailed sequence of actions solving a particular task. A computer program is the implementation of an algorithm in a specific programming language so that a computer can execute the algorithm. Software generally refers to a computer program or a set of related computer programs.

Based on the building blocks of algorithms and programs, computer science is split into many different areas such as the study of algorithms and data structures, programming languages and methodology, theory of computation, software engineering (the design of large software systems), computer architecture (the structure of the hardware), communication between computers, operating systems (the software that shields users from the underlying hardware), database systems (software that handles large amounts of data efficiently), artificial intelligence (algorithms that imitate human information processing), computer vision (algorithms that let computers see and recognize their environment), computer graphics, robotics (algorithms that control robots), and computational biology (algorithms and methods that address problems inspired by biology). Computer science also plays an important role in many other fields, including Biology, Physics, Engineering, Business, Music, and Neuroscience, where it is necessary to process and reason about large amounts of data. Computer Science is strongly related to mathematics, linguistics and engineering.

A degree in Computer Science offers excellent job prospects. As the use of computers and specialized software plays a crucial role in business, science and our personal life, computer graduates are in high demand. Computer scientists find jobs in software development in many areas of computer science, in consulting, and in project management. As computer scientists often develop the software for a specific application domain (e.g., business, engineering, medicine), they must be prepared and willing to get to know their application area.

The School of Computer Science offers a wide range of programs. Most programs start with the same set of basic courses allowing students to decide on their exact program once they get a basic understanding of the discipline. Within the Faculty of Science, there are a major, an honours, a liberal and a minor program in Computer Science, a major and a liberal program in Software Engineering, a major in Computer Science: Computer Games Option, a minor in Computational Biology, a joint major and a joint honours program in Mathematics and Computer Science (see Mathematics and Statistics (MATH)), a joint major and a joint honours program in Statistics and Computer Science (see Mathematics and Statistics (MATH)), a joint major in Physics and Computer Science (see Physics (PHYS)), and a joint major in Computer Science and Biology (see Biology (BIOL)). The School also offers a major concentration and minor concentrations in Computer Science through the Faculty of Arts (see Faculty of Arts > Computer Science (COMP)) or as part of a Bachelor of Arts and Science (see Bachelor of Arts and Science > Computer Science).

The School's courses are available as electives to Engineering students. Engineering students interested in a Minor in Computer Science should consult Faculty of Engineering > Computer Science Courses and Minor Program.

Most course instructors are faculty members of the School that do research in the areas they teach. Students will learn in a small classroom environment, get to know their professors and have opportunity to do cutting-edge research. Some graduate courses in Computer Science are available to suitable qualified senior undergraduates. The School offers their students large computing labs in the Lorne Trottier Building that is dedicated to undergraduate students.

All students planning to enter Computer Science programs should make an appointment with an academic adviser through the School's Undergraduate Student Affairs Office.

Internship Opportunities

Internship Opportunities

Students who want to get practical experience in industry before graduation are encouraged to participate in one of the following internship programs:

The Internship Year in Science (IYS) is an academic program offered for a duration of 8, 12, or 16 months. It will be reflected on your transcript and is included in your program name (Bachelor of Science - Internship Program).

The Industrial Practicum (IP) has a duration of 4 months and is usually carried out starting in May. It will appear as a 0-credit, pass/fail course on your transcript. If you complete two IPs, the name of your program will change to include the word internship.

For more information on these programs, consult Industrial Practicum (IP) and Internship Year in Science (IYS), or, www.mcgill.ca/science/internships-field/internships.

Research Opportunities

Research Opportunities

Several research opportunities are provided to interested students through the 396 project courses, as well as through NSERC undergraduate research assistantships in the School. Students who take 396 courses in more than one department can be eligible for the Dean's Multidisciplinary Undergraduate Research list. Students in Honours programs also have research opportunities in the COMP 400 course. For more information, consult University Regulations and Information > Graduation Honours: Faculty of Science Dean's Multidisciplinary Undergraduate Research ListGraduation Honours: Faculty of Science Dean's Multidisciplinary Undergraduate Research List.

Admissions

Admissions

Students intending to pursue a Major in Computer Science or Software Engineering should have a reasonable mathematical background and should have completed MATH 140 (or MATH 150), MATH 141 (or MATH 151) and MATH 133, or their CEGEP equivalents. These three mathematics courses should have been completed with at least an average of B-. A background in computer science is not necessary as students may start their studies with the introductory course COMP 202. However, taking COMP 202 in the Freshman Year, or completing an equivalent course in CEGEP, would be an asset and allows students to take more advanced courses earlier in their program.

More information about the admission process and the programs is available at www.cs.mcgill.ca.

Computer Science (COMP) Faculty

Computer Science (COMP) Faculty

Director
Gregory Dudek
Emeritus Professors
Christopher Paige
Godfried T. Toussaint
Professors
David M. Avis; B.Sc.(Wat.), Ph.D.(Stan.) (on leave 2010-2011)
Luc P. Devroye; M.S.(Louvain), Ph.D.(Texas) (James McGill Professor)
Gregory Dudek; B.Sc.(Qu.), M.Sc., Ph.D.(Tor.) (James McGill Professor)
Laurie Hendren; B.Sc., M.Sc.(Qu.), Ph.D.(C’nell) (on sabbatical 2010-2011)
Prakash Panangaden; M.Sc.(IIT, Kanpur), M.S.(Chic.), Ph.D.(Wis.) (on sabbatical 2010-2011)
Bruce Reed; B.Sc., Ph.D.(McG.) (Canada Research Chair) (Royal Society of Canada Fellow)
Kaleem Siddiqi; B.Sc.(Lafayette), M.Sc., Ph.D.(Brown) (William Dawson Scholar)
Denis Thérien; B.Sc.(Montr.), M.Sc., Ph.D.(Wat.) (James McGill Professor) (on leave 2010-2011)
Associate Professors
Mathieu Blanchette; B.Sc., M.Sc.(Montr.), Ph.D.(Wash.) (on sabbatical 2010-2011)
Xiao-Wen Chang; B.Sc., M.Sc.(Nanjing), Ph.D.(McG.)
Claude Crépeau; B.Sc., M.Sc.(Montr.), Ph.D.(MIT)
Nathan Friedman; B.A.(W. Ont.), Ph.D.(Tor.)
Michael Trevor Hallett; B.Sc.(Qu.), Ph.D.(Vic. (BC))
Patrick Hayden; B.Sc.(McG.), Ph.D.(Oxf.) (Canada Research Chair) (on sabbatical 2010-2011)
Bettina Kemme; B.Sc., M.Sc.(Erlangen-Nuremberg, Germany), Ph.D.(ETH, Zurich)
Jörg Kienzle; Eng.Dip., Ph.D.(Swiss Fed. IT)
Michael Langer; B.Sc.(McG.), M.Sc.(Tor.), Ph.D.(McG.)
Brigitte Pientka; B.Sc., M.Sc.(Darmstadt), Ph.D.(Carn. Mell)
Doina Precup; B.Sc.(Cluj-Napoca), M.Sc., Ph.D.(Mass.)
Martin Robillard; B.Eng.(École Poly., Montr.), M.Sc., Ph.D.(Br. Col.) (on sabbatical 2011)
Carl Tropper; B.Sc.(McG.), Ph.D.(Brooklyn Poly.)
Hans Vangheluwe; B.Sc., M.Sc., D.Sc.(Ghent, Belgium) (on leave 2010-2011)
Clark Verbrugge; B.A.(Qu.), Ph.D.(McG.)
Adrian Vetta; B.Sc., M.Sc.(LSE), Ph.D.(MIT)
Assistant Professors
Hamed Hatami; B.Sc.(Sharif Univ. of Technology), M.Sc., Ph.D.(Tor.)
Paul Kry; B.Sc.(Wat.), M.Sc., Ph.D.(Br. Col.)
Xue Liu; B.Sc., M.Sc.(Tsinghua), Ph.D.(Ill.) (on leave 2010)
Muthucumaru Maheswaran; B.Sc.(Peradeniya), M.Sc., Ph.D.(Purd.) (on sabbatical 2010-2011)
Joëlle Pineau; B.Sc.(Wat.), M.Sc., Ph.D.(Carn. Mell)
Derek Ruths; B.Sc., M.Sc., Ph.D.(Rice)
Mohit Singh; B.Tech.(Indian IT), Ph.D.(Carn. Mell)
Jérôme Waldispühl; B.Sc.(Nice and Sophia-Antipolis (France)), M.Sc.(Paris VII), Ph.D.(École Poly., France)
Faculty Lecturer
Joseph Vybihal; B.Sc., M.Sc.(McG.)
Associate Members
Daniel J. Levitin (Psychology)
Dirk Schlimm (Philosophy)
Raja Sengupta (Geography)
F. Bruce Shepherd (Mathematics)
Thomas Richard Shultz (Psychology)
Renée Sieber (Geography)
Adjunct Professors
Stefan Brands
Renato De Mori
Ted Perkins
Ioannis Rekleitis
Ger Otto Sabidussi
Pascal Tesson
Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Minor Computer Science (24 credits)

This Minor is designed for students who want to gain a basic understanding of computer science principles and get an overview of some computer science areas. Basic computer science skills are important in many domains. Thus, the Minor is useful for students majoring in any discipline. It can be taken in conjunction with any program in the Faculties of Science and Engineering (with the exception of other programs in Computer Science).

Students must obtain approval from the adviser of their main program. Students are strongly encouraged to talk to an adviser of the School of Computer Science before choosing the complementary courses. Approval must be given by the School for the particular selection of courses to be credited towards the Minor. This should be done before registering for the final term of studies.

Students may receive credit towards their Computer Science Minor by taking certain approved courses outside the School of Computer Science. These courses must have a high computer science content. A student will not be permitted to receive more than six credits from such courses. These courses must be approved by the School of Computer Science in advance. If a student's Major program requires Computer Science courses, up to six credits of Computer Science courses may be used to fulfil both Major and Minor requirements.

Required Courses (9 credits)

* Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional computer science complementary course.

** Students may take either COMP 203 or COMP 250 but not both.

COMP 202* (3) Introduction to Computing 1
COMP 203** (3) Introduction to Computing 2
COMP 206 (3) Introduction to Software Systems
COMP 250** (3) Introduction to Computer Science

Complementary Courses (15 credits)

15 credits selected from the courses below and computer science courses at the 300-level or above (except COMP 364, COMP 396, COMP 400, COMP 431).

* Note: COMP 251 is a prerequisite for many of the other complementary courses.

COMP 251* (3) Data Structures and Algorithms
COMP 273 (3) Introduction to Computer Systems
MATH 222 (3) Calculus 3
MATH 240 (3) Discrete Structures 1
Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Minor Computational Molecular Biology (24 credits)

Computational molecular biology is the sub-discipline of bioinformatics that is located at the intersection of computer science and molecular biology. The focus of this area is on techniques for managing and analyzing molecular sequence data. This program will provide undergraduate students in the biological sciences with the skills from computer science to solve computational problems arising in molecular biology and genomics and will provide students with the necessary skills to build software tools from these algorithms.

The Minor Computational Molecular Biology is NOT open to students in Computer Science or Joint Computer Science programs.

Required Courses (24 credits)

COMP 202 (3) Introduction to Computing 1
COMP 203 (3) Introduction to Computing 2
COMP 251 (3) Data Structures and Algorithms
COMP 360 (3) Algorithm Design Techniques
COMP 462 (3) Computational Biology Methods
COMP 563 (3) Molecular Evolution Theory
COMP 564 (3) Computational Gene Regulation
MATH 240 (3) Discrete Structures 1
Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Liberal Program - Core Science Component Computer Science (45 credits)

This program provides an introduction to the principles of computer science and offers opportunity to get insight into some of its sub-areas. Having only 45 credits, it allows students to combine it with minor or major concentrations in other disciplines.

Required Courses (21 credits)

* Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional computer science complementary course.

COMP 202* (3) Introduction to Computing 1
COMP 206 (3) Introduction to Software Systems
COMP 250 (3) Introduction to Computer Science
COMP 251 (3) Data Structures and Algorithms
COMP 273 (3) Introduction to Computer Systems
MATH 222 (3) Calculus 3
MATH 240 (3) Discrete Structures 1

Complementary Courses (24 credits)

3 - 6 credits from:

MATH 223 (3) Linear Algebra
MATH 318 (3) Mathematical Logic
MATH 323 (3) Probability
MATH 324 (3) Statistics
MATH 340 (3) Discrete Structures 2

At least 3 credits from:

COMP 330 (3) Theoretical Aspects: Computer Science
COMP 350 (3) Numerical Computing
COMP 360 (3) Algorithm Design Techniques

At least 3 credits from:

COMP 302 (3) Programming Languages and Paradigms
COMP 303 (3) Software Development

The remaining complementary courses should be selected from any COMP courses at the 300-level or above except COMP 364, COMP 396, COMP 400 and COMP 431.

Note: Advanced COMP courses have more prerequisites than the required courses for this program. Students have to make sure that they have the appropriate prerequisites when choosing upper-level courses.

Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Liberal Program - Core Science Component Software Engineering (49 credits)

This program covers a core of programming and software engineering courses and allows students to select courses that aim at practical aspects of software development.

Students may complete this program with a minimum of 48 credits or a maximum of 49 credits depending on their choice of complementary courses.

Required Courses (36 credits)

* Students who have sufficient knowledge in a programming language do not need to take COMP 202 and can replace it with additional computer science complementary course credits.

COMP 202* (3) Introduction to Computing 1
COMP 206 (3) Introduction to Software Systems
COMP 250 (3) Introduction to Computer Science
COMP 251 (3) Data Structures and Algorithms
COMP 273 (3) Introduction to Computer Systems
COMP 302 (3) Programming Languages and Paradigms
COMP 303 (3) Software Development
COMP 310 (3) Operating Systems
COMP 361D1 (3) Software Engineering Project
COMP 361D2 (3) Software Engineering Project
MATH 223 (3) Linear Algebra
MATH 240 (3) Discrete Structures 1

Complementary Courses (13 credits)

3 credits selected from:

COMP 330 (3) Theoretical Aspects: Computer Science
COMP 360 (3) Algorithm Design Techniques

9 - 10 credits selected from the courses below:

* Students take either COMP 435 or COMP 535, but not both.

COMP 322 (1) Introduction to C++
COMP 409 (3) Concurrent Programming
COMP 421 (3) Database Systems
COMP 435* (3) Basics of Computer Networks
COMP 520 (4) Compiler Design
COMP 525 (3) Formal Verification
COMP 529 (4) Software Architecture
COMP 533 (3) Object-Oriented Software Development
COMP 535* (3) Computer Networks 1

Or any computer science course at the 300-level or above, excluding COMP 364, COMP 396, and COMP 431.

Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Major Computer Science (63 credits)

This program is the standard Major program offered by the School of Computer Science. It provides a broad introduction to the principles of computer science and offers ample opportunity to acquire in-depth knowledge of several sub-disciplines. At the same time, its credit requirements allow students to take an additional minor.

Students may complete this program with a maximum of 63 credits or a minimum of 60 credits if they are exempt from taking COMP 202.

Required Courses (30 credits)

* Students who have sufficient knowledge in a programming language do not need to take COMP 202.

COMP 202* (3) Introduction to Computing 1
COMP 206 (3) Introduction to Software Systems
COMP 250 (3) Introduction to Computer Science
COMP 251 (3) Data Structures and Algorithms
COMP 273 (3) Introduction to Computer Systems
COMP 302 (3) Programming Languages and Paradigms
COMP 310 (3) Operating Systems
MATH 222 (3) Calculus 3
MATH 223 (3) Linear Algebra
MATH 240 (3) Discrete Structures 1

Complementary Courses (33 credits)

Students should talk to an academic adviser before choosing their complementary courses.

At least 6 credits selected from:

COMP 330 (3) Theoretical Aspects: Computer Science
COMP 350 (3) Numerical Computing
COMP 360 (3) Algorithm Design Techniques

At least 3 credits selected from:

COMP 303 (3) Software Development
COMP 304 (3) Object-Oriented Design

3 - 9 credits selected from:

* Must include at least one of the MATH 323 and MATH 340.

MATH 318 (3) Mathematical Logic
MATH 323* (3) Probability
MATH 324 (3) Statistics
MATH 340* (3) Discrete Structures 2

The remaining credits selected from computer science courses at the 300-level or above (except COMP 364, COMP 396, COMP 400, COMP 431) and ECSE 508.

Note: Students have to make sure that they have the appropriate prerequisites when choosing upper-level courses.

Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Major Computer Science and Biology (73 credits)

This program will train students in the fundamentals of biology - with a focus on molecular biology - and will give them computational and mathematical skills needed to manage, analyze, and model large biological datasets. Three integrative features of the program are a three-credit joint independent studies course, co-supervised by a Biology professor and a Computer Science professor; a one-credit seminar; and a three-credit course BIOL 495 "Integrative Computing in Biology".

Students may complete this program with a maximum of 73 credits or a minimum of 69 credits. This depends upon the student's choice of required courses and whether or not the student is exempt from taking COMP 202.

Required Courses (49 credits)

Required Mathematics and Statistics Courses

6 credits from the following:

MATH 222 (3) Calculus 3
MATH 223 (3) Linear Algebra

Required Computer Science Courses

12 - 16 credits from:

* Students who have sufficient knowledge in a programming language are not required to take COMP 202.

** Students take either COMP 462 or COMP 561.

COMP 202* (3) Introduction to Computing 1
COMP 206 (3) Introduction to Software Systems
COMP 250 (3) Introduction to Computer Science
COMP 251 (3) Data Structures and Algorithms
COMP 462** (3) Computational Biology Methods
COMP 561** (4) Computational Biology Methods and Research

Required Biology Courses

20 credits from:

BIOL 200 (3) Molecular Biology
BIOL 201 (3) Cell Biology and Metabolism
BIOL 202 (3) Basic Genetics
BIOL 215 (3) Introduction to Ecology and Evolution
BIOL 301 (4) Cell and Molecular Laboratory
CHEM 212 (4) Introductory Organic Chemistry 1

Required Joint Courses

7 credits from:

BIOL 495 (3) Integrative Computing in Biology
COMP 401 (3) Project in Biology and Computer Science
COMP 499 (1) Undergraduate Bioinformatics Seminar

Complementary Courses (24 credits)

6 credits, ONE of the following pairs of courses as follows:

MATH 203 and MATH 204 or MATH 323 and MATH 324 or BIOL 309 and BIOL 373.

BIOL 309 (3) Mathematical Models in Biology
BIOL 373 (3) Biometry
MATH 203 (3) Principles of Statistics 1
MATH 204 (3) Principles of Statistics 2
MATH 323 (3) Probability
MATH 324 (3) Statistics

At least 18 credits are selected from the following blocks:

Computer Science Block

At least 9 credits from the following including at least one course at the 400-level or above. In addition to the courses below students may also choose from all COMP courses at the 400-level (except 401, 462, and 499) and all courses at the 500-level (except 561).

COMP 273 (3) Introduction to Computer Systems
COMP 302 (3) Programming Languages and Paradigms
COMP 303 (3) Software Development
COMP 304 (3) Object-Oriented Design
COMP 310 (3) Operating Systems
COMP 330 (3) Theoretical Aspects: Computer Science
COMP 335 (3) Software Engineering Methods
COMP 350 (3) Numerical Computing
COMP 360 (3) Algorithm Design Techniques
MATH 240 (3) Discrete Structures 1

Biology Block

At least 9 credits from the following including at least one course at the 400-level or above.

BIOL 300 (3) Molecular Biology of the Gene
BIOL 309 (3) Mathematical Models in Biology
BIOL 310 (3) Biodiversity and Ecosystems
BIOL 313 (3) Eukaryotic Cell Biology
BIOL 435 (3) Natural Selection
BIOL 518 (3) Advanced Topics in Cell Biology
BIOL 568 (3) Topics on the Human Genome
BIOL 569 (3) Developmental Evolution
BIOL 572 (3) Molecular Evolution
BIOL 583 (3) Advanced Biometry
Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Major Computer Science - Computer Games (67 credits)

This program is a specialization within Computer Science. It fulfils all the basic requirements of the Major Computer Science. Complementary courses focus on topics that are important to understanding the technology behind computer games and to gaining experience in software development and design needed for computer game development.

Students may complete this program with a minimum of 62 credits or a maximum of 67 credits depending if they are exempt from taking COMP 202 and their choice of complementary courses.

Required Courses (50 credits)

* Students who have sufficient knowledge in a programming language do not need to take COMP 202 and can replace it with additional computer science complementary course credits.

COMP 202* (3) Introduction to Computing 1
COMP 206 (3) Introduction to Software Systems
COMP 250 (3) Introduction to Computer Science
COMP 251 (3) Data Structures and Algorithms
COMP 273 (3) Introduction to Computer Systems
COMP 302 (3) Programming Languages and Paradigms
COMP 303 (3) Software Development
COMP 308 (1) Computer Systems Lab
COMP 310 (3) Operating Systems
COMP 322 (1) Introduction to C++
COMP 330 (3) Theoretical Aspects: Computer Science
COMP 361D1 (3) Software Engineering Project
COMP 361D2 (3) Software Engineering Project
COMP 557 (3) Fundamentals of Computer Graphics
MATH 222 (3) Calculus 3
MATH 223 (3) Linear Algebra
MATH 240 (3) Discrete Structures 1
MATH 323 (3) Probability

Complementary Courses (17 credits)

Students complete a minimum of 15 or a maximum of 17 complementary credits selected as follows:

3 credits selected from:

COMP 350 (3) Numerical Computing
COMP 360 (3) Algorithm Design Techniques

6 - 8 credits selected from:

COMP 424 (3) Artificial Intelligence
COMP 507 (3) Computational Geometry
COMP 521 (4) Modern Computer Games
COMP 522 (4) Modelling and Simulation
COMP 529 (4) Software Architecture
COMP 533 (3) Object-Oriented Software Development
COMP 559 (4) Fundamentals of Computer Animation

6 credits selected from:

* Students take either COMP 435 or COMP 535, but not both.

COMP 409 (3) Concurrent Programming
COMP 421 (3) Database Systems
COMP 435* (3) Basics of Computer Networks
COMP 535* (3) Computer Networks 1
Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Major Software Engineering (63 credits)

This program provides a broad introduction to the principles of computer science and covers in depth the design and development of software systems.

Students may complete this program with a maximum of 63 credits or a minimum of 60 credits if they are exempt from taking COMP 202.

Required Courses (39 credits)

* Students who have sufficient knowledge in a programming language do not need to take COMP 202.

** Students may select either COMP 310 or ECSE 427 but not both.

COMP 202* (3) Introduction to Computing 1
COMP 206 (3) Introduction to Software Systems
COMP 250 (3) Introduction to Computer Science
COMP 251 (3) Data Structures and Algorithms
COMP 273 (3) Introduction to Computer Systems
COMP 302 (3) Programming Languages and Paradigms
COMP 303 (3) Software Development
COMP 310** (3) Operating Systems
COMP 361D1 (3) Software Engineering Project
COMP 361D2 (3) Software Engineering Project
ECSE 427** (3) Operating Systems
ECSE 429 (3) Software Validation
MATH 223 (3) Linear Algebra
MATH 240 (3) Discrete Structures 1

Complementary Courses (24 credits)

At least 9 credits selected from groups A and B, with at least 3 credits selected from each:

Group A:

MATH 222 (3) Calculus 3
MATH 323 (3) Probability
MATH 324 (3) Statistics

Group B:

COMP 330 (3) Theoretical Aspects: Computer Science
COMP 360 (3) Algorithm Design Techniques

At least 15 credits selected from the following, with at least 6 credits selected from Software Engineering Specializations, and at least 6 credits selected from Applications Specialties.

Software Engineering Specializations

* Students may select either COMP 409 or ECSE 420 but not both.

COMP 409* (3) Concurrent Programming
COMP 523 (3) Language-based Security
COMP 525 (3) Formal Verification
COMP 529 (4) Software Architecture
COMP 533 (3) Object-Oriented Software Development
ECSE 420* (3) Parallel Computing

Application Specialties

* Students may select either COMP 557 or ECSE 532 but not both.

COMP 350 (3) Numerical Computing
COMP 417 (3) Introduction Robotics and Intelligent Systems
COMP 421 (3) Database Systems
COMP 424 (3) Artificial Intelligence
COMP 512 (4) Distributed Systems
COMP 520 (4) Compiler Design
COMP 521 (4) Modern Computer Games
COMP 522 (4) Modelling and Simulation
COMP 535 (3) Computer Networks 1
COMP 557* (3) Fundamentals of Computer Graphics
COMP 558 (3) Fundamentals of Computer Vision
ECSE 424 (3) Human-Computer Interaction
ECSE 532* (3) Computer Graphics
Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Honours Computer Science (75 credits)

Students may complete this program with a maximum of 75 credits or a minimum of 72 credits if they are exempt from taking COMP 202.

Honours students must maintain a CGPA of at least 3.00 during their studies and at graduation.

Required Courses (45 credits)

* Students who have sufficient knowledge in a programming language do not need to take COMP 202.

** Students take either MATH 340 or MATH 350.

COMP 202* (3) Introduction to Computing 1
COMP 206 (3) Introduction to Software Systems
COMP 250 (3) Introduction to Computer Science
COMP 252 (3) Algorithms and Data Structures
COMP 273 (3) Introduction to Computer Systems
COMP 302 (3) Programming Languages and Paradigms
COMP 310 (3) Operating Systems
COMP 330 (3) Theoretical Aspects: Computer Science
COMP 350 (3) Numerical Computing
COMP 362 (3) Honours Algorithm Design
COMP 400 (3) Technical Project and Report
MATH 222 (3) Calculus 3
MATH 223 (3) Linear Algebra
MATH 240 (3) Discrete Structures 1
MATH 340** (3) Discrete Structures 2
MATH 350** (3) Graph Theory and Combinatorics

Complementary Courses (30 credits)

At least 3 credits selected from:

COMP 303 (3) Software Development
COMP 304 (3) Object-Oriented Design

6 credits selected from:

MATH 318 (3) Mathematical Logic
MATH 323 (3) Probability
MATH 324 (3) Statistics

The remaining credits selected from computer science courses at the 300-level or above (except COMP 364, COMP 396, COMP 400, COMP 431) and ECSE 508. At least 12 credits must be at the 500-level.

Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Bachelor of Science (B.Sc.) - Honours Software Engineering (75 credits)

This program provides a more challenging and research-oriented version of the Major Software Engineering program.

Students may complete this program with a maximum of 75 credits or a minimum of 72 credits if they are exempt from taking COMP 202.

Honours students must maintain a CGPA of at least 3.00 during their studies and at graduation.

Required Courses (42 credits)

* Students who have sufficient knowledge in a programming language do not need to take COMP 202.

** Students may select either COMP 310 or ECSE 427 but not both.

COMP 202* (3) Introduction to Computing 1
COMP 206 (3) Introduction to Software Systems
COMP 250 (3) Introduction to Computer Science
COMP 251 (3) Data Structures and Algorithms
COMP 273 (3) Introduction to Computer Systems
COMP 302 (3) Programming Languages and Paradigms
COMP 303 (3) Software Development
COMP 310** (3) Operating Systems
COMP 361D1 (3) Software Engineering Project
COMP 361D2 (3) Software Engineering Project
COMP 400 (3) Technical Project and Report
ECSE 427** (3) Operating Systems
ECSE 429 (3) Software Validation
MATH 223 (3) Linear Algebra
MATH 240 (3) Discrete Structures 1

Complementary Courses (33 credits)

Of the 33 credits, at least 12 credits must be at the 500-level or above. Courses at the 600- or 700-level require special permission. Information on the policy and procedures for such permission may be found at the website: http://www.mcgill.ca/science/sousa/bsc/course/graduate/.

At least 9 credits selected from groups A and B, with at least 3 credits selected from each:

Group A:

* Students who have successfully completed MATH 150 and MATH 151 are not required to take MATH 222.

MATH 222* (3) Calculus 3
MATH 323 (3) Probability
MATH 324 (3) Statistics

Group B:

COMP 330 (3) Theoretical Aspects: Computer Science
COMP 360 (3) Algorithm Design Techniques

At least 18 credits selected from the following, with at least 6 credits selected from Software Engineering Specializations, and at least 9 credits selected from Applications Specialties.

Software Engineering Specializations

* Students may select either COMP 409 or ECSE 420 but not both.

COMP 409* (3) Concurrent Programming
COMP 523 (3) Language-based Security
COMP 525 (3) Formal Verification
COMP 529 (4) Software Architecture
COMP 533 (3) Object-Oriented Software Development
ECSE 420* (3) Parallel Computing

Application Specialties

COMP 350 (3) Numerical Computing
COMP 417 (3) Introduction Robotics and Intelligent Systems
COMP 421 (3) Database Systems
COMP 424 (3) Artificial Intelligence
COMP 512 (4) Distributed Systems
COMP 520 (4) Compiler Design
COMP 521 (4) Modern Computer Games
COMP 522 (4) Modelling and Simulation
COMP 535 (3) Computer Networks 1
COMP 557 (3) Fundamentals of Computer Graphics
COMP 558 (3) Fundamentals of Computer Vision
ECSE 424 (3) Human-Computer Interaction

At least 6 credits selected from any COMP courses at the 500-level or above. These may include courses on the Software Engineering Specializations and Application Specialties lists.

Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)

Computer Science (COMP) Related Programs

Computer Science (COMP) Related Programs

Joint Major in Mathematics and Computer Science

Joint Major in Mathematics and Computer Science

For more information, see Mathematics and Statistics (MATH).

Joint Honours in Mathematics and Computer Science

Joint Honours in Mathematics and Computer Science

For more information, see Mathematics and Statistics (MATH). Students must consult an Honours adviser in both Departments.

Joint Major in Statistics and Computer Science

Joint Major in Statistics and Computer Science

For more information, see Mathematics and Statistics (MATH).

Joint Honours in Statistics and Computer Science

Joint Honours in Statistics and Computer Science

For more information, see Mathematics and Statistics (MATH). Students must consult an Honours adviser in both Departments.

Joint Major in Physics and Computer Science

Joint Major in Physics and Computer Science

For more information, see Physics (PHYS).

Minor in Cognitive Science

Minor in Cognitive Science

Students following Major or Honours programs in Computer Science may want to consider the Minor in Cognitive Science.

Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)
Faculty of Science—2010-2011 (last updated Apr. 22, 2010) (disclaimer)