Back to 2001-2002 Undergraduate Calendar2001-2002 Undergraduate Calendar  Back to ProgramsPrograms  
2001-2002 UNDERGRADUATE CALENDAR
Carleton University

Computer Science


5302 Herzberg Building
Telephone: 520-4333

Academic Administration

Director, F. Dehne

Associate Director D. Howe

Supervisor of Graduate Studies, Director, Ottawa-Carleton Institute for Computer Science, P. Bose

Co-op Faculty Advisers, L.D. Nel and I. Reichstein

Acting Registrar, Lisa Ralph

Teaching Staff

Professors

Frank Dehne, B.Sc., M.Sc. (Technical University of Aachen), Ph.D. (Wurzburg) • Douglas Howe, B.A. (Carleton), M.S., Ph.D. (Cornell) • Evangelos Kranakis, B.Sc. (Athens), Ph.D. (Minnesota) • W.R. LaLonde, B.A.Sc., M.A.Sc. (Toronto), Ph.D. (Waterloo) • John B. Oommen, B.Tech. (Indian Institute of Technology), M.Eng. (Indian Institute of Science), M.Sc., Ph.D. (Purdue) • Franz Oppacher, M.C.S. (Concordia), Ph.D. (Vienna) • Jorg-Rudiger Sack, Vordiplom, Diplom (Bonn), Ph.D. (McGill) • Nicola Santoro, D.Sc. (Pisa), Ph.D. (Waterloo)

Associate Professors

Michel Barbeau, B.C.S. (Sherbrooke), MC.S., Ph.D. (Montreal) Jean-Pierre Corriveau, B.Sc., M.C.S. (Ottawa), Ph.D. (Toronto) • S. Dandamudi, B.E. (Mysore), M.Tech. (Indian Institute of Technology), M.Sc., Ph.D. (Saskatchewan) • Danny Krizanc, B.Sc. (Toronto), Ph.D. (Harvard) • Louis D. Nel, B.Eng. (Carleton), M.Math, Ph.D. (Waterloo) • Irwin Reichstein, B.Sc. (McGill), Ph.D. (Minnesota)

Assistant Professors

Francis Bordeleau, B.Sc., (Montreal), B.Sc.A. (Quebec), MC.S., Ph.D. (Carleton) •Prosenjit Bose, B. Math, M. Math (Waterloo), Ph.D. (McGill) • Dwight Deugo, B.C.S., M.C.S., Ph.D. (Carleton) • Mark Lanthier, B.C.S., M.C.S. (Carleton) · A. Maheshwari, B.E.E.Eng., M.Sc. (Birla, India), Ph.D. (Bombay, India) * Michael Weiss, M.S. (Tech. Univ.Munich), Ph.D. (Mannheim)

Instructors

Weixuan LiCindy Sawchuk, B.A. (Alberta), M.A. (Queen's), B.C.S., M.C.S. (Carleton)

Adjunct Research Professors

M.D. Atkinson • J. Czyzowicz • H. Djidjev • F. Fiala · P. Flocchini • A. Nayak • J.E. Neilson • A. Pelc • J.R. Pugh • G. Ravindran • G. Roth • D.A. Thomas • P. Van Oorschot

 

General Information

The School of Computer Science offers a variety of programs and courses which together provide a wide spectrum of educational opportunities for students wishing to specialize in Computer Science. The Honours Bachelor of Computer Science (B.C.S.) program is professionally recognized and accredited by the Computer Science Accreditation Council, sponsored by CIPS, the Canadian Information Processing Society. While the School offers a Software Engineering stream of courses under the Bachelor of Computer Science degree program, it does not attempt, in any manner, to offer an Engineering program for students wishing to pursue such a profession. Nor does completion of the courses and program in Computer Science qualify anyone to work as a Professional Engineer. A co-operative education option is also available within this program allowing students to complement their academic studies with practical experience in the work-place. In addition, the School offers a combined Bachelor of Science (B.Sc.) Honours program with the Department of Chemistry and a Combined Bachelor of Mathematics (B.Math.) Honours program with the School of Mathematics and Statistics. Students registered in either a B.Sc. (Honours) or B.Math.(Honours) degree can follow a Minor in Computer Science (see p.196). The School offers a number of introductory courses that may stand alone in a program of another field of study or be augmented by a selection of other Computer Science courses to form an area of specialization.

Computer Science Certificate

A Computer Science re-training program for Science and Engineering Graduates. During a five month summer session, this program delivers six intensive training courses in computer programming. Each course consists of 15 days full time training with three hours of lectures (09:00-12:00) and four hours of lab tutorials (13:00-17:00) per day. All courses are intensive, time compressed, versions of Carleton's regular Bachelor of Computer Science (Honours) courses. Classes will be held in a dedicated lab with a computer assigned to each student for the entire session. The target enrolment is 25 students per class. For more information, consult http://www.scs.carleton.ca/certificate. Prerequisite: Completed Science or Engineering undergraduate degree, or equivalent. Cannot be taken by students enroled in the Bachelor of Computer Science program.

 Programs offered at the Graduate level include the Ph.D. and Master of Computer Science (M.C.S.) program offered in conjunction with the Ottawa-Carleton Institute for Computer Science, and the more interdisciplinary Master of Information System Science (M.Sc.) program. For details of these programs please refer to the Calendar of Graduate Studies and Research.

The School of Computer Science has a wide variety of computing equipment for student use. There are 15 laboratories: nine primarily for undergraduate courses, one dedicated to graduate students and five that are used solely for research. The School emphasizes the use of PCs to allow each student access to a powerful individual workstation, enabling the provision of a wide spectrum of computational equipment from networked microcomputer systems for student use to networked UNIX/LINUX workstations for graduate research. In addition, all students have access to the campus-wide computing facilities.

Bachelor of Computer Science (Honours), B.C.S. (Hons.) Program

The B.C.S. program is an Honours degree program in which candidates are required to complete 20.0 credits or equivalent after admission to First year. Students in the co-operative education stream are minimally required to complete an additional four work-term half course credits.

In order to provide the student with a choice of specialization, the program is designed around a core curriculum combined with a choice of four program streams. These options are designed to prepare graduates for professional careers in computer-related occupations or for advanced study at the graduate level.

Admission Requirements

First Year

The OSSD or equivalent, including six OACs, two of which must be (i) Calculus and (ii) Algebra and Geometry. An overall average of 70 percent or better is required along with an average of 70 percent or better in both Calculus and Algebra and Geometry; or the successful completion of Qualifying-University year with a GPA of 5.0 or better and including Mathematics 69.007* and 69.017* also with a GPA of 5.0 or better.

First Year with Co-operative Option

The OSSD or equivalent, including six OACs, two of which must be (i) Calculus and (ii) Algebra and Geometry. An overall average of 85 percent or better is required along with an average of 85 percent or better in both Calculus and Algebra and Geometry; or the successful completion of Qualifying-University year with a GPA of 11.0 or better and including Mathematics 69.007* and 69.017* also with a GPA of 11.0 or better. Students who do not meet these requirements on entry to the B.C.S. program may apply for admission to the Co-operative Option when they meet the requirements specified in the B.C.S. program for the School of Computer Science.

Advanced Standing

Applications for admission beyond First year will be assessed on their individual merits. Advanced standing will be granted only for those subjects assessed as being appropriate for the program and for the stream selected.

Mature Applicants

Persons who lack the normal entrance requirements as published in this Calendar may receive consideration for admission under the mature applicant policy. Applicants will normally have been away from full-time studies for a minimum of two years and must be 21 years of age, or over, by December 31 of the year in which they wish to enrol. For full details see p. 35.

Enrolment Limitation

Applicants should note that meeting the admission requirements can only establish eligibility for selection to the School of Computer Science.

Course Requirements

The program for the degree of Bachelor of Computer Science (Honours) consists of a total of 20.0 credits, normally 5.0 taken each year, including at least 7.5 Computer Science credits, 3.0 from Mathematics and Statistics, 2.5 from the Faculties of Arts and Social Sciences, an additional 2.0 from either the Faculty of Science (excluding Mathematics) or the School of Business, and to include at least 2.0 credits chosen from 400-level courses.

Because the study of Computer Science is necessarily structured, students are required to select a course of study from one of four streams in addition to those courses of the core program. The streams are:

1. Software and Computing

2. Management and Business Systems

3. Software Engineering

4. Network Computing

Relevant Courses

All courses bearing a 95 prefix carry the designation Computer Science. In addition, the following courses offered by the School of Business and the Faculty of Engineering are relevant to the B.C.S. program, are counted as Computer Science credits and are treated as Computer Science courses in the calculation of GPAs. 

Business 42.230*, 42.240*, 42.440*, 42.442*, 42.446*, 42.447*.

Engineering 94.333*, 94.405*, 94.457*.

Core Courses

All students enrolled in the Computer Science degree program are required to complete the following core courses:

First Year

Mathematics 69.107* and 69.114*;

Computer Science 95.145*, 95.185*, 95.146* and 95.142*.

Second Year

Mathematics 69.217*;

Computer Science 95.242*, 95.203*, 95.244* and 95.285*.

Third Year

Mathematics 69.311*;

Computer Science 95.300*, 95.304*, 95.305*, 95.307* and 95.384*.

Fourth Year

Computer Science 95.495*.

Program Streams

The Software Engineering Stream and the Network Computing Stream are specializations of the Software and Computing Stream. Students with a particular interest in Software Engineering or Network Computing are invited to select these specific streams. Through its large number of Computer Science electives, the Software and Computing Stream, on the other hand, is targeted towards students aiming for breadth in the field of Computer Science.

Software and Computing Stream

This stream is intended for students interested in the theory and practice of software, ranging from the design and implementation of large systems to the theory of computing. Example topics include: the design and analysis of algorithms, distributed and parallel computing, programming languages, operating systems, databases. The program requirements of this stream are:

First Year

1.0 credit in an experimental science.

Second Year

Mathematics 69.207* and 69.265*;

0.5 additional Computer Science credit at the 200-level or above.

Third and Fourth Years

Computer Science 95.484*

and

1.0 additional Computer Science credit at the 300-level or above;

and

1.5 additional Computer Science credit at the 400-level.

Management and Business Systems Stream

This stream is intended for students whose interests include the application of computers to business. It is designed to prepare students for the careers in this field, with a combination of Computer Science courses and a strong component of courses selected from those offered by the School of Business. Program requirements for the Management and Business Systems stream are:

First Year

Business 42.101* and 42.102*;

Economics 43.100.

Second Year

Business 42.211*, 42.230*, 42.254*;

Mathematics 69.257*.

Third Year

Business 42.343* and

0.5 additional Computer Science credit at the 200-level or above;

Fourth Year

1.0 additional credits in Business at the 300-level or above;

0.5 additional credit in Business at the 400-level;

One of Mathematics 69.259* or 0.5 credit in Mathematics at the 200-level or above;

1.5 additional Computer Science credit at the 400-level.

Software Engineering Stream

Software Engineering is concerned with correct, timely, reliable and secure operations on information; with its communication, storage and presentation; with rapid, economical and correct development of software; and with understanding and satisfying user requirements. This stream is intended for students interested in acquiring a solid background in Computer Science as well as depth in both the foundations and the practice of Software Engineering.

The program requirements of this stream are:

First Year

1.0 credit in an experimental science.

Second Year

Mathematics 69.207* and 69.265*;

Computer Science 95.245*;

0.5 credit in Computer Science (at 200-level or above).

Third and Fourth Years

Computer Science 95.314*, 95.404*, 95.411*, 95.414*, 95.484*, 94.333*

(Business 42.447* is also strongly recommended)

Network Computing Stream

This stream is intended for students interested in the specific challenges of computing in a networked (distributed) environment, ranging from the design and implementation of parallel and distributed algorithms, to the architecture and workings of client/server systems. The program requirements of this stream are:

First Year

1.0 credit in an experimental science.

Second Year

Mathematics 69.207* and 69.265*;

Computer Science 95.245*;

0.5 credit in Computer Science (at 200- level or above).

Third and Fourth Years

Computer Science 95.323*, 95.401*, 95.409*, 95.411*, 95.413*, 95.484*

Counselling

Every student in the Bachelor of Computer Science degree program is encouraged to contact the School of Computer Science Undergraduate Adviser with any question related to the program.

Experimental Science Credits

The following courses are acceptable as Science courses for Computer Science students, but not as experimental science courses: Biology 61.192*, 61.193*, 61.216*, Chemistry 65.103*, Geology 67.104*, 67.241*, 67.242*, 67.243*, Physics 75.190, Science 60.101*, 60.102*, 60.201* and 60.202*. Other courses from Biology, Chemistry, Geology and Physics are eligible as experimental science credits.

Minor in Computer Science

Students registered for the B.Sc. (Honours) degree or for the B.Math. (Honours) degree may take a minor in Computer Science. The minor consists of 4.0 credits, to be successfully completed with a GPA of 6.5 or better: 95.105*, 95.106*, 95.102*, 95.185*, 95.202*, 95.204*, one of 95.304* or 95.305*, and 69/95.386*.

The Co-operative Education Option

General information on Co-op programs can be found in the Co-operative Education section.

The Work/Study Sequence

Students admitted to the Co-operative option normally enter the work-place for their first work term on completion of year two in the B.C.S. program. The normal mode of operation requires two eight-month (or double) work terms and one four-month (or single) work term as shown on this page.

Students in the Co-operative option will require 56 months to complete their program as opposed to 44 months in the regular Honours program. Variations in the work study sequence may be requested due to academic or work situations in upper years. Precise start and finish dates for work terms are established in consultation with Co-operative employers.

Work/Study Pattern

 

Fall

Winter

Summer

Year 1

study

study

work or free

Year 2

study

study

work

Year 3

work

study

work

Year 4

study

work

work

Year 5

study

study

 

 

Co-operative Option Admission Requirements and Registration Information

Admission into the Co-operative Option can occur:

1. directly upon being accepted to the First year of the B.C.S. program, for a student meeting requirements for the First year with Co-operative Option given in the Summary of Admission Requirements.

2. from within the B.C.S. program, normally in the Second year, for a student who:

a) has a cumulative GPA of 8.0 or better in Computer Science and 8.0 or better overall;

b) has successfully completed 3.0 required credits in Computer Science, including one of 95.242* or 95.244*;

c) is registered as a full-time student;

d) is eligible to work in Canada.

Note that meeting the above requirements only establishes eligibility for admission to the program. Enrolment in the Co-operative Option is limited.

Application forms for admission to the Co-operative Option are available from the Co-op Office. Completed applications should be submitted to that office by November 1, March 1, July 1, for May, September, January work terms respectively. Admission decisions are based on GPA and other requirements being met by the end of the previous term.

Eligibility for Placement in the First Work Term of the Co-operative Option

To be eligible for placement in the first work term of the Co-operative Option a student must meet the four above requirements a) through d) by the end of the term preceding the first job placement process.

Work Term Placement After First Year

Students who have been accepted into the Co-operative Option in First year may be given the opportunity to take part in a work term at the end of their First year. To be eligible for placement, students must at the end of their first term of study:

a) have a cumulative GPA of 11.0 or better in Computer Science and 11.0 or better overall;

b) have successfully completed 1.0 credit in Computer Science;

c) be registered as a full-time student;

d) be eligible to work in Canada.

Registration

During a work term, co-operative students will register in one of five co-operative work term report courses; Computer Science 95.320*, 95.321*, 95.322*, 95.420*, or 95.421*. While on a work term, students are limited to an additional 0.5 credit course, unless they have written support from their employer to take 1.0 credit.

Change of Work Term — Academic Term Sequence

Upon entry to the Co-operative program, a student is expected to follow the prescribed work term/academic term sequence. However, applications to change the sequence will be considered by the School.

Combined Honours B.Sc. Programs

A Combined Honours program must include a minimum of 6.0 credits in Computer Science. These requirements can be satisfied as follows:

Computer Science and Mathematics

Students in this program follow the prescribed Combined Honours B.Sc. program outlined on p.329. The program features equal emphasis on Mathematics and Computer Science.

Computer Science and Chemistry

Students in this program follow the prescribed Combined Honours B.Sc. program outlined on p.166. The program features equal emphasis on Chemistry and Computer Science.

Introductory Courses

Of the ten 100-level courses offered in Computer Science, four are entry-level courses, viz., Computer Science 95.101*, 95.104*, 95.145*, and 95.107*. Computer Science 95.102* and 95.106*, 95.142* and 95.146* are second-level courses and should not be attempted unless one of the entry-level courses has been successfully completed. Computer Science 95.102* is a second-level course which requires previous programming experience in a high-level language, which may be acquired by successful completion of an entry-level course or the equivalent. Computer Science 95.142* requires 95.145* as a prerequisite and is only available to students in the B.C.S. program, the combined Honours program in Computer Science and Mathematics, Honours Computer Mathematics and Honours Computer Statistics. Computer Science 95.185* requires one of the entry-level Computer Science courses (which may be taken concurrently).

With respect to the entry-level courses, students are expected to take only one. Specifically, students in the B.C.S. program must take 95.145*. B.C.S. students should note that credit will not be given for Computer Science 95.101* or 95.104*, nor can credit be given for more than one of Computer Science 95.105* or 95.107*. In selecting an entry-level course, students should take into account the following:

1. Computer Science 95.101* is designed specifically for Arts and Social Sciences students and may not be taken for credit by students in Computer Science, Science, Mathematics, or Engineering.

2. Computer Science 95.104* is designed specifically for Science students and may not be taken for credit by students in Computer Science or Engineering.

3. Computer Science 95.145* is an entry-level course Available only to students in Computer Science, the combined Honours program in Computer Science and Mathematics, Honours Computer Mathematics and Honours Computer Statistics.4. Computer Science 95.105* is an entry-level course designed for students who intend further studies in Computer Science but who are not eligible to take 95.145*. It is not a stand-alone course and should not be chosen by students who do not plan to continue studies in Computer Science.

Note: Business 42.142*, 42.242*, and Social Sciences 03.300* may not be taken for credit by students in Computer Science.

Academic Standing

Grading System

Standing in courses will be shown by alphabetical grades.

Standings to represent special circumstances are as follows:

Aeg

Pass standing granted although absent from final examinations. Aegrotat standing is granted only by the School of Computer Science Committee on Admission and Studies in response to a student's written request. It will be granted only in exceptional circumstances and if the term work has been of high quality.

Ch

Credit granted under the Challenge for Credit policy.

F

Failure. No academic credit.

Wdn

Withdrawn in good standing. No academic credit.

Abs

Failure due to absence from the final examination where the necessary term work has been completed. No academic credit.

Def

Students who are absent from final examinations or who are unable to complete their course work for medical or compassionate reasons may apply to the School of Computer Science Committee on Admission and Studies for deferred examination privileges.

IP

In progress.

Sat

Satisfactory.

Uns

Unsatisfactory.

Computation of Averages

Using the 12-point system, the grade points earned in any specific course are determined by multiplying the grade points corresponding to a grade by the credit value of the course. GPAs are calculated by dividing the total accumulated grade points by the total credits. Overall averages are calculated on the grades earned in all courses applicable to the degree.

Computer Science GPAs involve only those courses listed or cross-listed as Computer Science and those courses offered by the School of Business and the Faculty of Engineering that are counted as Computer Science credits. A list of these courses can be found in the section entitled Other Relevant Courses, p. 197. Work Term Report Courses are not included in the computation of averages.

Unless otherwise indicated, courses are one full credit, indicated 1.0 on all record documents. Courses marked « are half-credits, indicated 0.5 on documents.

Course Load

The normal course load for a full-time student in the School of Computer Science, during the Fall/Winter session, is the equivalent of 5.0 credits. The normal maximum course load for a part-time student, in the Fall/Winter session, is the equivalent of 2.0 credits.

Students may register for a maximum of 2.0 credits in the Summer session.

A student in good standing may exceed the normal course load only with the recommendation of the Director of the School of Computer Science.

Promotion from First Year

Full-time students in First year, in order not to fail their year in May, must, by then, have passed at least 3.0 credits or equivalent. To be promoted to the course credit system, a full-time student must pass, by the end of August, at least 4.0 credits from the First year of his or her chosen stream, including at least one credit in Computer Science, with a GPA of 6.5 or better in Computer Science courses and 5.0 or better overall. (GPAs are to include any failing grades.) Part-time students must meet the same grade-point standards and pass at least 4.0 of the first 6.0 approved credits attempted.

For all part-time students, promotion to the course-credit system must be accomplished in not more than three calendar years from the date of first registration in the B.C.S. program.

A student who fails to meet these promotion requirements is deemed to have failed first year and is required to withdraw from the B.C.S. program. Such students are not eligible to apply for re-admission to the B.C.S. program.

Course Credit System

Students meeting promotion requirements at the end of First year will proceed on the course credit system. Under this system there is no promotion from one year to the next.

After promotion to the course credit system, a student may accumulate a maximum of 3.0 credits in repeated courses or course replacements.

To continue in the B.C.S. program, a student must, by the end of August each year, have gained credit in the past 12 months towards the B.C.S. degree and have a cumulative GPA of 6.5 or better in Computer Science courses and 5.0 or better overall. (GPAs are to include any failing grades.) Failure to comply with these standards requires withdrawal from the program. Such students may, however, be eligible to transfer into another degree program. Guidance of the Registrar of the School of Computer Science should be sought in such cases.

To continue in the Co-operative stream of the Bachelor of Computer Science program, a student must, by the end of August each year, have gained at least 2.0 academic credits (other than work term report credits) during the past 12 months towards the B.C.S. degree and have a cumulative GPA of 8.0 or better in Computer Science and 8.0 or better overall. (GPAs are to include any failing grades). Failure to meet these standards requires withdrawal from the Co-operative option. Students required to withdraw from the Co-operative option are eligible to continue in the regular Bachelor of Computer Science program provided they meet the academic standards required for continuation in this program.

Examinations

General regulations on examinations can be found in Academic Standing and Conduct. In addition, the following regulation applies to students in the B.C.S. program.

Deferred Examinations

Students unable to write a final examination because of illness or for compassionate reasons may apply within one week after the final examination to the School of Computer Science Registrar's office for permission to write a deferred examination. Permission can be granted only if the absence is fully and specifically supported by a medical certificate or other documents.

Graduation

University Graduation Requirements

See Academic Standing and Conduct.

Application to Graduate

Students expecting to graduate in the Spring must make application on the form available in the School Registrar's office by February 1; those expecting to graduate in the Fall, by September 1; and those expecting to graduate in February, by December 1.

Graduation Requirements

To qualify for graduation with a Bachelor of Computer Science degree with Honours a student must:

1. present at least 20.0 approved credits beyond Qualifying-University year, including at least 13.0 credits at the 200-level or higher;

2. meet the program requirements of the School of Computer Science for at least one of the B.C.S. program streams;

3. meet the minimum grade-point standards for Honours as stated below;

4. complete the program within seven calendar years of the entry to the course credit system;

5. be recommended by the School Council and the Faculty Board of the School of Computer Science.

To qualify for graduation with a Bachelor of Computer Science degree with Honours and Co-operative degree designations a student must:

1. present at least 22.0 approved credits beyond Qualifying-University year, including at least 15.0 credits at the 200-level or higher;

2. meet the program requirements of the School of Computer Science for at least one of the B.C.S. program streams;

3. meet the minimum grade-point standards for Honours as stated below;

4. complete the program within seven calendar years of the entry to the course credit system;

5. successfully complete a minimum of four work terms;

6. be recommended by the School Council and the Faculty Board of the School of Computer Science.

Designations of Honours Degrees

Three designations of Honours are awarded, determined on the basis of the GPA as follows:

Highest Honours

10.0 - 12.0 in Computer Science courses, and

8.0 or better overall

High Honours

9.0 or better in Computer Science courses, and

7.0 or better overall

Honours

6.5 or better in Computer Science courses, and

5.0 or better overall

Co-operative Degree Designation

Graduates successfully completing the requirements for graduation from the Co-operative Education Option will receive a Co-operative degree designation in addition to the Honours designation.

Courses

Not all of the following courses are offered in a given year. For an up-to-date statement of course offerings for 2001-2002, please consult the Registration Instructions and Class Schedule booklet published in the summer.

Some of the following Computer Science courses are cross-listed from other parts of the Calendar. In every such case, only one course is actually offered and the two numbers are alternate identifiers for this single course. Students in the B.C.S. program should register in such a course under the Computer Science (95) number.

Note: In all courses with programming assignments, students usually find it necessary to be on campus at other than the scheduled lecture periods to make use of computing facilities.

Computer Science 95.101*

Introduction to Computers for the Arts and Social Sciences

This course is intended to give students in the arts and social sciences a working knowledge of computers and their applications; computer fundamentals; use of computing facilities; introduction to graphical user interfaces; a sampling of software packages applied to problems in the arts and social sciences.

Precludes additional credit for Computer Science 95.100* and 95.104*. This course cannot be taken for credit by students in Business, Engineering, Computer Science, Mathematics or Science.

Lectures three hours a week.

Computer Science 95.102*

Introduction to Systems Programming

A course designed to introduce the student to programming with procedures and primitive data types. Topics include: arrays, strings, pointers, heap and stack memory allocation and deallocation, iterative and recursive linked list manipulations, system/library calls.

Precludes additional credit for Computer Science 95.107*, 95.142*, Engineering 94.112* and Engineering 91.166*.

Prerequisite: Computer Science 95.105*.

 Lectures three hours a week.

Computer Science 95.104*

Introduction to Computers for the Sciences

This course provides students with a working knowledge of computers and their applications. Topics include computer fundamentals and the use of application packages such as text processors, spreadsheets, databases and web browsers with particular reference to problems in Science.

Precludes additional credit for Computer Science 95.101*. This course cannot be taken for credit by students in the B.C.S. program or combined programs in Computer Science.

Lectures three hours a week.

Computer Science 95.105*

Introduction to Object-Oriented Programming

A first course in problem solving and computer programming designed for students who wish to specialize in Computer Science. Introduction to object-oriented programming: syntactic constructs, data abstraction, classification and inheritance, typing and polymorphism, testing and debugging.

Precludes additional credit for Computer Science 95.145* and Engineering 94.110*.

Lectures three hours a week and one hour tutorial.

Computer Science 95.106*

Design and Implementation of Computer Applications

A continuation of Computer Science 95.105* focusing on the design and implementation of complete applications including the user interface, the software architecture, and the interacting domain objects. Brief introduction to UML. Possible application topics include a testing framework, user-interface architectures and managing persistence.

Precludes additional credit for Computer Science 95.146* and Engineering 94.111.

Prerequisites: A grade of C- or better in Computer Science 95.105*.

Lectures three hours a week.

Computer Science 95.107*

Introduction to Structured Programming

A first course in computer programming using a procedural language. Introduces basic sequencing, alternation, and looping control constructs, functional and procedural abstractions, data abstraction, and problem-solving in the context of computer programming.

Precludes additional credit for Engineering 91.166* and Computer Science 95.102* (if taken after 1996/97).

This course cannot be taken for credit by students currently registered in Computer Science programs.

Lectures three hours a week.

Computer Science 95.142*

Introduction to Systems Programming

Introduction to programming with procedures and primitive data types, designed for honours students in Computer Science. Topics include: arrays, strings, pointers, heap and stack memory allocation and deallocation, iterative and recursive linked list manipulations, system/library calls.

Precludes additional credit for Computer Science 95.102*, 95.107*, Engineering 94.112*, and Engineering 91.166*.

Prerequisite: Computer Science 95.145*. Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.

Lectures three hours a week.

Computer Science 95.145*

Introduction to Object-Oriented Programming

A first course in problem solving and computer programming designed for Honours students in Computer Science. Introduction to object-oriented programming; syntactic constructs, data abstraction, classification and inheritance, typing and polymorphism, testing and debugging.

Precludes additional credit for Computer Science 95.105* and Engineering 94.110*.

Prerequisite: Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.

Lectures three hours a week and one hour tutorial.

Computer Science 95.146*

Design and Implementation of Computer Applications

A continuation of 94.145* focusing on the design and implementation of complete applications including the user interface, the software architecture, and the interacting domain objects. Brief introduction to UML. Possible application topics include a testing framework, user-interface architectures and managing persistence.

Precludes additional credit for Computer Science 95/106* and Engineering 94.111.

Prerequisite: Computer Science 95.145* (with a grade of C- or better). Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.

Lectures three hours a week.

Computer Science 95.185*

Discrete Structures I

An introduction to discrete mathematics and discrete structures. Topics include: propositional and predicate calculus, Boolean algebra, introduction to complexity of algorithms, mathematical reasoning, counting, recurrences, relations, introduction to graphs. (Also listed as Mathematics 69.185*.)

Prerequisites: Two OACs in Mathematics and one of Computer Science 95.105* or 95.107* (which may be taken concurrently).

Lectures three hours a week.

Computer Science 95.202*

Abstract Data Types and Algorithms

Introduction to the design and implementation of abstract data types and to the complexity analysis of data structures. Topics include: stacks, queues, lists, trees and graphs. Special attention is given to abstraction, interface specification and hierarchical design through the use of an object-oriented programming language.

Precludes additional credit for Computer Science 95.242* and Engineering 94.202*.

Prerequisites: A grade of C- or better in Computer Science 95.106*.

Lectures three hours a week.

Computer Science 95.203*

Computer Organization

A thorough treatment of computer system organization. Processor architectures (RISC, CISC, superscalar). Instruction sets and addressing modes. Assembly language. Basics of digital logic and hardware construction. Memory organization and cache principles. System buses. Input/output methods and devices.

Precludes additional credit for Engineering 94.203*, 94.306* for students in the Computer Science program and in combined programs with Mathematics or Chemistry.

Prerequisite: Computer Science 95.102* or Engineering 91.166*.

Lectures three hours a week.

Computer Science 95.204*

Programming in C++

In-depth study of the language C++ from a software engineering perspective, with emphasis on features supporting the development of large efficient and reusable systems. Topics include: encapsulation, templates, references, constructors and destructors, overloading, memory management, exception handling, and the standard template library.

Precludes additional credit for Computer Science 95.244* and Engineering 94.204*.

Prerequisites: A grade of C- or better in Computer Science 95.102* and a grade of C- or better in 95.106*.

Lectures three hours a week.

Computer Science 95.205*

Internet Application Programming

Design and implementation of Internet application programs. Topics include: fundamentals of the Web, introduction to client/server architectures, Internet programming, Web browsers, hypertext links, network programming.

Precludes additional credit for Computer Science 95.245*.

Prerequisites: Computer Science 95.106* or equivalent.

Lectures three hours a week.

Computer Science 95.242*

Abstract Data Types and Algorithms

Introduction to the design and implementation of abstract data types and to complexity analysis of data structures. Topics include: stacks, queues, lists, trees and graphs. Special attention is given to abstraction, interface specification and hierarchical design through the use of an object-oriented programming language.

Precludes additional credit for Computer Science 95.202* and Engineering 94.202*.

Prerequisite: Computer Science 95.146* (with a grade of C- or better). Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Statistics.

Lectures three hours a week.

Computer Science 95.244*

Programming in C++

In-depth study of the language C++ from a software engineering perspective, with emphasis on features supporting the development of large efficient and reusable systems. Topics include: encapsulation, templates, references, constructors and destructors, overloading, memory management, exception handling, and the standard template library.

Precludes additional credit for Computer Science 95.204* and Engineering 94.202*.

Prerequisite: Computer Science 95.142* and 95.146* (with a grade of C- or better in both courses). Restricted to students registered in the B.C.S. program, the combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.

Lectures three hours a week.

Computer Science 95.245*

Internet Application Programming

Design and implementation of Internet application programs. Topics include: fundamentals of the Web, introduction to client/server architectures, Internet programming, Web browsers, hypertext links, network programming.

Precludes additional credit for Computer Science 95.205*.

Prerequisite: Computer Science 95.146*. Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.

Lectures three hours a week.

Computer Science 95.285*

Discrete Structures II

A second course in theoretical aspects of computer science. Topics include: formal languages and automata theory, computability theory, complexity theory, graph theory and algorithms, NP-completeness.

Prerequisite: Computer Science 95.185*

Lectures three hours a week.

Computer Science 95.300*

Operating Systems

A first course in operating systems stressing fundamental issues in design: process management; memory management; process co-ordination and synchronization; interprocess communication; real-time clock management; i/o device drivers; file systems; frame-level network communication. Assignments involve the use, modification, and extension of a multitasking operating system.

Precludes additional credit for Engineering 94.301*.

Prerequisites: One of Computer Science 95.202* or Engineering 94.202*, and one of Computer Science 95.203* or Engineering 94.303*.

Lectures three hours a week.

Computer Science 95.302*

Compiler Construction

The structure, organization and design of the phases of a compiler are considered: lexical translators, syntactical translators, scope handlers, type checkers, code generators and optimizers. Components of a compiler will be implemented.

Prerequisite: Computer Science 95.202* or permission of the School.

Lectures three hours a week.

Computer Science 95.304*

Object-Oriented Software Engineering

Theory and practice at developing software systems. At the macro-level we discuss the three major steps: Plan and Elaborate, Build, Deploy. At the micro-level, we study iterative development: refine plan, synchronize artifacts, analyze, design, construct and test. We consider patterns and discuss UML in depth.

Precludes additional credit for Engineering 94.310* and 94.480*.

Prerequisite: Computer Science 95.204*.

Lectures three hours a week.

Computer Science 95.305*

Database Management Systems

Introduces students to concepts of database management systems, database design and file structures. Topics include: entity-relationship modeling and object oriented database design, data models (relational, network and object oriented), the relational algebra, SQL, normalization theory, physical data organization, object oriented databases and OQL.

Precludes additional credit for Business 42.340* and Engineering 94.301*.

Prerequisites: Computer Science 95.202* and 95.204*, or Engineering 94.303*.

Lectures three hours a week.

Computer Science 95.307*

Programming Paradigms

An introduction to functional and logic programming. Topics include: semantics of functional programming, assignment-free programming, the meta-circular interpreter, recursive functions, Prolog, backtracking, cutting, negation.

Precludes additional credit for Computer Science 95.207*.

Prerequisite: Computer Science 95.202* or Engineering 94.202*.

Lectures three hours a week.

Computer Science 95.308*

User Interface Architectures

This course addresses architectures and tools for the design and implementation of user-interfaces driven application. Emphasis will be on case studies using libraries and visual programming tools. Examples may be drawn from object-oriented programming environments, Motif and Tcl/Tk.

Prerequisites: Computer Science 95.106* and 95.204*.

Lectures three hours a week.

Computer Science 95.314*

Foundations of Software Engineering

Survey of the Software Engineering field. Possible topics include: processes, project management, requirements engineering, formal specifications, software design, user interface design, software reliability, reuse, computer-aided software engineering, configuration management, maintenance and re-engineering.

Precludes additional credit for Engineering 94.480*.

Prerequisite: Computer Science 95.304*.

Lectures three hours a week .

Computer Science 95.320*

Co-operative Work Term Report 1

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.

Computer Science 95.321*

Co-operative Work Term Report 2

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.

Computer Science 95.322*

Co-operative Work Term Report 3

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.

Computer Science 95.323*

Principles of Computer Networks

This is an introductory course to the field of Network Computing. Topics include: Protocol Architectures and Internetworking, Types of Networks, Communication Protocols, End-System and Network Traffic Management, Structure of Routing and Congestion Control.

Precludes additional credit for Engineering 94.462*.

Prerequisites: Computer Science 95.205* and 95.300*.

Lectures three hours a week.

Computer Science 95.384*

Design and Analysis of Algorithms I

An introduction to the design and analysis of algorithms. Topics include: recurrence relations, sorting and searching, divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis. (Also listed as Mathematics 69.384*.)

Prerequisites: Computer Science 95.202* and either 95.285* or both of Mathematics 69.207* and 69.218* or equivalents.

Lectures three hours a week.

Computer Science 95.385*

Discrete Structures and Applications

Enumeration: elementary methods, inclusion and exclusion, recurrence relations, generating functions and applications. Graph theory and algorithms: connectivity, planarity, Hamilton and Euler paths. Error-correcting codes. (Also listed as Mathematics 70.385*.)

Prerequisites: One of Mathematics 69.218* or 69.311*, 70.210.

Lectures three hours a week and one hour tutorial.

Computer Science 95.386*

Numerical Analysis

Elementary discussion of error, polynomial interpolation, quadrature, linear systems of equations and matrix inversion, non-linear equations, difference equations and ordinary differential equations. (Also listed as Mathematics 69.386*.)

Prerequisites: (i) Mathematics 69.102, 69.105 or 69.207* (or 69.201 or 69.202); and (ii) Mathematics 69.112 or 69.217*; and (iii) knowledge of a computer language.

Lectures three hours a week and one hour tutorial.

Computer Science 95.387*

Mathematical Software

Incorporation of basic numerical methods into efficient, reliable software. The course includes examination of existing software systems, e.g. linear systems, non-linear systems, optimization, or differential equations. (Also listed as Mathematics 69.387*.)

Prerequisite: Computer Science 95.386*.

Computer Science 95.400*

Distributed Operating Systems

An advanced course emphasizing the principles of distributed operating systems including networking protocols, distributed file systems, remote IPC mechanisms, graphical user interfaces, load balancing, and process migration. Case studies include current "standards" as well as novel systems under development.

Prerequisite: Computer Science 95.300*.

Lectures three hours a week.

Computer Science 95.401*

Distributed Computing

Overview of distributed computing. Topics include: computational models, communication complexity, design and analysis of distributed algorithms and protocols, fault-tolerant protocols, synchronous computations. Applications may include: communication in data networks, control in distributed system (e.g., election, distributed mutual exclusion), manipulation of distributed data (e.g., ranking).

Prerequisite: Computer Science 95.300*.

Lectures three hours a week.

Computer Science 95.402*

Computer Graphics

Principles and techniques of real-time 2D and 3D graphics: raster graphics algorithms, transformations (scaling, translation, rotations) and viewing, object modeling, texture mapped rendering, illumination, ray-tracing, hidden line and surface elimination. Other possible topics include: camera control, collision detection, articulated figures, 3D game engine development.

Prerequisite: Computer Science 95.202*.

Lectures three hours a week.

Computer Science 95.403*

Transaction Processing Systems

Investigates concepts of on-line transaction processing. Traces transaction processes from their initiation (WWW Interfaces) to their completion in client/server environments under concurrent executions and system failures. Topics include: transaction properties and models, embedded-SQL and database applications, query processing, concurrency, recovery, and some case studies.

Prerequisites: Computer Science 95.204*, and 95.305* or Engineering 94.301*.

Lectures three hours a week.

Computer Science 95.404*

Software Quality Assurance

Introduction to the theory and practice of Software Quality Assurance. Topics include: functional requirements analysis, system requirement analysis, verification and validation, traceabilty, white box testing, integration testing, object-oriented testing, tools, and management issues.

Prerequisite: Computer Science 95.314*.

Lectures three hours a week.

Computer Science 95.409*

Introduction to Parallel and Systolic Computing

Introduction to algorithms, architectures, and languages for parallel computing. Topics include: models of computation, parallel programming languages, performance measures for parallel algorithms, shared memory parallel machines, VLSI design methodologies, processor arrays, hypercube multiprocessors, parallel algebraic operations, parallel data structures and parallel searching, parallel geometric processing.

Prerequisite: Computer Science 95.384*.

Lectures three hours a week.

Computer Science 95.410*

Multimedia Systems

Introduction to Multimedia Systems and Virtual Reality. Topics include: basic sound and video formats, compression, image- and geometry-based model creation, stereo displays, immersion, texture mapping, VRML and virtual environments.

Prerequisite: Computer Science 95.402*.

Lectures three hours a week.

Computer Science 95.411*

Distributed Object Management and Transaction Processing Systems.

Study of the principles involved in the design and implementation of distributed object management, CORBA-based transaction services and distributed object-based applications. Topics include: Distributed Object Management Architectures, Transactional Middleware, Combining Java, Web and CORBA Objects within Heterogeneous Systems, Interoperability, Security, Scalability and Performance Measures.

Prerequisite: Computer Science 95.305* and either 95.403* or 95.401* or equivalents. (Knowledge of C/C++ and Java is essential).

Lectures three hours a week.

Computer Science 95.413*

Computer Security and Cryptography

Introduction to information security in computer and communication systems. Classical and public-key cryptosystems are overviewed. Applications to information schemes and digital signatures, key distribution and key agreement, authentication and secret sharing are also discussed. Also offered at the graduate level, with additional or different requirements, as Computer Science 95.513, for which additional credit is precluded.

Prerequisite: Computer Science 95.384*.

Lectures three hours a week.

Computer Science 95.414*

Topics in Object-Oriented Software Engineering

An in-depth look at the field of Object-Oriented Software Engineering. Possible topics include: patterns (architectural, design, distribution, user interface, process, analysis and general-purpose), traceability and object-oriented quality engineering, CASE tools, software agents and their enabling technologies (such as JAVA and CORBA), object-oriented persistence, reflective architectures.

Prerequisites: Computer Science 95.106* and 95.304*.

Lectures three hours a week.

Computer Science 95.416*

Knowledge-based Systems and Symbolic Machine Learning

Inference engine/expert systems; logic; knowledge representation; fuzzy logic; non-monotonic logic and constraint propagation; heuristic search; planning; symbolic machine learning and data mining (including ebl, version spaces, decision tree induction, conceptual clustering, case based reasoning); natural language processing.

Precludes additional credit for Computer Science 95.407*.

Prerequisite: Computer Science 95.307*.

Lectures three hours a week.

Computer Science 95.417*

Adaptive Algorithms and Intelligent Agents

Neural networks, connectionism; Bayesian Belief networks; genetic algorithms; genetic programming; classifier systems; statistical evaluation of AI programs; a-life (swarm intelligence, e.g. ant algorithms for TSP; emergent computation); intelligent agents (distributed agents for the Web).

Precludes additional credit for Computer Science 95.407*.

Prerequisite: Computer Science 95.307* and Computer Science 95.416*.

Lectures three hours a week.

Computer Science 95.420*

Co-operative Work Term Report 4

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.

Computer Science 95.421*

Co-operative Work Term Report 5

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.

Computer Science 95.483*

Computable Functions

Recursive functions and computability, algorithms, Church's thesis, Turing machines, computational logic, NP-completeness. (Also listed as Mathematics 70.483*.)

Prerequisite: Mathematics 70.210 or Computer Science 95.385* or permission of the School.

Computer Science 95.484*

Design and Analysis of Algorithms II

A second course on the design and analysis of algorithms. Topics include: advanced recurrence relations, algebraic complexity, advanced graph algorithms, approximation algorithms, randomized algorithms. Also offered at the graduate level, with additional or different requirements, as Computer Science 95.573, for which additional credit is precluded.

Prerequisite: Computer Science 95.384* or permission of the School.

Lectures three hours a week.

Computer Science 95.485*

Theory of Automata

Finite automata and regular expressions, properties of regular sets, context-free grammars, pushdown automata, deterministic context-free languages. Turing machines, the Chomsky hierarchy. Undecidability, intractable problems. (Also listed as Mathematics 70.485*.)

Precludes additional credit for Mathematics 70.565

Prerequisite: Computer Science 95.385* or Mathematics 70.310 or permission of the School.

Lectures three hours a week.

Computer Science 95.486*

Numerical Linear Algebra

Study of matrix inversion techniques; techniques of finding eigenvalues and eigenvectors, solution of systems of linear equations; direct and indirect methods, their comparison and error analysis; applications in optimization and other areas. (Also listed as Mathematics 70.486*.)

Prerequisites: Mathematics 69.112 or 69.217*; and Mathematics 70.200 or 69.309*, or permission of the School.

Lectures three hours a week.

Computer Science 95.490*

Advanced Topics in Computer Science

Selected topics in Computer Science offered by members of the School of Computer Science.

Prerequisite: Permission of the School.

Lectures three hours a week.

Computer Science 95.491*

Directed Studies

A course of independent study under the supervision of a member of the School of Computer Science, open only to students in the B.C.S. program. Students are required to obtain their supervisor's written approval prior to registration and are limited to two such courses in their programs.

Prerequisite: Permission of the School of Computer Science.

Computer Science 95.495*

Honours Project

As part of the Fourth-year program, each B.C.S. student is required to select and complete a major project in computer science. Students are required to submit written project proposals to the Honours Project Co-ordinator for approval normally during the term preceding the term of registration. Consult the Honours Project Co-ordinator for details.

Prerequisite: Registration in either the Bachelor of Computer Science program or one of the Combined Honours programs involving Computer Science and the permission of the School.

Other Relevant Courses Offered

The following courses are not offered by the School of Computer Science but are relevant to the study of computer science. They may be taken for credit as computer science courses in the B.C.S. Program and the combined programs with Computer Science. For full descriptions of these courses please refer to the Calendar entries of the School of Business and the Department of Systems and Computer Engineering.

Courses Offered by the School of Business

Business 42.230*, 42.240*, 42.440*, 42.442*, 42.446*, 42.447*

Courses Offered by the Faculty of Engineering and Design

Engineering 94.333*, 94.405*, 94.457*


Carleton University
2001-2002 Undergraduate Calendar

1125 Colonel By Drive, Ottawa, ON, Canada K1S 5B6
General enquiries: (613) 520-7400
Comments about Calendar to: CalendarEditor@carleton.ca