Undergraduate Programs Calendar
2006-07


11.12.9 Computer Science (COMP)

McConnell Engineering Building, Room 318
3480 University Street
Montreal, QC  H3A 2A7
Telephone: (514) 398-7071
Fax: (514) 398-3883

Undergraduate Student Affairs Office
Lorne Trottier Building, Room 2060
3630 University Street
Montreal, QC H3A 2B2
Telephone: (514) 398-7071
Fax: (514) 398-4653

E-mail: ugrad-sec@cs.mcgill.ca
Website: www.cs.mcgill.ca/socs/academic/undergrad/undergrad_index

Director

Sue Whitesides

Emeritus Professor

Christopher Paige

Professors

David M. Avis; B.Sc.(Wat.), Ph.D.(Stan.) (on leave Jan. -
June 2006)

Luc P. Devroye; M.S.(Louvain), Ph.D.(Texas) (James McGill Professor)

Laurie Hendren; B.Sc., M.Sc.(Qu.), Ph.D.(C'nell)

Tim H. Merrett; B.Sc.(Qu.), D.Phil.(Oxf.)(on leave Jan. - June 2006)

Monroe M. Newborn; B.E.E.(R.P.I.), Ph.D.(Ohio St.), F.A.C.M.

Prakash Panangaden; M.Sc.(Indian IT, Kanpur), M.S.(Chic.), Ph.D.(Wisc.)

Bruce Reed; B.Sc., Ph.D.(McG.) (Canada Research Chair)

Denis Thérien; B.Sc.(Montr.), M.Sc., Ph.D.(Wat.) (James McGill Professor)

Godfried T. Toussaint; B.Sc.(Tulsa), Ph.D.(Br.Col.)

Sue Whitesides; M.S.E.E.(Stan.), Ph.D.(Wisc.)

Associate Professors

[Revised, Spring 2006:  section begins.] 
 

Xiao-Wen Chang; B.Sc., M.Sc.(Nanjing IT), Ph.D.(McG.)
(on leave 2005-2006)

Claude Crépeau; B.Sc., M.Sc.(Montr.), Ph.D.(MIT)

Gregory Dudek; B.Sc.(Qu.), M.Sc., Ph.D.(Tor.) (William Dawson Scholar)

Nathan Friedman; B.A.(W.Ont.), Ph.D.(Tor.)

Kaleem Siddiqi; B.Sc.(Lafayette), M.Sc., Ph.D.(Brown)
(William Dawson Scholar)

Carl Tropper; B.Sc.(McG.), Ph.D.(Brooklyn Poly.)

Hans Vangheluwe; B.Sc., M.Sc., D.Sc.(Ghent, Belgium)

Assistant Professors

Mathieu Blanchette; B.Sc., M.Sc.(Montr.), Ph.D.(Wash.)

Michael Trevor Hallett; B.Sc.(Qu.), Ph.D.(Vic., BC)

Patrick Hayden; B.Sc.(McG.), Ph.D.(Oxf.) (Canada Research Chair)

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.)

Muthucumaru Maheswaran; B.Sc.(Peradeniya), M.Sc., Ph.D.(Purd.)

Theodore J. Perkins, Ph.D.(Mass.), M.Sc.(Wisc.), B.A.(Car.)

Brigitte Pientka; B.Sc., M.Sc.(Darmstadt), Ph.D.(Carn. Mell.)

Joelle Pineau; B.Sc. (Wat.), M.Sc., 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.)

Clark Verbrugge; B.A.(Qu.), Ph.D.(McG.)

Adrian Vetta; B.Sc., M.Sc.(LSE), Ph.D (MIT)

[Revised, Spring 2006: section ends.]

Faculty Lecturer

Joseph Vybihal; B.Sc., M.Sc.(McG.)

Associate Member

Thomas Richard Shultz (Psychology)

Adjunct Professors

Stefan Brands, Renato De Mori, Ioannis Rekleitis

The study of computer science encompasses everything from pure theory to hands-on applications including the analysis of algorithms, programming languages, compilers, databases, operating systems, robotics, computer vision, artificial intelligence and computational biology.

The School currently operates a general purpose computing facility to support teaching, a large undergraduate workstation
laboratory and numerous laboratories spanning many areas of research in computer science.

The School of Computer Science (SOCS) currently offers eight undergraduate computing labs and two large open work areas consisting of workstations on the 3rd floor of the Lorne Trottier Building. In the McConnell Engineering Building, SOCS offers one general graduate laboratory and 15 laboratories dedicated to the following research areas: Advanced Networking, Artificial Intelligence, Computational Geometry, Computational Perception, Crypto and Quantum Information, Databases and Secondary Storage, Distributed Information Systems, Mobile Robotics and Vision, Modelling, Simulation and Design, Parallel and Distributed Simulation, Reasoning and Learning, Compilers, and Software Engineering.

The undergraduate teaching facilities consist of a network of over 250 Pentium IV, Pentium III and AMD class workstations equipped with 18" LCDs and running FreeBSD and GNU/Linux operating systems. The facility also includes several computer servers comprised of seven Sun Enterprise servers, three Windows remote application servers, a central file server, backup server, mail server, and web server. Dialup Internet access is provided through the McGill Computing Centre.

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

The School of Computer Science offers:

· A major program and an honours program in Computer Science through the Faculty of Science

· A major program in Software Engineering through the Faculty of Science

· A minor through the Faculty of Science and the Faculty of Engineering

· A joint major and a joint honours program with the Department of Mathematics and Statistics through the Faculty of Science (see section 11.12.18 "Mathematics and Statistics (MATH)")

· A joint major with the Department of Physics through the
Faculty of Science (see section 11.12.26 "Physics (PHYS)")

· A major concentration and minor concentration through the Faculty of Arts

· A minor in Computational Molecular Biology

· Special programs involving Computer Science are also available in the Faculties of Management, Engineering and Music.

Some graduate courses in Computer Science are available to suitably qualified senior undergraduates. The School also offers graduate research studies leading to M.Sc. and Ph.D. degrees. For further details, consult the Graduate and Postdoctoral Studies Calendar.

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

Internship Year for Engineering and Science (IYES)

IYES is a pre-graduate work experience opportunity available to eligible students and normally taken between their U2 and U3 years. For more information, see "IYES: Internship Year for Engineering and Science", in section 7.2.8.

The following programs are also available with an internship component:
Major in Computer Science
Honours in Computer Science
Major in Software Engineering

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.

MINOR IN COMPUTER SCIENCE

(24 credits)

[Revised, Fall 2006: section begins.] 

The Computer Science Minor may 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. Approval must be given by the School of Computer Science for the particular selection of courses to be credited towards the Computer Science Minor. This should be done before registering for the final term of studies. All courses must be passed with a grade of C or better.

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 fulfill both Major and Minor requirements.

Required Courses

(12 credits)

COMP 202

(3)

Introduction to Computing 1

COMP 203

(3)

Introduction to Computing 2

COMP 206

(3)

Introduction to Software Systems

COMP 302

(3)

Programming Languages and Paradigms

Complementary Courses

(12 credits)

selected from:

COMP 251*

(3)

Data Structures and Algorithms

COMP 273

(3)

Introduction to Computer Systems

COMP 303

(4)

Programming Techniques

COMP 304

(3)

Object-oriented Design

COMP 310

(3)

Computer Systems and Organization

COMP 330

(3)

Theoretical Aspects: Computer Science

COMP 335

(3)

Software Engineering Methods

COMP 350

(3)

Numerical Computing

or MATH 317

(3)

Numerical Analysis

COMP 360

(3)

Algorithm Design Techniques

COMP 409

(3)

Concurrent Programming

COMP 417

(3)

Intro Robotics and Intelligent Systems

COMP 420

(3)

Secondary Storage Algorithms and Data Structures

COMP 421

(3)

Database Systems

COMP 423

(3)

Data Compression

COMP 424

(3)

Topics: Artificial Intelligence 1

COMP 426

(3)

Automated Reasoning

COMP 435

(3)

Basics of Computer Networks

COMP 462

(3)

Computational Biology Methods

COMP 490

(3)

Intro to Probabilistic Analysis Algorithms

COMP 505

(3)

Advanced Computer Architecture

COMP 506

(3)

Advanced Analysis of Algorithms

COMP 507

(3)

Computational Geometry

COMP 512

(4)

Distributed Systems

COMP 520

(4)

Compiler Design

COMP 521

(4)

Modern Computer Games

COMP 522

(4)

Modelling and Simulation

COMP 523

(3)

Language-based Security

COMP 524

(3)

Theoretical Foundations of Programming Languages

COMP 526

(3)

Probabilistic Reasoning and AI

COMP 529

(4)

Software Analysis

COMP 533

(3)

Object-Oriented Software Development

COMP 534

(3)

Team Software Engineering

COMP 535

(3)

Computer Networks 1

COMP 537

(3)

Internet Programming

COMP 538

(3)

Person-Machine Communication

COMP 540

(3)

Matrix Computations

COMP 557

(3)

Fundamentals of Computer Graphics

COMP 558

(3)

Fundamentals of Computer Vision

COMP 560

(3)

Graph Algorithms and Applications

COMP 563

(3)

Molecular Evolution Theory

COMP 564

(3)

Computational Gene Regulation

COMP 566

(3)

Discrete Optimization 1

COMP 567

(3)

Discrete Optimization 2

COMP 575

(3)

Fundamentals of Distributed Algorithms

COMP 577

(3)

Distributed Database Systems

MATH 240

(3)

Discrete Structures 1

or from courses outside the School approved by the adviser, to a maximum of 6 credits.

* Note: COMP 251 is a prerequisite for many of the other complementary courses, and MATH 240 is a prerequisite for COMP 251

[Revised, Fall 2006:  section ends.]. 

MINOR IN 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 in 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 PROGRAM IN MATHEMATICS AND COMPUTER SCIENCE

under "Mathematics and Statistics (MATH)", in section 11.12.18.

FACULTY PROGRAM IN MATHEMATICS, STATISTICS AND COMPUTER SCIENCE

under "Mathematics and Statistics (MATH)", in section 11.12.18.

MAJOR IN COMPUTER SCIENCE

(60 credits)

Freshman Program students interested in Computer Science should try to take COMP 202 if possible, but it is not required for entry to the Major. A student entering the Major with insufficient programming background may take COMP 202, which will not count for credit toward the Major but will count for elective credit.

[Revised, Fall 2006:  section begins.] 
 

Required Courses

(42 credits)

COMP 250

(3)

Introduction to Computer Science

COMP 251

(3)

Data Structures and Algorithms

COMP 206

(3)

Introduction to Software Systems

COMP 273

(3)

Introduction to Computer Systems

COMP 302

(3)

Programming Languages and Paradigms

COMP 310

(3)

Computer Systems and Organization

COMP 330

(3)

Theoretical Aspects: Computer Science

COMP 350

(3)

Numerical Computing

COMP 360

(3)

Algorithm Design Techniques

MATH 222

(3)

Calculus 3

MATH 223

(3)

Linear Algebra

MATH 240

(3)

Discrete Structures 1

MATH 323

(3)

Probability

MATH 340

(3)

Discrete Structures 2

Complementary Courses

(18 credits)

15 credits from:

COMP 303

(4)

Programming Techniques

COMP 304

(3)

Object-oriented Design

COMP 335

(3)

Software Engineering Methods

COMP 361

(3)

Systems Development Project

COMP 409

(3)

Concurrent Programming

COMP 417

(3)

Intro Robotics and Intelligent Systems

COMP 420

(3)

Secondary Storage Algorithms and Data Structures

COMP 421

(3)

Database Systems

COMP 423

(3)

Data Compression

COMP 424

(3)

Topics: Artificial Intelligence 1

COMP 426

(3)

Automated Reasoning

COMP 435

(3)

Basics of Computer Networks

COMP 462

(3)

Computational Biology Methods

COMP 490

(3)

Intro to Probabilistic Analysis Algorithms

COMP 505

(3)

Advanced Computer Architecture

COMP 506

(3)

Advanced Analysis of Algorithms

COMP 507

(3)

Computational Geometry

COMP 512

(4)

Distributed Systems

COMP 520

(4)

Compiler Design

COMP 521

(4)

Modern Computer Games

COMP 522

(4)

Modelling and Simulation

COMP 523

(3)

Language-based Security

COMP 524

(3)

Theoretical Foundations of Programming Languages

COMP 525

(3)

Formal Verification

COMP 526

(3)

Probabilistic Reasoning and AI

COMP 529

(4)

Software Analysis

COMP 531

(3)

Theory of Computation

COMP 533

(3)

Object-Oriented Software Development

COMP 534

(3)

Team Software Engineering

COMP 535

(3)

Computer Networks 1

COMP 537

(3)

Internet Programming

COMP 538

(3)

Person-Machine Communication

COMP 540

(3)

Matrix Computations

COMP 547

(4)

Cryptography and Data Security

COMP 557

(3)

Fundamentals of Computer Graphics

COMP 558

(3)

Fundamentals of Computer Vision

COMP 560

(3)

Graph Algorithms and Applications

COMP 563

(3)

Molecular Evolution Theory

COMP 564

(3)

Computational Gene Regulation

COMP 566

(3)

Discrete Optimization 1

COMP 567

(3)

Discrete Optimization 2

COMP 575

(3)

Fundamentals of Distributed Algorithms

COMP 577

(3)

Distributed Database Systems

ECSE 323

(3)

Digital System Design

ECSE 426

(3)

Microprocessor Systems

ECSE 508

(3)

Multi-Agent Systems

ECSE 531

(3)

Real Time Systems

ECSE 548

(3)

Introduction to VLSI Systems

3 credits of Mathematics selected from:

MATH 242

(3)

Analysis 1

MATH 243

(3)

Analysis 2

MATH 255

(3)

Honours Analysis 2

or any 300-level or above Mathematics course
(excluding MATH 338, MATH 323, MATH 340)

Revised, Fall 2006:  section ends.] 

JOINT MAJOR IN MATHEMATICS AND COMPUTER SCIENCE under "Mathematics and Statistics (MATH)", in section 11.12.18.

JOINT MAJOR IN PHYSICS AND COMPUTER SCIENCE under "Physics (PHYS)", in section 11.12.26.

MAJOR IN SOFTWARE ENGINEERING

(69 credits)

[Revised, Fall 2006:  section begins.] 
 

Required Courses

(60 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 304

(3)

Object-oriented Design

COMP 310

(3)

Computer Systems and Organization

or ECSE 427

(3)

Operating Systems

COMP 330

(3)

Theoretical Aspects: Computer Science

COMP 360

(3)

Algorithm Design Techniques

COMP 361

(3)

Systems Development Project

ECSE 321

(3)

Introduction to Software Engineering

ECSE 428

(3)

Software Engineering Practice

ECSE 429

(3)

Software Validation

ECSE 495

(3)

Software Engineering Design Project

MATH 222

(3)

Calculus 3

MATH 223

(3)

Linear Algebra

MATH 240

(3)

Discrete Structures 1

MATH 323

(3)

Probability

MATH 324

(3)

Statistics

Complementary Courses

(9 credits)

selected from the following:

COMP 303

(4)

Programming Techniques

COMP 335

(3)

Software Engineering Methods

COMP 350

(3)

Numerical Computing

COMP 409

(3)

Concurrent Programming

COMP 420

(3)

Secondary Storage Algorithms and Data Structures

COMP 421

(3)

Database Systems

COMP 424

(3)

Topics: Artificial Intelligence 1

COMP 435

(3)

Basics of Computer Networks

COMP 505

(3)

Advanced Computer Architecture

COMP 512

(4)

Distributed Systems

COMP 520

(4)

Compiler Design

COMP 521

(4)

Modern Computer Games

COMP 522

(4)

Modelling and Simulation

COMP 523

(3)

Language-based Security

COMP 525

(3)

Formal Verification

COMP 526

(3)

Probabilistic Reasoning and AI

COMP 529

(4)

Software Analysis

COMP 533

(3)

Object-Oriented Software Development

COMP 535

(3)

Computer Networks 1

COMP 537

(3)

Internet Programming

COMP 547

(4)

Cryptography and Data Security

COMP 558

(3)

Fundamentals of Computer Vision

COMP 560

(3)

Graph Algorithms and Applications

COMP 566

(3)

Discrete Optimization 1

COMP 575

(3)

Fundamentals of Distributed Algorithms

COMP 577

(3)

Distributed Database Systems

ECSE 200

(3)

Fundamentals of Electrical Engineering

ECSE 210

(3)

Circuit Analysis

ECSE 291

(2)

Electrical Measurement Laboratory

ECSE 303

(3)

Signals and Systems 1

ECSE 304

(3)

Signals and Systems 2

ECSE 322

(3)

Computer Engineering

ECSE 323

(5)

Digital Systems Design

ECSE 404

(3)

Control Systems

ECSE 411

(3)

Communications Systems

ECSE 420

(3)

Parallel Computing

ECSE 421

(3)

Embedded Systems

ECSE 422

(3)

Fault Tolerant Computing

ECSE 424

(3)

Human-Computer Interaction

ECSE 425

(3)

Computer Organization and Architecture

ECSE 426

(3)

Microprocessor Systems

ECSE 504

(3)

Computer Control

ECSE 508

(3)

Multi-Agent Systems

ECSE 522

(3)

Asynchronous Circuits and Systems

ECSE 526

(3)

Artificial Intelligence

ECSE 529

(3)

Image Processing and Communication

ECSE 530

(3)

Logic Synthesis

ECSE 531

(3)

Real Time Systems

ECSE 532

(3)

Computer Graphics

or COMP 557

(3)

Fundamentals of Computer Graphics

MATH 315

(3)

Ordinary Differential Equations

MATH 381

(3)

Complex Variables and Transforms

[Revised, Fall 2006:  section ends.] 

HONOURS IN COMPUTER SCIENCE

(72 credits)

Honours students must maintain a CGPA of 3.00 and must have at least this average upon graduation as well.

Required Courses

(45 credits)

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)

Computer Systems and Organization

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 323

(3)

Probability

MATH 340

(3)

Discrete Structures 2

or MATH 350

(3)

Graph Theory and Combinatorics

Complementary Courses

(27 credits)

24 credits of COMP and/or ECSE courses, 12 credits of which must be at the 500 level, from the list of complementary courses for the Major in Computer Science, with the addition of COMP 552 Combinatorial Optimization.

3 credits, any 300-level or above Mathematics course (excluding MATH 323, MATH 338, MATH 340, MATH 350)

JOINT HONOURS IN MATHEMATICS AND COMPUTER
SCIENCE

under "Mathematics and Statistics (MATH)", in section 11.12.18. Students must consult an Honours adviser in both Departments.

MINOR IN COGNITIVE SCIENCE

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


Search the Class Schedule by term for course sections offered. This includes class times, locations and instructors.

 

 

Search the Course Catalog
for all courses at McGill,
including the course description. Note: note all courses listed here are offered every term or year.
 

McGill University
www.mcgill.ca/student-records