Undergraduate Calendar 2007-2008


University of Waterloo
UW  HOME
CALENDAR  CONTENTS
MATHEMATICS  INDEX

C O M P U T E R   S C I E N C E

Computer Science is centred around the study of information. It is concerned with the nature and properties of information, its structure and classification, its storage and retrieval, and the various types of processing to which it can be subjected. It is also concerned with the physical machines that perform these operations, with the elemental units of which these machines are composed, with the organization of these units into efficient information processing systems, and with the exploration of the limits of the abilities of these machines.

Computer Science is recognized as an independent discipline with an inherently mathematical nature. Its activity ranges from theoretical areas such as the theory of automata, system organization and logic design, formal languages and computability theory to applied areas such as scientific computing, programming languages, bioinformatics, software management, and computer systems.

The advent of the computer has facilitated a systems approach to solving many problems in science, business, and industry. There is currently a great demand for information analysts to define how systems will perform these functions and for programmers to implement production systems on computers.

Effective July 1, 1997, Regular and Co-operative Honours BMath (Computer Science) plans, including the Information Systems, Digital Hardware, and Software Engineering Options and Double Honours plans involving Computer Science, have been accredited by the Computer Science Accreditation Council. The Council is sponsored by the Canadian Information Processing Society (www.cips.ca/)

This accreditation recognizes that the quality of these plans meets published, generally accepted criteria for sound education in the discipline. A student who graduates from an accredited plan is eligible to be designated as an Information Systems Professional (www.cips.ca/standards) after two years of professional level experience.

The Bioinformatics plan and the Bachelor of Computer Science plans are not yet accredited because students in these plans had not yet graduated at the time of the last accreditation review. The David R. Cheriton School of Computer Science expects the plans to be accredited shortly. Plans involving Joint Honours Computer Science, however, will not be accredited because they do not include enough Computer Science content.

Computer Science Major Plans

CS Major plans include: all plans leading to the BCS degree; the Computer Science plan, Computer Science/Business Option, and the Computer Science/Digital Hardware Option leading to the BMath degree; the Honours Bioinformatics and Honours Biology and Bioinformatics plans leading to the BSc degree; and all Joint or Double Honours BMath plans involving Computer Science as one of the explicitly designated major areas of study. The Honours Computing and Financial Management program and the Honours Software Engineering program are also considered Computer Science Major plans for the purpose of student access to Computer Science courses, but admission and continuation are handled separately.

It is expected that admission to Computer Science Major plans will normally occur when a student first applies to the Faculty of Mathematics.

Students from within the Faculty of Mathematics with advanced standing may apply for admission to a Computer Science Major plan if they:

Advanced standing students from within the Faculty satisfying these conditions are normally admitted; applicants without some of these conditions will be considered on an individual basis. Students are normally not considered for admission beyond the 2B level.

Honours Bachelor of Computer Science

This plan is subject to the common degree requirements in Table I in "Degree Requirements" on page 10:5.

All of
CS 125 Introduction to Programming Principles or CS 133 Developing Programming Principles or CS 135 Designing Functional Programs*
CS 134 Principles of Computer Science or CS 136 Elementary Algorithm Design and Data Abstraction
MATH 135 (or MATH 145) Algebra
MATH 136 (or MATH 146) Linear Algebra 1
MATH 137 (or MATH 147) Calculus 1
MATH 138 (or MATH 148) Calculus 2
MATH 239 (or MATH 249) Introduction to Combinatorics
STAT 230 (or STAT 240) Probability
STAT 231 (or STAT 241) Statistics
CM 339/CS 341 Algorithms
CS 240 Data Structures and Data Management
CS 241 Foundations of Sequential Programs
CS 245 Logic and Computation
CS 246 Software Abstraction and Specification
CS 251 Computer Organization and Design
CS 350 Operating Systems
* or an additional 300- or 400-level CS major course in addition to those required above
Three additional CS courses chosen from CS 340-398, 440-489.
Two additional CS courses chosen from CS 440-489.
One additional course chosen from
CO 487/CM 432 Applied Cryptography
CM 461/STAT 440 Computational Inference
CS 440-498
CS 499T Honours Thesis
CS 600- or 700-level courses
(CS 600- or 700-level courses may be taken only if an equivalent 400-level course does not exist and special permission is obtained from the instructor and a CS undergraduate advisor. Courses in this list may be counted as CS 0.5 units.)
The selection of upper-year CS courses must include at least one course from each of at least two of the following area groups
Systems and SE: CS 343, 442, 444, 445, 446, 447, 450, 452, 454, 456, 457
Applications: CS 348, 448, 482, 483, 486, 488
Mathematical Foundations of CS: CS 360, 365, 370, 371, 462, 466, 472, 476, 487
The 5.0 non-math units must either be used to satisfy requirements for a minor or a joint honours plan outside the Faculty of Mathematics, or must satisfy the following elective breadth and depth requirements. (Alternate plans must be approved by a CS advisor).
Elective breadth requirements
1.0 units from Arts Group A or from EASIA, HUMSC, ITALST, JS, NATST, PACS, SPD, WS
1.0 units from Arts Group B or from AFM, BUS, HRM, INTTS, ISS, LS, MSCI, SMF, SOCWK, STV
0.5 units from the Faculty of Science
0.5 units from the Faculties of Science, Applied Health Sciences, or Environmental Studies
Note: No course can be used to satisfy more than one of the above requirements.
Elective depth requirements
1.5 units at third-year level or higher with the same prefix
or
1.5 units with the same prefix forming a prerequisite chain of length three

Bachelor of Mathematics (Honours Computer Science)

In conjunction with the common degree requirements in Table I in "Degree Requirements" on page 10:5, this plan requires at least 27 math courses. Students not taking CS 125, 133, or 135 are required to take an additional third or fourth year CS major course. These overall requirements must include the Faculty core courses outlined in Table II in "Degree Requirements" on page 10:6 and the following courses:
All of
MATH 237 (or MATH 247) Calculus 3
MATH 239 (or MATH 249) Introduction to Combinatorics
CM 339/CS 341 Algorithms
CS 240 Data Structures and Data Management
CS 241 Foundations of Sequential Programs
CS 245 Logic and Computation
CS 246 Software Abstraction and Specification
CS 251 Computer Organization and Design
CS 350 Operating Systems
CS 360 Introduction to the Theory of Computing (CS 365 may be substituted for CS 360)
CS 370 Numerical Computation (AMATH 341/CM 271/CS 371 may be substituted for CS 370)

One additional CS course chosen from CS 340-398, 440-489.

Two additional CS courses chosen from CS 440-489.

One additional course chosen from
CO 487/CM 432 Applied Cryptography
CM 461/STAT 440 Computational Inference
CS 440-498
CS 499T Honours Thesis
CS 600- or 700-level courses
(CS 600- or 700-level courses may be taken only if an equivalent 400-level course does not exist and special permission is obtained from the instructor and a CS undergraduate advisor. Courses in this list may be counted as CS 0.5 units.)
Three of
Any ACTSC course explicitly listed as a requirement for the Honours Actuarial Science plan
Any AMATH course explicitly listed as a requirement for the Honours Applied Mathematics plan
AMATH/PMATH 331 Applied Real Analysis
AMATH/PMATH 332 Applied Complex Analysis
AMATH 343 Discrete Models
AMATH 373 Quantum Theory 1
CO 330 Combinatorial Enumeration
CO 342 Introduction to Graph Theory
CO 350 Linear Optimization
CO 351 Network Flow Theory
CO 367/CM 442 Nonlinear Optimization
Any PMATH course explicitly listed as a requirement for the Honours Pure Mathematics plan
PMATH 334 Introduction to Rings and Fields with Applications
PMATH 336 Introduction to Group Theory with Applications
Any STAT course (not including STAT 230/240 and STAT 231/241, which are part of the Faculty core) explicitly listed as a requirement for the Honours Statistics plan
The 5.0 non-math units must satisfy the same restrictions as specified for the Bachelor of Computer Science (Honours).

Business Option

The Business Option is available for both the Bachelor of Computer Science and the Bachelor of Mathematics (Honours Computer Science) plans. BCS/Business Option students may not claim a minor in Economics, Management Studies, or HRM or an Option in HRM. The requirements are the same as for those plans except that;
a) the elective breadth and depth requirements are waived for the BMath (CS), and
b) both plans include the following additional constraints on course selection:
Two of
CS 348 Introduction to Database Management
CS 454 Distributed Systems
CS 490 Information Systems Management
Two of (communications courses)
CS 492 The Social Implications of Computing
ENGL 109 Introduction to Academic Writing
ENGL 119 Communications in Mathematics & Computer Science
ENGL 209 Writing Strategies
ENGL 210* (various Writing courses)
SPCOM 223 Public Speaking or SPCOM 100 Interpersonal Communication
Six of (business courses)
ACTSC 231 Mathematics of Finance
ACTSC 371 Corporate Finance 1
AFM 101 Core Concepts of Accounting Information or AFM 121 Understanding and Using Financial Accounting Information
AFM 102 Introduction to Managerial Accounting or AFM 122 Understanding and Using Managerial Accounting Information
BUS 111W Introduction to Business Organization
BUS 121W Functional Areas of the Organization
BUS 362W Building and Managing Products, Services and Brands
BUS 481W Business Policy 1
BUS 491W Business Policy 2
ECON 101 Introduction to Microeconomics
ECON 102 Introduction to Macroeconomics
ECON 344 Marketing
HRM 200 Basic Human Resources Management
MSCI 211 Organizational Behaviour or PSYCH 338 Organizational Psychology
MSCI 311 Organizational Design and Technology
Note: Courses labelled BUS are offered by Wilfrid Laurier's School of Business and Economics. See "Business-Related Plans." Non-math courses may have enrolment limits or may not easily fit schedules.

Digital Hardware Option (Only stream-4 co-op)

Students must apply for entry during 1A and have a cumulative average of 75% or higher. Enrolment in this plan is limited. Graduates of this option do not qualify for the professional engineering designation.

The Digital Hardware Option is available for both the Bachelor of Computer Science and the Bachelor of Mathematics (Honours Computer Science). In each case, the requirements are the same except that ECE 222 replaces CS 251, and the following additional constraints apply to course selection:

Two of
CS 452 Real-Time Programming
CS 454 Distributed Systems
CS 456 Computer Networks
CS 457 System Performance Evaluation
All of
GENE 123 Electrical Engineering
ECE 223 Digital Circuits and Systems
ECE 241 Circuit Analysis and Design
ECE 324 Microprocessor Systems and Interfacing
ECE 327 Digital System Engineering
ECE 429 Computer Structures
(CS 450 Computer Architecture may be substituted for ECE 327 and ECE 429)
Note: Students taking ECE 327 and 429 instead of CS 450 will count this combination as 0.5 math units in the range CS 440-498, and 0.5 non-math units.
Recommended courses
High-school physics or
PHYS 115 Mechanics or
PHYS 121 Mechanics and Waves 1

Software Engineering Option

The Software Engineering Option is available only for the Bachelor of Computer Science plan. This option is offered jointly by the David R. Cheriton School of Computer Science and the Department of Electrical and Computer Engineering. The rationale for the plan is described in the "Faculty Options" section of the Engineering chapter. Given that the Option involves two faculties, it has slightly different realizations in those faculties. Students who complete this option within the Faculty of Mathematics do not qualify for the professional engineering designation. The course requirements are the same as for the Bachelor of Computer Science (Honours) with the following constraints on upper-year CS courses:

All of
CS 348 Introduction to Database Management
Foundations
All of
CS 445/ECE 451 Software Requirements Specification and Analysis
CS 446/ECE 452 Software Design and Architectures
CS 447/ECE 453 Software Testing, Quality Assurance and Maintenance
Applications
Two of
CS 343 Concurrent and Parallel Programming
CS 349 User Interfaces
CS 444 Compiler Construction
CS 448 Database Systems Implementation
CS 450 Computer Architecture or ECE 429 Computer Structures
CS 452 Real-time Programming
CS 454 Distributed Systems or ECE 454 Distributed and Networking Computing
CS 456 Computer Networks or ECE 428 Computer Communications Networks
CS 457 System Performance Evaluation
CS 486 Introduction to Artificial Intelligence or ECE 457 Applied Artificial Intelligence
CS 488 Introduction to Computer Graphics
The following constraints apply to the non-math and free-choice courses:
Societal Issues
One of
CS 492 The Social Implications of Computing
GENE 411 Engineering Law and Ethics
ME 401 Law for the Professional Engineer
PHIL 215 Professional and Business Ethics
PHIL 315 Ethics and the Engineering Profession
STV 100 Society, Technology and Values: Introduction
STV 202 Design and Society
STV 302 Information Technology and Society
Note: Because CS 492 is a math course, it may only be taken as a replacement for CS 133 or as free-choice course.

Business Issues
One of

BUS 111W Introduction to Business Organization
BUS 121W Functional Areas of the Organization
GENE 452 Technical Entrepreneurship
HRM 200 Basic Human Resources Management
MSCI 211 Organizational Behaviour
MSCI 311 Organizational Design and Technology
MTHEL 400 Entrepreneurship, Technology and the Emerging Information Economy
Note: Courses labelled BUS are offered by Wilfrid Laurier's School of Business and Economics. See "Business-Related Plans."

Reasoning methodology or Communication
May be replaced with an additional course from the societal or business lists.

ENGL 109 Introduction to Academic Writing
ENGL 119 Communications in Mathematics & Computer Science
ENGL 140R The Use of English 1
ENGL 209 Writing Strategies
ENGL 210E Genres of Technical Communication
ENGL 210F Genres of Business Communication
ENGL 219 Contemporary Usage
ENGL 309E/SPCOM 323 Speech Writing
ENGL 376R Applied English Grammar 1
ENGL 392A Information Design
ENGL 392B The Rhetoric of Text and Image
PHIL 145 Critical Thinking
PHIL 200J Intentional Logic
PHIL 243 Creative Thinking, Problem Solving and Decision Making
SPCOM 100 Interpersonal Communication
SPCOM 223 Public Speaking
SPCOM 225 Interviewing
SPCOM 324 Small Group Communication
Note: Non-math courses may have enrolment limits or may not easily fit schedules.

Joint Honours Computer Science (Bachelor of Mathematics)

See "Academic Program/Plans" on page 10:3 for a complete description of Joint plan requirements. Students not taking CS 125, 133, or 135 are required to take an additional third or fourth year CS major course. Note that both specialization areas designated in such Joint plans must be disciplines within the Faculty of Mathematics.

All of
MATH 239 (or MATH 249) Introduction to Combinatorics
CM 339/CS 341 Algorithms
CS 240 Data Structures and Data Management
CS 241 Foundations of Sequential Programs
CS 245 Logic and Computation
CS 246 Software Abstraction and Specification
CS 251 Computer Organization and Design
CS 350 Operating Systems

One additional CS course chosen from CS 340-398, 440-489.

One additional CS course chosen from CS 440-489.

One additional course chosen from
CO 487/CM 432 Applied Cryptography
CM 461/STAT 440 Computational Inference
CS 440-498
CS 499T Honours Thesis
CS 600- or 700-level courses
(CS 600- or 700-level courses may be taken only if an equivalent 400-level course does not exist and special permission is obtained from the instructor and a CS undergraduate advisor. Courses in this list may be counted as CS 0.5 units.)

Joint Honours BCS with discipline in another Faculty

The Joint Honours Computer Science and "Z" academic plan, in conjunction with the common degree requirements in Table I in "Degree Requirements" on page 10:5, requires a total of 40 courses (20 units), including the courses listed below and the Joint Honours requirements of "Z." Students not taking CS 125, 133, or 135 are required to take an additional third or fourth year CS major course. The requirements on overall average of the Math Faculty and major averages for both plans must be met at the time of declaration of Joint Honours and must be maintained. It may take more than eight terms to complete a Joint Honours degree.

One of
CS 125 Introduction to Programming Principles
CS 133 Developing Programming Principles
CS 135 Designing Functional Programs
A 300- or 400-level CS major course in addition to those required below
One of
CS 134 Principles of Computer Science
CS 136 Elementary Algorithm Design and Data Abstraction
All of
MATH 135 (or MATH 145) Algebra
MATH 136 (or MATH 146) Linear Algebra 1
MATH 137 (or MATH 147) Calculus 1
MATH 138 (or MATH 148) Calculus 2
MATH 239 (or MATH 249) Introduction to Combinatorics
STAT 230 (or STAT 240) Probability
STAT 231 (or STAT 241) Statistics
CM 339/CS 341 Algorithms
CS 240 Data Structures and Data Management
CS 241 Foundations of Sequential Programs
CS 245 Logic and Computation
CS 246 Software Abstraction and Specification
CS 251 Computer Organization and Design
CS 350 Operating Systems

One additional course chosen from CS 340-398, 440-489.

Two additional CS courses chosen from CS 440-489.

Honours Bioinformatics (Regular and stream-8 co-op)

This decade has seen an exponential growth in the amount of genetic sequence and protein structure data available to biologists. These data have catalyzed a revolution in how biological and medical science is conducted in both academia and industry. However, due to the sheer volume and complexity of the data, modern computational techniques are required to store, manipulate, visualize, and explore it. Bioinformatics is the interdisciplinary area that applies the latest ideas of computer science to this wealth of new data to solve important biological problems, study the interactions of small molecules with biological receptors, and search for novel therapies for disease. It requires a sophisticated understanding of both the problem domain in biology and the appropriate analytical skills in computer science.

Although Bioinformatics is offered in both Co-op and Regular, it is intended primarily for Co-op students. Regular students will not be able to follow a "traditional" term sequence and will definitely need to study in some Spring terms.

In conjunction with common degree requirements in Table I in "Degree Requirements" on page 10:5, this plan requires at least 20 units and 0.75 lab units. To continue in any Bioinformatics plan, a student must satisfy the cumulative overall average requirement and cumulative major average requirement for Computer Science of 60%, as specified by the Faculty of Mathematics, and the cumulative major average requirement for Biology of 60%, as specified by the Faculty of Science.

All of
CS 125 Introduction to Programming Principles or CS 133 Developing Programming Principles or CS 135 Designing Functional Programs*
CS 134 Principles of Computer Science or CS 136 Elementary Algorithm Design and Data Abstraction
MATH 135 (or MATH 145) Algebra
MATH 136 (or MATH 146) Linear Algebra 1
MATH 137 (or MATH 147) Calculus 1
MATH 138 (or MATH 148) Calculus 2
MATH 239 (or MATH 249) Introduction to Combinatorics
STAT 230 (or STAT 240) Probability
STAT 231 (or STAT 241) Statistics
BIOL 130 Introductory Cell Biology
BIOL 139 Genetics
BIOL 140 Fundamentals of Microbiology
BIOL 140L Microbiology Laboratory
BIOL 208 Analytical Methods in Molecular Biology
BIOL 265 Diversity of Life
BIOL 308 Principles of Molecular Biology
BIOL 331 Advanced Cell Biology
BIOL 365 Resources in Bioinformatics
BIOL 465 Current Topics in Bioinformatics
CHEM 120 Physical and Chemical Properties of Matter
CHEM 120L Chemical Reaction Laboratory 1
CHEM 123 Chemical Reactions, Equilibria and Kinetics
CHEM 123L Chemical Reactions Laboratory 2
CHEM 264 Organic Chemistry 1
CM 339/CS 341 Algorithms
CS 240 Data Structures and Data Management
CS 241 Foundations of Sequential Programs
CS 245 Logic and Computation
CS 246 Software Abstraction and Specification
CS 251 Computer Organization and Design
CS 482 Computational Techniques in Biological Sequence Analysis
CS 483 Computational Techniques in Structural Bioinformatics
* or an additional 300- or 400-level CS major course in addition to those required below
Recommended courses
CHEM 333 Metabolism 1 (for students interested in Biochemistry)
BIOL 432 Molecular Biotechnology 2
Note
A student can qualify for at most one of the following three degrees, regardless of which courses are taken.

Bachelor of Science (Honours Bioinformatics)

This plan requires fulfillment of the core requirements as listed above in Bioinformatics plus the following courses:

All of
BIOL 342 Molecular Biotechnology 1
BIOL 434 Human Molecular Genetics or a fourth-year Biochemistry course
CHEM 237 Introductory Biochemistry
CS 350 Operating Systems

Bachelor of Science (Honours Biology and Bioinformatics)

This plan requires fulfillment of the core requirements as listed above in Bioinformatics plus the following courses:

All of
BIOL 342 Molecular Biotechnology 1
BIOL 434 Human Molecular Genetics
CHEM 237 Introductory Biochemistry
Two additional third- or fourth-year Biology or Biochemistry courses.

Bachelor of Computer Science (Honours Bioinformatics Option)

This plan requires fulfillment of the core requirements as listed above in Bioinformatics plus the following courses:

All of
CS 350 Operating Systems
All of
Two additional courses from CS 340-398, 440-498, and one additional course from CS 440-498.
Note: At least one of these three courses must be from either the Systems and SE list or the Mathematical Foundations list for the Bachelor of Computer Science shown on page 10:15.
Recommended courses
CS 348 Introduction to Database Management
CS 486 Introduction to Artificial Intelligence
Notes
1. Students in Bioinformatics may not claim a Biology minor with a BCS degree;
2. Students in Bioinformatics may not claim a CS minor with a Bachelor of Science degree.

Combined BCS/MMath and BMath/MMath Academic Plans in Computer Science

This plan is intended to shorten the usual time required to obtain an MMath. The combined plan streamlines the process by allowing a student to complete two graduate courses during their 4A/4B terms that will count towards a MMath degree. This plan will appeal to students who have extra room in their fourth year of study for grad courses and students who already have a good idea of a research project for a master's degree.

In order to be eligible for this plan an overall average of at least 80% is required. Students are encouraged to apply during their 3B academic term. Applications will also be considered during the 3A term or, in exceptional circumstances, at the start of the 4A term. Application forms are available from the administrative assistant for graduate studies. In addition to submitting a graduate application form and three letters of reference, students will need to submit a plan for their studies. This plan will include 1) a preferred supervisor, 2) the two graduate courses to be taken in 4A/4B, 3) an outline of proposed research.

Students in this plan will receive financial support of $1,000 per term during their fourth year and will also be guaranteed financial support during their graduate studies should they maintain the required average in the plan. Students are encouraged to apply for scholarships during September of their 4A term. These include both NSERC and the OGS.

Honours "X" with Computer Science Minor

See "Academic Programs/Plans" on page 10:4 for a complete description of Minor plan requirements. Note that discipline "X" must be within the Faculty of Mathematics.

A minimum of eight CS courses including:

One of
CS 134 Principles of Computer Science
CS 136 Elementary Algorithm Design and Data Abstraction
One of
CS 230 Introduction to Computers and Computer Systems
CS 241 Foundations of Sequential Programs
One of
CS 234 Data Types and Structures
CS 240 Data Structures and Data Management

Four additional CS courses numbered 200 or higher.

Note
Honours students in faculties other than Mathematics wishing a "Minor" in Computer Science should consult the section "Combination Honours Academic Plans Leading to a Degree in Another Faculty: Requirements" on page 10:41.

UW  HOME
CALENDAR  CONTENTS
MATHEMATICS  INDEX


The Undergraduate Calendar is published by the Office of the Registrar, University of Waterloo, Waterloo, ON N2L 3G1 Canada

Contact Information: Need academic advisement help? If so, please direct your inquiry to the appropriate Undergraduate Faculty Advisor by visiting
the Undergraduate Faculty Advisors page on the Registrar's Office website for contact information.
If you are reporting technical problems and broken links in the calendar, send an email to roucal@uwaterloo.ca.
All other inquiries may be directed to: registrar@uwaterloo.ca.