UNDERGRADUATE SUPPLEMENTAL CALENDAR 1997-98

Table of Contents

CSAC Accreditation

Access to Courses

Courses Outside the Department

Admission to the Graduate Programme in
Computer Science

Programmes Offered

Computer Facilities

Computer Use Policy

Computer Science Awards

Industrial Internship Programme

Appeal Procedures

Grading System

Faculty of Arts

Faculty of Pure and Applied Science

Computer Science Requirements

Programme Checklists

Prerequisites for Computer Science Courses

BSc Ordinary Degree

BSc Specialized Honours Degree

BSc Combined Honours Degree

BSc Specialized Honours Degree, SCS Stream

BA Ordinary Degree

BA Honours Major Degree

BA Honours Minor Degree

BA Specialized Honours Degree

BA Honours Double Major Degree

In choosing to study computer science you have chosen a career in an exciting and rapidly changing discipline. As a computer scientist, you may become involved in many of the great changes in the future, for the computer will play a central role in these changes. It is important, therefore, that you not only develop the practical and theoretical skills of a professional computer scientist but that you also try to obtain an understanding of the impact of computers on society. For that reason we would strongly encourage you to select your elective courses outside Computer Science in areas where you will broaden your knowledge of society. One way to do this is to select isolated courses that catch your interest; however, a more productive approach is to consider taking a concentration of courses in an area outside of Computer Science. So in planning your course selection you should be thinking ahead and asking yourself not only which courses will give you a good Computer Science degree, but which courses will make you a good professional computer scientist. That implies a sound technical background, a broad education, professional ethics and a social conscience. You can't get all that in your first year but you can at least make a start. Lastly we would like to remind you that computer science is an art as well as a science which means you cannot learn it entirely from a book - you must also practice it! That means long hours at the computer terminals. So be warned, do not try to take on too much. We recommend a maximum of three computer science courses per term.

**Office Hours**

Administrative Office

Monday to Friday: 10-12, 2-4, 126 CCB

Undergraduate Programme Office

Monday to Friday: 9-12, 2-4, 125 CCB

**Mailing Address **

Department of Computer Science

126 CCB

York University

4700 Keele Street

North York, Ontario, M3J 1P3

Tel.: (416) 736-5053

Fax: (416) 736-5872

**Computer Science Home Page**

**York University Home Page**

**Chair **

Michael Jenkin

**Director of Undergraduate Studies **

Peter Cribb

(416) 736-5334

email: peterc@cs.yorku.ca

Faculty |
Room in CCB |
email @cs.yorku.ca |

M. Aboelaze | 344 | aboelaze |

J. Amanatides | 254 | amana |

E. Arjomandi | 222 | eshrat |

T. Brecht | 220 | brecht |

P. Cribb | 150 | peterc |

X. Deng (on leave) | 354 | deng |

P. Dymond | 260 | dymond |

J. Edmonds | 350 | jeff |

G. Gotshalks | 216 | gunnar |

N. Graham | 250 | graham |

B. Guo | 152 | guo |

M. Jenkin | 126 | jenkin |

D. L. Lee (on leave) | 348 | delei |

Y. Lesperance | 342 | lesperan |

J. Liu | 224 | joseph |

E. Milios | 256 | eem |

A. Mirzaian | 352 | andy |

J. Ostroff | 248 | jonathan |

P. H. Roosen-Runge | 319 Calumet | peter |

H. Sandhu | 218 | hsandhu |

M. Spetsakis | 252 | minas |

Z. Stachniak | 214 | zbigniew |

A. Wallis | 134 | tony |

R. M. Wharton | 136 | michael |

J. Xu | 346 | jxu |

**Adjunct Faculty **

J. Cordy

N. Mahdavi-Amiri

H. Levesque

A. Ryman

K. Lyons

D. Wilkes

**Instructors **

J. Hofbauer

M. Mosher

R. Jhu

A. Rosenthal

P. Kashiyama

H. Roumani

L. Lowther

G. Turpin

**Technical Support **

Seela Balkissoon

Jason Keltz

Matt Robinson

N. Wilson, Computer Development Manager

U. Yigit, Computer Systems Administrator

**Administrative Support **

M. Baptist, Secretary

C. Masaro, Administrative Assistant

N. Niven, Undergraduate Programme Assistant

P. Plummer, Graduate Programme Assistant

[ return to Table of Contents ]

The Department is pleased to announce that all Computer Science honours
programmes offered in the Faculty of Pure and Applied Science and the Faculty
of Arts, with the exception of the BA honours minor, have been accredited
by the Computer Science Accreditation Council (CSAC).

The Computer Science Accreditation Council is an autonomous body established
by the Canadian Information Processing Society (CIPS). The purpose of accreditation
is to identify those institutions that offer computer programmes worthy
of recognition. The objectives of the Council are:

- to formulate and maintain high educational standards for Canadian universities offering computer and information science programmes, and to assist those institutions in planning and carrying out education programmes.
- to promote and advance all phases of computer and information science education with the aim of promoting public welfare through the development of better educated computer professionals.
- to foster a cooperative approach to computer and information science education between industry, government, and educators to meet the changing needs of society.

The report of the accreditation committee notes about the department:

- the faculty provides broad coverage of contemporary Computer Science.
- Faculty members are committed to undergraduate teaching, enthusiastic about the Department, and optimistic in their outlook.
- course offerings are generally of high calibre, including both breadth and depth within Computer Science.
- the Industrial Internship Programme provides students with valuable exposure to current practices in the computing industry.

**Voice Response Enrolment System**

Students enrol in courses using the York University Voice Response Enrolment
System, typically in the few months prior to the start of each term. Computer
science courses frequently reach their class size maximum, in which cases
the following procedures are followed.

**Waiting Lists
**Full courses are removed from VRES and students are invited to apply
via a waiting list form. Waiting list applications are accepted up until
the middle of the first week of term. A waiting list application does not
constitute enrolment in a course. The student must check with the Department
as to the result of their application and use a VRES Special Permission
Window assigned to them if their application was successful.

**Processing Waiting Lists
**Waiting list applications are not treated on a first-come first-served
basis. Decisions are made according to the following criteria:

- normal progress through the degree (ie. 1000-level courses in year one, 2000-level in year two, etc.). There is no guarantee that students will be able to take 3000-level computer science courses in the same term as they are completing a 2000-level computer science course for example.
- the closer to graduation, the higher the priority.

**Limits on Course Enrolment
**A maximum of two 2000-level computer science courses in one term is
permitted.

Three 3000- or 4000-level courses per term is normal. Specialized honours students may take four upper level computer science courses. Under no circumstances will students be permitted to take five computer science courses in one term. If any student enrols in more than four upper year or two 2000-level computer science courses per term they will be removed from whichever courses the department requires space. The Department also reserves the right to move students from a course in one term to the same course in the next term should such steps be necessary to ensure equitable access to courses. This includes movement from fall to winter or winter to summer.

**Prerequisites
**Students are responsible for ensuring they enrol only in courses for
which they meet the prerequisites. Prerequisites include a minimum GPA
over computer science courses. Students will be removed from a course if
they do not meet the prerequisites, at any time before or during the course.

**Courses Outside the Department
**Students wishing to take courses at Atkinson College or at another
institution should consult the Director of Undergraduate Studies for advice.
A list of equivalent courses at Atkinson College is available at the Office
of Science Academic Services.

For the purpose of satisfying departmental degree requirements, the number of Computer Science (COSC) credits taken outside the Department of Computer Science may not exceed 6 credits in core courses and 12 credits in total.

**Core Courses**

Core courses include all 1000- and 2000-level computer science courses,
the 3000-level computer science courses satisfying the breadth requirement,
and for honours programmes, any required 3000- and 4000-level computer
science courses, ie. COSC3101.03, COSC4101.03, COSC4111.03

**York University Computer Club
**The York University Computer Club (YUCC) is an organization
of students in the Department of Computer Science. They nominate students
to serve on department committees, sponsor informational and social events
and facilitate communications among computer science students and faculty
members. They can be reached by electronic mail at yucc@ariel.cs.yorku.ca.

[ return to Table of Contents ]

**Admission to the Graduate
Programme in Computer Science**

Admission to the MSc programme is highly competitive. We have space
to accept only the most highly qualified students.

The ideal preparation for graduate studies in computer science is the completion
of the Specialized Honours Programme in Computer Science in the Faculty
of Pure and Applied Science at York University (please consult the Computer
Science degree requirements, the degree checklist, and the course descriptions),
or its equivalent. Your grade point average, in computer science and mathematics
courses in the last two years, should be at least B+ to enter the competition
for admission. Of course, the higher your grades the more likely you will
be a successful candidate.

**Need to upgrade a degree?
**If you already have a computer science degree then you would upgrade,
if necessary, your background to be equivalent to the Specialized Honours
Programme in Computer Science. A comparison of the degree programme you
completed with the specialized honours programme will show you what you
are missing.

If you have an honours degree in computer science, then you need to make sure you have the equivalent of the following courses: COSC3101.03, and one of COSC4111.03 or COSC4101.03. To satisfy our breadth requirement, you should have a third-year course in each of the following areas hardware, software and knowledge-based computing. You also need to complete the equivalent of our required mathematics courses.

If you have an ordinary degree, then you will need to upgrade your degree to the honours level. It is recommended that you become familiar with the Unix, C/C++ and the X-window system environment.

**How to upgrade a degree
**You are advised to see the Undergraduate Director for the Department
of Computer Science (see page 1 of the supplemental calendar). Together
you would discuss your background and what you need to obtain the equivalent
of the specialized honours degree.

If all you need are two or three courses to fill a few gaps in your background then you may apply for admission to the programme as a special student.

If you need more than three courses, then you will have to apply for admission to the specialized honours degree. In both cases applications are made through the York Admissions Office whose procedures and deadlines must be followed.

For detailed information you are advised to first read the appropriate
sections of the York University Undergraduate Calendar (click on Calendars
in the York University www page - www.yorku.ca); secondly, read this supplemental
Calendar, and thirdly, see an advisor in the Department of Computer Science
at one of the regularly scheduled advising sessions.

Computer Science is available as a major programme leading to either an
Ordinary (three year) or Honours (four year) degree in either Arts (B.A.)
or Pure and Applied Science (B.Sc.). It may also be combined with most
subjects in both Arts and Science leading to a four-year combined honours
degree (B.Sc.) or double major degree (B.A.).

The recommended courses in computer science and mathematics are identical
in most programmes in the first two years of study so that students can
make their final decisions as to which programme to graduate in after they
have more exposure to the discipline.

**Ordinary vs. Honours
**An ordinary programme requires 90 credits (normally completed in three
years of study) and a grade point average of 4.0 in computer science courses.
An honours programme requires 120 credits (normally completed in four years
of study), more specialization, a higher minimum performance (a grade point
average of 5.0), and in some cases different courses than an ordinary degree.

Both Arts and Science programmes are structured in such a way that a student who embarks on an honours programme can meet the requirements for an ordinary degree by the end of the third year and can at that time graduate with either a B.A. or B.Sc.

If you have the grade point average to be eligible for an honours programme (5.0), you will be listed as an honours student for administrative purposes.

**Specialized Honours
**Students selecting this programme take even more courses in computer
science and mathematics than for a major programme during their four years
of study.

**Space and Communication Sciences Stream
**This is a specialized honours BSc stream in computer science combined
with a concentration of courses in the Departments of Earth and Atmospheric
Science, and Physics and Astronomy. Students select courses on knowledge-based
programming, numerical methods, data communications, electronics, space
communications and physics of the space environment. Fourth year features
electives from an extensive list of topics from all three departments.

Entry is highly competitive as the first year is limited to approximately 40 places. Candidates are required to have an A average in high school. It is also a very demanding programme as students must maintain a Science grade point average of 6.0.

**BSc Combined Honours
**The intention of a combined programme is for students to major in two
subjects while maintaining a 5.0 Science average. In general, combined
honours students complete enough course work in each subject to obtain
the equivalent of an honours degree. Combined honours degrees may require
students to take more than the minimum of 120 credits to satisfy the honours
requirements of each subject.

**BA Double Major/Major-Minor
**In the Faculty of Arts a combined programme consists of either a double
major or a major and a minor. In the latter case computer science can be
either the major or the minor subject.

Consult advisors in both departments if you are planning a combined programme.

**BA Honours Double Major Programme in Computer Science and Mass Communications
Studies
**This double major programme differs from a standard double major programme
in that the second major is in an interdisciplinary programme. In this
double major programme, students are required to complete at least 6 Computer
Science courses, two of which must be at the 4000 level. Students are also
required to complete 6 courses in Mass Communications Studies, one of which
must be at the 4000 level.

**BA Honours Double Major Programme in Computer Science and Women's
Studies
**The requirements of this programme are similar to those stated for
the double major in mass communications studies except the second major
is in women's studies.

**Elective Courses
**Students in Computer Science sometimes feel their study in this
discipline is quite isolated from the other programmes in their Faculty,
and place little emphasis on their choice of other courses, even though
about a quarter of their courses are electives. This is a mistake
computer science supports applications in every information-using discipline.
In order to make creative and effective use of your skills in computing,
you need to know much more of the natural world, the man-made world, and
the world of ideas, than can be learned in courses in computing.

There are many choices for elective courses. For example courses in economics, philosophy (logic), psychology, linguistics, physics and chemistry to name just a few whose announced content meshes with issues and problems studied in computer science.

Not only should you consider taking individual courses in other subjects but you should also consider taking a concentration of courses which together form a coherent or complementary package. Such a concentration may come from one discipline (one of the sciences, for example, because of their hierarchical structure) but it may also come from two or three disciplines on related concepts presented from different perspectives. It may also be necessary to take specific prerequisites before you can take a desired elective course; such combinations also form coherent concentrations.

**The Service Programme
**The Department also offers a variety of courses at the 1000-
and 3000- level which are of interest to students wanting to learn about
computers and computer use without majoring in Computer Science. In some
cases, degree programmes offered by other departments may require these
courses in their programmes.

The starting courses for non-majors are COSC1520.03, COSC1530.03, Introduction to Computer Use I & II and COSC1540.03, Computer Use for the Natural Sciences. The course COSC1530.03, Introduction to Computer Use II is an introduction to computer programming and may be taken as preparation for COSC1020.03 if the student lacks background in this area. Students taking the 1500 series courses are not eligible to take the 2000-level Computer Science courses without successful completion of COSC1020.03 and COSC1030.03.

[ return to Table of Contents ]

**Computer Facilities
**Undergraduate students work on Ariel, the Department of Computer
Science computer network. Ariel consists of about 30 Sun and SGI workstations
for third and fourth-year use and about 50 X terminals connected to Sun
compute servers for first and second year use. The following special purpose
laboratories are provided for upper year courses.

- The Undergraduate Robotics Laboratory consists of a CRS+ robot arm, a RWI B12 mobile robot, high performance workstations and video acquisition hardware.
- The Digital Logic Laboratory provides hands-on experience in computer design and an experimental Novell network.
- The Real-Time Laboratory provides high performance Sun workstations and industry-standard software tools for the design and analysis of real-time systems.
- The Multi-media Laboratory provides video and audio and multi-media author tools based on Macintosh computers.

Almost all workstations and micro-computers in the Department are connected
to the campus networking backbone, giving access to all significant systems
in the University, as well as computers in universities all over the world
through Internet.

Access to the timesharing systems and workstations requires an authorized
account and a password, as issued by the Department. Each student receives
a single account for each machine necessary for course work. Students who
would like to work on a project outside of assigned class work may ask
a faculty member to act as their supervisor, and if necessary, a special
account can be arranged for that project.

**Computer Use Policy
**Working in a laboratory situation requires cooperative behaviour
which does not harm other students by making any part of the department's
computer systems unusable such as locking out terminals, running processes
which require lots of network traffic (such as playing games on multiple
terminals), or using the facilities to work on tasks which are not related
to computer science course work. Essentially, all users of common facilities
need to ask themselves whether or not their behaviour adversely affects
other users of the facility and to refrain from engaging in "adverse
behaviour". Good manners, moderation and consideration for others
are expected from all users. Adverse behaviour includes such things as
excessive noise, occupying more space than appropriate, harassment of others,
creating a hostile environment and the displaying of graphics of questionable
taste. Lab monitors are authorized to ensure that no discomfort is caused
by such practices to any user.

The department policy on computer use prohibits attempting to break into someone else's account, causing damage by invading the system or abusing equipment, using electronic mail or file transfer of abusive or offensive materials, or otherwise violating system security or usage guidelines. As well, we expect you to follow Senate policies (see the link Official York Policies, under Administrative Services at www.yorku.ca).

The department computer system coordinator, in conjunction with the department and York Computing Services, will investigate any suspected violation of these guidelines and will decide on appropriate penalties. Users identified as violating these guidelines may have to make monitory restitution and may have their computing priviledges suspended indefinitely. This could result in your being unable to complete computer science courses, and a change in your major.

Adverse behaviour may also violate university, provincial and federal laws; for example duplication of copyrighted material and theft of computer services are both criminal offenses. In such cases the University, Provincial or Federal authorities may act independently of the Department. The police may be asked to investigate and perpetrators may be liable for civil and/or criminal prosecution. The Department of Computer Science does not assume any liability for damages caused by such activities.

**Computer Science Awards
**Unless otherwise stipulated students in both the Faculty of
Pure and Applied Science and the Faculty of Arts are eligible for these
awards.

**Digital Equipment of Canada Ltd. Annual Award**

This award which consists of a medal and a cash award of $250 will be given to one graduating student each year who has consistently shown excellence throughout his/her degree programme.

**Mark A. Levy Computer Science Award**

Up to five prizes or books concerned with Computer Science will be awarded to outstanding Faculty of Pure and Applied Science students enrolled in third or fourth year computer science courses.

**Nancy Waisbord Memorial Award**

This is a cash award of $150 to be presented annually to a graduating student who has consistently demonstrated excellence in Computer Science.

**Other Awards**

Students in the Department may also apply for Summer Science awards.
These awards pay students a salary over the summer while they are working
on a research project under the supervision of a faculty member. Normally
students who have completed at least their 2nd year may apply and typically
a grade average of B+ is required.

In addition, faculty sometimes employ undergraduate research assistants
over the summer period. While not an award administered by NSERC, such
positions are only offered to the best students in the Department.

**Prestigious Awards**

The Faculties of Arts and Pure and Applied Science also award various medals to their top graduating students. These include the Governor General's Silver Medal (Faculty of Arts) and the Gold Medal of Academic Excellence (Faculty of Pure and Applied Science).

[ return to Table of Contents ]

**Industrial Internship Programme
**

The Industrial Internship Programme allows students to take a year off
from their studies to gain valuable job experience and earn money while
completing their degree. Students resume their studies when the internship
term finishes. (A student's file becomes inactive during their internship;
students must arrange to have their file reactivated in the spring of the
year in which they will return.) Job assignments can be from 8 to 16 months
depending on the corporation. Participating corporations include IBM and
BNR/Northern Telecom.

Any 2nd or 3rd year student with a B average (or better) in MATH and COSC
courses may apply to this programme. Qualifications may also depend on
specific job postings. Job opportunities are posted in the fall, and students
apply by submitting a completed application form, a nonrefundable fee,
their resume (or ACCIS form), and York transcripts to the Administrative
Office by mid-November. The Department forwards the student's application
to companies which the student has selected. The companies select from
these applications the students they wish to interview, and the Department
then arranges on-campus interviews. Job offers are typically extended in
the February/March time frame for positions starting in May.

In cases where the internship project involves significant learning of
an academic nature students may receive credit for work done in connection
with the internship by enrolling in the project course, COSC4080.03. The
same rules apply for such internship projects as for the usual COSC4080.03
projects except that the work is not done at York and is not done in a
single academic term.

Students who are interested in doing a project as part of their internship
should contact the course director of COSC4080.03 when they have enough
experience on the job to be able to suggest a project topic which is compatible
with the work they are asked to do, which has significant academic content.

It is the student's responsibility to ensure that the employer is willing
to have the student report on her/his work in written and oral presentations.
Work which cannot be generally disclosed is not suitable for a COSC4080.03
project.

**Advising
**Academic advising is available on an individual or a group basis in
the Department of Computer Science. Group advising provides help in choosing
courses so as to fulfil degree requirements. Individual faculty advising
is available to discuss academic issues relevant to computer science such
as recommended mathematical skills, theoretical versus applications oriented
courses, areas of specialization, graduate studies and career paths.

It is ultimately the responsibility of each student to ensure that they meet all degree requirements of both the Department, and the Faculty of Pure and Applied Science or the Faculty of Arts. Written information and programme check lists are provided to assist you in making appropriate choices. It is recommended that you take advantage of advising opportunities to answer any questions you may have.

Group advising is scheduled by year level during March and early April. In addition, individual advising appointments may be made through the Undergraduate Office.

**Academic Honesty
**The Faculty of Arts, Faculty of Pure and Applied Science and the Department
have policies on academic honesty and their enforcement is taken very seriously.
Academic honesty is essentially giving credit where credit is due. When
a piece of work is submitted by a student it is expected that all unquoted
and uncited ideas (except for common knowledge) and text are original to
the student. Uncited and unquoted text, diagrams, etc., which are not original
to the student, and which the student presents as their own work is academically
dishonest. The deliberate presentation of part of another student's program
text or other work as your own without acknowledgment is academically dishonest,
and renders you liable to the disciplinary procedures instituted by the
Faculty of Pure and Applied Science.

The above statement does not imply that students must work, study and learn in isolation. The Department encourages students to work, study and learn together, and to use the work of others as found in books, journal articles, electronic news, private conversations, etc.. In fact, most pieces of work are enhanced when relevant outside material is introduced. Thus faculty members expect to see quotes, references and citations to the work of others. This shows the student is seeking out knowledge, integrating it with their own work, and perhaps more significantly, reducing some of the drudgery in producing a piece of work.

As long as appropriate citation and notice is given students cannot be accused of academic dishonesty.

A piece of work, however, may receive a low grade because it does not contain a sufficient amount of original work. In each course, instructors describe their expectations regarding cooperative work and define the boundary of what is acceptable cooperation and what is unacceptable. When in doubt it is the student's responsibility to seek clarification from the instructor. Instructors evaluate each piece of work in the context of their course and given instructions.

You should refer to the appropriate sections of the York University Undergraduate Calendar for further information and the penalties when academic dishonesty occurs.

**Concerns about Fairness
**The Department's faculty members are committed to treating all students
fairly, professionally, and without discrimination on nonacademic grounds
including a student's race or sex. Students who have concerns about fair
treatment are encouraged to discuss the matter with their instructor or
the course director. If this is not possible or does not resolve the problem,
the matter should be brought to the attention of the Undergraduate Director,
and if necessary, the Department Chair, for a departmental response.

**Moving to New Programme Requirements
**Whenever new programme requirements are introduced the following policies
apply:

- The starting year in computer science is defined as the first academic year in which you took or will take COSC1020.03, if you take courses in consecutive years. If you have a break in your studies then your starting year changes to the year in which you are readmitted.
- If requirements change you may continue with your studies using the requirements in effect in your starting year. In this case the degree checklists in this calendar may not apply. You should use the degree checklists from your starting year.
- If requirements change you may elect to graduate under the new requirements but you must meet all of them. You are not permitted to mix and match old and new requirements.

**Appeal Procedures
**The Department expects a student's disagreement with an evaluation
of an item of course work (assignment report, class test, non-final examination,
oral presentation, laboratory presentation, class participation) to be
settled with the instructor informally, amicably and expeditiously. With
respect to a formal appeal, there are different procedures for course work
and for final examinations and final grades. Of necessity, a formal appeal
must involve only written work.

**Course Work
**An appeal against a grade assigned to an item of course work must be
made

In the case of a multi-sectioned course (where the instructor is not the course director), a second appeal may be made to the course director

If a student feels that their work has not been fairly reappraised by the course director, then they may appeal for a reappraisal by the departmental petitions committee. Such a request is made in writing using the appropriate form obtained from the Undergraduate Office. The request must be made

**Final Exams and Final Grades
**An appeal for reappraisal of a final grade must be made in writing
on a standard departmental form, obtained from the Undergraduate Office,

The departmental petitions committee will discuss the appeal with the course director to ensure that no grade computation, clerical or similar errors have been made. If such an error is discovered, a correction will be made and the student and the Registrar's Office will be notified.

If a final examination is to be reappraised then the departmental petitions committee will select a second reader for the examination paper. The petitions committee will consider the report of the second reader and recommend a final grade, which may be lower than the original grade. The student will receive the report of the Petitions Committee and the Registrar's Office will be informed of any grade change. The decision of the department petitions committee can only be appealed on procedural grounds to the Executive Committee of the Faculty.

**Grading System
**Grading at York University is done on a letter scale. The following
table shows the grading scale used. The number in parenthesis is the grade
point which is used to determine the grade point average. The grade point
average is a credit weighted average of all relevant courses.

A+ (9) Exceptional

Thorough knowledge of concepts and/or techniques and exceptional skill or great originality in the use of those concepts and techniques in satisfying the requirements of a piece of work or course.

A (8) Excellent

Thorough knowledge of concepts and/or techniques together with a high degree of skill and/or some elements of originality in satisfying the requirements of a piece of work or course.

B+ (7) Very Good

Thorough knowledge of concepts and/or techniques together with a fairly high degree of skill in the use of those concepts and techniques in satisfying the requirements of a piece of work or course.

B (6) Good

Good level of knowledge of concepts and/or techniques together with a considerable skill in using them in satisfying the requirements of a piece of work or course.

C+ (5) Competent

Acceptable level of knowledge of concepts and/or techniques together with considerable skill in using them to satisfy the requirements of a piece of work or course.

C (4) Fairly Competent

Acceptable level of knowledge of concepts and/or techniques together with some skill in using them to satisfy the requirements of a piece of work or course.

D+ (3) Passing

Slightly better than minimal knowledge of required concepts and/or techniques together with some ability to use them in satisfying the requirements of a piece of work or course.

D (2) Barely Passing

Minimum knowledge of concepts and/or techniques needed to satisfy the requirements of a piece of work or course.

E (1) Marginally failing.

F (0) Failing.

When averages are calculated the following table shows the equivalence between the grade point average and letter grades. The third column shows the correspondence between letter grades and percent grades.

gpa range | percent range | |

A+ | 8.5+ | 90+ |

A | 7.5 - 8.4 | 80 - 89 |

B+ | 6.5 7.4 | 75 79 |

B | 5.5 6.4 | 70 74 |

C+ | 4.5 5.4 | 65 69 |

C | 3.5 4.4 | 60 64 |

D+ | 2.5 3.4 | 55 59 |

D | 1.5 2.4 | 50 54 |

E | 0.5 1.4 | 40 49 |

F | 0.0 0.4 | 0 39 |

[ return to Table of Contents ]

**Course Descriptions
**Courses in Computer Science have three class hours a week for
one term (3 credits course numbers end in ".03"), unless
otherwise indicated.

Courses with second digit 5 (e.g. 1520, 1530, 1540, 3530) may be taken to satisfy Faculty degree requirements but do not count as Computer Science credits.

**COSC 1020.03 Introduction to Computer Science I**

Fall

Section A Mon, Wed, Fri, 14:30

Section B Tues 12:30-14:30, Thurs 12:30

Section C Mon, Wed, Fri 10:30

Note: Section B is recommended for students with prior programming experience.

Tutorial 1 Mon 9:30

Tutorial 2 Mon 15:30

Tutorial 3 Tues 11:30

Tutorial 4 Tues 14:30

Tutorial 5 Thurs 8:30

Tutorial 6 Thurs 14:30

Tutorial 5 Fri 9:30

Tutorial 6 Fri 11:30

Tutorial 7 Wed 10:30

Tutorial 8 Wed 14:30

Winter

Section M Tues, Thurs 19:00-20:30

Summer '98

Section AH TBA

Tutorial TBA

Introduction to computation, computing machinery, algorithms and programming via theoretical concepts and practical skills. Problem solving via the structure, design and analysis of algorithms and their implementation as effective, correct and efficient programs. Control and data structures of a structured programming language (Turing).

This course is introductory to the discipline in that it is the first in a hierarchy of courses; it is not a survey course. The emphasis is on the development of a theoretical conceptual basis and the acquisition of the intellectual and practical skills required for further study. The course is intended for prospective computer science majors, i.e. those with a well-developed interest in computing as an academic field of study and with strong mathematical, analytical and language abilities; it is not intended for those whose interest is casual, nor for those who require remedial work in the necessary background.

**Warning**: The work for this course includes a substantial number
of exercises which require problem analysis, program preparation, testing,
analysis of results, documentation, and submission of written reports.
The course is demanding in terms of time, and requires the student to put
in many hours of work per week outside of lectures. During the first few
weeks there is a scheduled laboratory. After that students book time in
the computer laboratory on an as needed basis.

**Recommendation**: You will benefit if you have prior practical
experience with programming as well as using a computer. Students who wish
to take a one-course exposure to the practical aspects of computing should
consider enrolling in COSC1520.03 and COSC1530.03 instead (see the following
descriptions).

Texts: t.b.a.

Prerequisites: If no university-level mathematics: OAC Calculus and one other OAC in mathematics (normally Finite Mathematics or Algebra and Geometry) with an average grade of 75 percent in all OAC mathematics and no grade less than 65 percent; otherwise: at least 6 credits of university-level mathematics with a grade average over all MATH credits of C+ or better [B+ or better if it is a service course (second digit is 5)].

Recommended: Previous programming experience; for example, a high school programming course or SC/AS/COSC1530.03.

Corequisite: AS/SC/AK/MATH1090.03.

Course Director: TBA

Instructors:

Section A TBA

Section B TBA

Section C P. Cribb

**COSC 1030.03 Introduction to Computer Science II**

Fall

Section A Mon, Wed, Fri, 17:30

Winter

Section M Mon, Wed, Fri 14:30

Section N Tues, Thurs 14:30-16:00

Section P Mon, Wed, Fri 10:30

Summer '98

Section AH TBA

This course is a continuation of COSC1020 and covers some of the fundamentals of software development, various data structures (arrays, queues, stacks, trees, lists), and algorithms that use these structures (sorting, searching). An object oriented approach will be introduced. Students will use the Unix operating system with the X Window System.

Text: t.b.a.

Prerequisites: COSC1020.03; MATH1090.03

Course Director: G. Gotshalks

Instructors:

Section M J. Edmonds

Section N T. Brecht

Section P G. Gotshalks

**COSC 1520.03 Introduction to Computer Use I**

Fall

Section A Mon, Wed, Fri 13:30

Section B Mon, Wed, Fri 9:30

Section C Tues, Thurs 14:30-16:00

Section D Mon, Wed, Fri 16:30

Section E Mon, Wed, Fri 12:30 Physical education only

Section G Mon, Wed, Fri 11:30 Physical education only

Section H Tues, Thurs 8:30-10:00

Section J Tues, Thurs 10:00-11:30

Winter

Section M Mon, Wed 16:30-18:00

Section N Mon, Wed, Fri 11:30

Section P Tues 14:30, Thurs 14:30-16:30

Summer '98

Section AH TBA

This course is appropriate for students who are **not majoring in Computer
Science**, but who would like an introduction to the use of the computer
as a problem-solving tool. No previous computing experience is assumed,
but the course will involve a number of programming exercises, so some
facility with problem-solving and symbolic operations will be very helpful.

An introduction to the use of computers focusing on concepts of computer
technology and organization (hardware and software), and the use of applications
and information retrieval tools for problem solving.

Topics to be studied include: the development of information technology
and its current trends; analysis of problems for solution by computers,
report generation, file processing; spreadsheets; database; numeric and
symbolic calculation; the functions of an operating system; interactive
programs.

Students should be aware that like many other computer courses, this course
is demanding in terms of time, and should not be added to an already heavy
load. There is scheduled and unscheduled time in the Glade laboratory using
NeXT computers. The course is not appropriate for students who want more
than an elementary knowledge of programming and it cannot be used as a
substitute for COSC1020.03/1030.03: Introduction to Computer Science.

**Advice**: If it is possible, we suggest that you enrol for the
summer or winter term.

**Note**: This course is not open to students who have passed or are
taking COSC1020.03. This course counts as elective credits towards satisfying
Faculty degree requirements but does not count as Computer Science credits.

Texts: t.b.a.

Prerequisites: none

Course Director: P. Cribb

Instructors:

Section A t.b.a.

Section B P. Cribb

Section C t.b.a.

Section D t.b.a.

Section E M. Mosher

Section G M. Mosher

Section H t.b.a.

Section J t.b.a.

Section M t.b.a.

Section N t.b.a.

Section P t.b.a.

Section AH t.b.a.

**COSC 1530.03 Introduction to Computer Use II**

Winter

Section M Mon, Wed, Fri 12:30

Section N Mon, Wed, Fri 9:30

Section P Tues, Thurs 10:00-11:30

Section R Mon 16:30, Wed 16:30-18:30

Concepts of computer systems and technology - e.g., software engineering,
algorithms, programming languages, theory of computation. Practical work
focuses on problem solving using a high-level programming language. The
course requires extensive laboratory work.

**Note**: This course is designed for students who are not Computer
Science majors, but may be used as preparation by those who wish to major
in Computer Science but lack programming background. Students who plan
to major in computer science must also take SC/AS/COSC1020.03 and SC/AS/COSC1030.03.

Degree credit exclusions: SC/AS/COSC1540.03. This course is not open to any student who has passed or is taking SC/AS/COSC1020.03.

Texts: t.b.a.

Course Director: P. Cribb

Instructors:

Section M t.b.a.

Section N P. Cribb

Section P t.b.a.

Section R t.b.a.

**COSC 1540.03 Computer Use for the Natural Sciences**

Section A (Fall) Mon, Wed, Fri 15:30

Section M (Winter) Tues 12:30-14:30, Thurs 12:30

Introduction to problem solving using computers - top down and modular
design; implementation in a procedural programming language - control structures,
data structures, subprograms; application to simple numerical methods,
modelling and simulation in the sciences; use of library subprograms.

This course is intended for students in the Faculty of Pure and Applied
Science.

**Note**: This course is not open to any student who has passed or is
taking COSC1020.03. This course counts as elective credits towards satisfying
Faculty degree requirements but does not count as Computer Science credits.

Texts:

- Nyhoff and Leestma, Fortran 77 for Engineers and Scientists, 3rd Edition, Maxwell Macmillan
- Keiko Pitter et. al., Every Student's Guide to the Internet (Windows version), McGraw-Hill (1995)

Prerequisites: none

Degree credit exclusions: COSC1530.03, SC/ACMS 1010.02.

Course Director: t.b.a.

Instructors:

Section A t.b.a.

Section M t.b.a

[ return to Table of Contents ]

**2000-Level General Prerequisites
**

Before enrollment is permitted in any 2000-level computer science course the following must be met.

- COSC1030.03 completed, and
- A cumulative grade point average of 4.0 or better over completed Computer Science courses (including only the most recent grades in repeated courses for Science students).

Specific prerequisites may also apply to individual courses.

Taking more than two 2000-level computer science courses per term is not
permitted.

**COSC 2001.03 Introduction to Theory of Computation**

Section A (Fall) Tues, Thurs 14:30-16:00

Section M (Winter) Tues, Thurs 8:30-10:00

Section N (Winter) Mon, Wed 17:30-19:00

The course introduces different theoretical models of computers. Topics covered may include the following.

- Finite automata and regular expressions. Practical applications eg. text editors.
- Pushdown automata and context-free grammars. Practical applications eg. parsing and compilers.
- Turing machines. Turing machines as a general model of computers. Introduction to the halting problem and NP completeness.

Texts: Cohen, Introduction to Computer Theory.

Prerequisites: general prerequisites.

Course Director:

Section A Z. Stachniak

Section M J.Liu

Section N t.b.a.

**COSC 2011.03 Fundamentals of Data Structures**

Section A (Fall) Mon, Wed, Fri 14:30

Section M (Winter) Mon, Wed, Fri 14:30

Section N (Winter) Tues, Thurs 16:00-17:30

This course discusses the fundamental data structures commonly used
in the design of algorithms. At the end of this course, students will know
the classical data structures, and master the use of abstraction, specification
and program construction using modules. Furthermore, students will be able
to apply these skills effectively in the design and implementation of algorithms.

C++ is the implementation language for this course. No prior knowledge
of C or C++ is assumed. At the end of the course students will be able
to programme in C++ and understand the fundamentals of the object-oriented
paradigm. Not all of the language features of C++ are covered but it is
expected that you will be able to quickly learn these concepts independently.

Topics covered may include the following.

- Review of primitive data types and abstract data type arrays, stacks, queues and lists used as an introduction to C++.
- Searching and sorting: implementation in C++. A mixture of review and new algorithms.
- Priority queues.
- Trees: threaded, balanced (AVL-, 2-3-, and/or B-trees), tries
- Graphs: representations; transitive closure; graph traversals; spanning trees; minimum path; flow problems

Texts: t.b.a.

Prerequisites: general prerequisites.

Course Director:

Section A J. Liu

Section M B. Guo

Section N t.b.a.

**COSC 2021.03 Computer Organization**

Section A (Fall) Mon, Wed, Fri 11:30

Section M (Winter) Tues, Thurs 14:30-16:00

Section AH (SU98) TBA

Computers can be usefully viewed as having a structure organized into
several levels, ranging from high-level programming languages such as Pascal
or C to digital logic circuits. Each level provides specific resources
for the programmer which are created by the structure at the next lower
level. This course intends to provide students basic understanding of computers
at the lowest levels of this structure. The ways in which data are represented
in memory and transformed by machine instructions are explored.

The major functional blocks of a computer including main memory, control
unit, ALU, input/output bus structures, interrupt system, DMA channels,
and peripheral devices are studied. Some assembler programming and microprogramming
will be required.

Texts: Patterson & Hennessy, Computer Organization & Design: The Hardware / Software Interface, Morgan Kaufmann, 1994.

Suggested Reading:

- Tanenbaum, A.S., Structured Computer Organization, 3rd ed., Prentice-Hall, 1990.
- Stallings, Wm., Computer Organization and Architecture, 2nd ed., Macmillan, 1990.

Prerequisites: general prerequisites.

Course Director: t.b.a.

**COSC 2031.03 C, UNIX and X Window System**

Section A (Fall) Mon, Wed, Fri 16:30

Section M (Winter) Mon, Wed, Fri 12:30

- The programming language C is taught as a second programming language. The course assumes some programming experience - typically that obtained in the first-year computer science course. The emphasis is on practical exploration of a particular strength of C, rather than its use as a general-purpose language. C is a tool-making tool for working at a low-level; it is a programming language designed for, and used in, the writing of utilities that access the primitives of the underlying machine architecture and the operating system.
- The UNIX programming environment is considered at both a) the command level (man 1): shells, utilities, filters, etc., and b) the system call (man 2) and standard library (man 3) levels.
- The focus in [2b] is on some Unix operating system user-interface primitives, e.g. fork/exec, file descriptors, read/write, etc. The emphasis here, as in [1], is on practical exploration.
- The X Window System will be presented practically, and at the level of the Xlib C-language library interface. The emphasis here is also on practical exploration, but now with visual graphic feedback. There will also be some theoretical consideration of the protocol and server-client network-transparent architecture, and the X prime directive: "mechanism, not policy".

Students should note that this course has a substantial self-disciplined laboratory component.

Texts:

- Kernighan and Ritchie, The C Programming Language.
- Kernighan and Pike, The Unix Programming Environment.
- Jones, Introduction to the X Window System.

Prerequisites: general prerequisites.

Course Director:

Section A A. Wallis

Section M A. Wallis

[ return to Table of Contents ]

**3000-Level General Prerequisites**

Before enrollment is permitted in any 3000-level computer science course (except service courses 35xx.xx) the following prerequisites must be met.

- COSC2011.03 completed.
- One of COSC2001.03 or COSC2021.03 completed.
- A cumulative grade point average of 4.0 or better over completed Computer Science courses (including only the most recent grades in repeated courses for Science students).
- MATH1300.03 and MATH1310.03 completed.
- One of MATH2090.03, MATH2221.03, or MATH2320.03 completed.

Specific prerequisites may also apply to individual courses.

**Warning**: Starting in the academic year 1995/96 computer science
upper level courses assume students have a working knowledge of C++, as
presented in COSC2011.03. Some upper level courses use the C programming
language, therefore students may want to plan on completing COSC2031.03
before entering third year.

**COSC 3001.01 Organization and Management Seminar in Space and Communication
Sciences
**(same as SC/EATS3001.01 and SC/PHYS3001.01)

Full Year Every second Tues 17:00

A seminar course taught by guest speakers from industry, government and the university. Content changes from year to year, but includes such topics as professional ethics, communications regulations, space law, space science policy, project management, privacy and security issues in computing.

Prerequisites: Eligibility to proceed in the Specialized Honours stream in SCS beyond the 2000-level requirements

Degree Credit Exclusions: EATS 3001.01, PHYS 3001.01

Course Director: t.b.a

**COSC 3101.03 Design and Analysis of Algorithms**

Section A (Fall) Mon, Wed 11:30-13:00

Section M (Winter) Tues 12:30-14:30, Thurs 12:30

This course is intended to teach students the fundamental techniques
in the design of algorithms and the analysis of their computational complexity.
Each of these techniques are applied to a number of widely used and practical
problems. At the end of this course, a student will be able to: choose
algorithms appropriate for many common computational problems; to exploit
constraints and structure to design efficient algorithms; and to select
appropriate tradeoffs for speed and space.

Topics covered may include the following.

- Review: fundamental data structures, asymptotic notation, solving recurrences.
- Sorting and order statistics: heapsort and priority queues, randomized quicksort and its average case analysis, decision tree lower bounds, linear-time selection.
- Divide-and-conquer: binary search, quicksort, mergesort, polynomial multiplication, arithmetic with large numbers.
- Dynamic Programming: matrix chain product, scheduling, knapsack problems, longest common subsequence, some graph algorithms.
- Greedy methods: activity selection, some graph algorithms.
- Amortization: the accounting method, eg, in Graham's Scan convex hull algorithm.
- Graph algorithms: depth-first search, breadth-first search, biconnectivity and strong connectivity, topological sort, minimum spanning trees, shortest paths.
- Theory of NP-completeness.

Texts: t.b.a.

Suggested reading:

- T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduction to Algorithms, McGraw-Hill and The MIT Press, 1991.
- P. Gloor, S. Dynes, I. Lee, Animated Algorithms CD-ROM, The MIT Press 1993.
- D.E. Knuth, The Stanford GraphBase: A platform for combinatorial computing, Addison-Wesley & The ACM Press, 1993.

Prerequisites: general prerequisites, including MATH2320.03 (SCS students may enrol without MATH2320.03 or concurrently with MATH2320.03)

Course Director:

Section A A. Mirzaian

Section M t.b.a.

**NOTE**: This course is required of all specialized honours students
in computer science except those in the SCS stream.

**COSC 3111.03 Introduction to Program Verification**

Section M (Winter) Mon, Wed 11:30-13:00

Every program implicitly asserts a theorem to the effect that if certain
input conditions are met then the program will do what its specifications
or documentation says it will. Making that theorem true is not merely a
matter of luck or patient debugging; making a correct program can be greatly
aided by a logical analysis of what it is supposed to do, and for small
pieces of code a proof that the code works can be produced hand-in-hand
with the construction of the code itself. Good programming style works
in part because it makes the verification process easier and this in turn
makes it easier to develop more complex algorithms from simple ones.

The course will provide an introduction to the basic concepts of formal
verification methods. It will also include the use of simple tools to aid
in verification.

Topics covered will include the following.

- The role of formal verification in the software life-cycle; verification vs. testing and validation
- Introduction to propositional calculus; checking for tautologies and contradictions; annotating code with assertions
- Symbolic execution ; proving relative correctness for small code segments; establishing termination
- Creating specifications with quantifiers; translating specifications into code

Texts: t.b.a.

Suggested readings:

- Gries and Schneider, A Logical Approach to Discrete Mathematics, Springer-Verlag, 1993.
- R. Backhouse, Program Construction and Verification, Prentice-Hall, 1986

Prerequisites: general prerequisites, including MATH 2090.03

Course Director: P. Roosen-Runge

**COSC 3121.03 Introduction to Numerical Computations I**

(same as AS/SC/MATH 3241.03)

Section B (Fall) Mon, Wed, Fri 10:30

This course is concerned with an introduction to matrix computations
in linear algebra for solving the problems of linear equations, non-linear
equations, interpolation and linear least squares. Errors due to representation,
rounding and finite approximation are studied. Ill-conditioned problems
versus unstable algorithms are discussed. The Gaussian elimination with
pivoting for general system of linear equations, and the Cholesky factorization
for symmetric systems are explained. Orthogonal transformations are studied
for computations of the QR decomposition and the Singular Values Decompositions
(SVD). The use of these transformations in solving linear least squares
problems that arise from fitting linear mathematical models to observed
data is emphasized. Finally, polynomial interpolation by Newton's divided
differences and spline interpolation are discussed as special cases of
linear equations. The emphasis of the course is on the development of numerical
algorithms, the use of intelligent mathematical software and the interpretation
of the results obtained on some assigned problems.

Topics covered may include the following.

- Preliminaries - linear algebra, computer programming and mathematical software
- Number Systems and Errors - machine representation of numbers, floating-point arithmetic, simple error analysis, ill-conditioned problems and unstable algorithms
- Solution of Systems of Linear Equations - Gaussian elimination and its computational complexity, pivoting and stability, special structures (Cholesky's factorization for positive definite systems, banded systems, storage and computational complexities) error analysis, condition number and iterative refinement
- Solution of Overdetermined Systems of Linear Equations by Linear Least Squares Approximations - linear least squares problems, normal equations, orthogonal transformations (Given's and Householder's), QR and Singular Values Decompositions (SVD), SVD and rank-deficient problems, computational complexities versus robustness
- Interpolation - Newton's divided differences spline interpolation; banded linear systems, error analysis for interpolation. Other interpolations (rational, B-splines)

Texts: t.b.a.

Prerequisites: for Computer Science majors - general prerequisites, including MATH2221.03; for others - COSC1540.03 or COSC2011.03 or COSC2031.03; MATH1010.03 or MATH1014.03 or MATH1310.03; MATH1025.03 or MATH2021.03 or MATH2221.03.

Degree Credit Exclusion: MATH3241.03

Course Director: t.b.a.

**COSC 3122.03 Introduction to Numerical Computations II**

(same as AS/SC/MATH3242.03)

Section M (Winter) Mon, Wed, Fri 14:30

The course includes a study of algorithms and computer methods for differentiation,
integration, and solution of ordinary differential equations. Nonlinear
equations of one variable, systems of nonlinear equations, optimization
of functions of one and several variables and their relation to nonlinear
equations are also covered. The emphasis of the course is on the development
of numerical algorithms, the use of intelligent mathematical software and
the interpretation of the results obtained on some assigned problems.

Topics covered may include the following.

- Solution of Nonlinear Equations and Unconstrained Optimization - single nonlinear equation; systems of nonlinear equations; unconstrained optimization.
- Numerical Differentiation and Integration - methods of estimating derivatives; error analysis for differentiation; the rectangle and trapezoid rule for integration; Simpson's rule; Romberg's integration; adaptive quadrature routines; truncation and round-off errors in integration; improper integrals.
- Solution of Ordinary Differential Equations - introduction; analytical versus numerical solutions; basic numerical methods; Euler's, Heun's methods; Taylor series methods; order of a method; local and global errors; Runge-Kutta methods; Predictor-corrector methods; systems of differential equations; boundary value problems.

Texts: t.b.a.

Prerequisites: COSC3121.03; MATH2270.03

Degree Credit Exclusion: MATH3242.03

Course Director: t.b.a.

**COSC 3201.03 Digital Logic Design**

Section A (Fall) Mon, Wed, Fri 14:30

Section M (Winter) Mon, Wed, Fri 10:30

- Boolean Algebra and Logic Gates. How complex functions on data at the bit-representation level can be built up from simple primitives such as And, Or and Not (or just Nand or Nor). Implementation of logic functions using these primitives. Families of logic circuits.
- Combinatorial circuits, implementing functions whose output depends only on their inputs. Canonical forms of Boolean functions and their simplification using Karnaugh maps and the Quine-McClusky method. Complex combinatorial units, such multiplexers, encoders, arithmetic-logic units(ALU), read-only memory(ROM), and programmable arrays.
- Sequential circuits, implementing functions whose output depends on their history as well as their current input. Construction of basic, clocked, master-slave, and edge-triggered flip-flops. Higher level (register-transfer) constructs such as registers, counters and read-write memory(RAM).
- Theoretical design concepts, such as finite state machines.
- Hands-on digital logic hardware laboratory.

Texts:

- Randy H. Katz, Contemporary Logic Design, The Benjamin/Cummings Publishing Company, 1993.
- Capilano Computing Systems, Ltd., LogicWorks: Interactive circuit design software, The Benjamin/Cummings Publishing Company, 1994.

Suggested readings:

- John Hays, Introduction to Logic Design, Addison Wesley, 1993.
- M.M. Mano, Digital Design, Prentice Hall, 1991.

Prerequisites: general prerequisites, including COSC2021.03.

Course Director:

Section A M. Spetsakis

Section M A. Wallis

**COSC 3211.03 Data Communication**

Section A (Fall) Mon, Wed 19:00-20:30

Section M (Winter) Mon, Wed 14:30-16:00

Section AH (SU98) t.b.a.

- Physical and Electrical. How complex periodic signals propagate through guided media such as twisted pairs, co-axial cable, point-to-point microwave links, and fibre optics, and through the unguided medium of broadcast electromagnetic radiation. Frequency-domain (Fourier, spectral) analysis. Noise. Limiting relationship between signal-rate and bandwidth (Nyquist) and between data-rate and bandwidth and signal-to-noise ratio (Shannon).
- Data encoding. How analogue and digital data are carried in some encoded
form by analogue and digital signals.

Data Signal

Analogue Analogue : amplitude, frequency, phase modulation.

Digital Analogue : amplitude, frequency, phase shift keying.

Analogue Digital : sampling, quantisation, pulse code modulation.

Digital Digital : NRZ-L, NRZI, Bipolar-AMI and Manchester. - Data Link. How frames of data bits are transmitted in a controlled and reliable way between physically (i.e. directly) linked nodes in a network. Protocols for flow control, and error detection and control.
- Multiplexing and switching. How unrelated data streams may share common pathways. Time-division and frequency-division multiplexing. Circuit switching. Space-division switching. Packet switching.
- Networks. LAN (local area networks). Ethernet (CSMA/CD), token bus and token ring. Virtual circuits and datagrams.
- Basics of the TCP/IP protocol suite.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC2021.03 and MATH2090.03

Course Director:

Section A A. Wallis

Section M M. Aboelaze

Section AH t.b.a.

**COSC 3212.03 Computer Networks**

Section A (Fall) Mon, Wed 16:00-17:30

Section M (Winter) Mon, Wed 19:00-20:30

This course covers the upper layers in the OSI(TCP/IP) reference models.

Topics covered include:

- Introduction: Local area networks, high speed local area networks, Metropolitan Area networks, and wireless networks.
- Network layer: Routing, congestion control, traffic shaping, Internetworking, IP, IPv6, and network layer in ATM networks.
- Transport layer: Transport protocols, transport connection management, TCP, UDP, and the ATM Adaptation Layer (AAL) protocols.
- Application layer: Remote Procedure Calling (RPC), network security, Abstract Syntax Notation (ASN), multimedia and data compression.

Texts: t.b.a.

Prerequisites: general prerequisites; COSC3211.03

Course Director:

Section A M. Aboelaze

Section M t.b.a.

**COSC 3301.03 Programming Language Fundamentals**

Section A (Fall) Mon, Wed 17:30- 19:00

The topic of programming languages is an important and rapidly changing
area of computer science. This course introduces students to the basic
concepts and terminology used to describe programming languages. Instead
of studying particular programming languages, the course focuses on the
"linguistics" of programming languages, that is, on the common,
unifying themes that are relevant to programming languages in general.
The algorithmic, or procedural, programming languages are particularly
emphasized. Examples are drawn from early and contemporary programming
languages, including Fortan, Algol 60, PL/I, Algol 68, Pascal, C, C++,
Eiffel, Ada 95, and Java.

This course is not designed to meet the needs of the student who wishes
to learn to program in a particular programming language. However, any
student who completes this course should be able to learn any new programming
language with relative ease.

Topics covered may include the following.

- Classification of programming languages: language levels, language generations, language paradigms.
- Programming language specification: lexical, syntactic, and semantic levels of language definition.
- Data, data types, and type systems; simple types, structured types, type composition rules.
- Control primitives, control structures, control composition rules.
- Subprograms: functions and procedures; argument-parameter binding; overloading.
- Global program structure: modules, generic units, tasks, exceptions.
- Object-oriented language features: classes, encapsulation, inheritance, polymorphism.
- Critical and comparative evaluation of programming languages.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 2001.03.

Course Director: M. Wharton

**COSC 3311.03 Software Design**

Section A (Fall) Tues, Thurs 16:00-17:30

*ÒA program which does not work is undoubtedly wrong; but a
program which does work is not necessarily right. It may still be wrong
because it is hard to understand or because it is hard to maintain as the
program requirements change; or because its structure is different from
the structure of the problem.Ó* (M. A. Jackson)

This course introduces the topic of software design through lectures, supplementary
readings and a set of small design problems. The course deals with the
problem of designing software that can be used, understood and modified
by people other than the original designer.

Software design is in itself a large topic as design can deal with various
classes of programs and systems: small, medium and large; batch; real time;
distributed; and interactive (visual and graphical). Every design class
has its own problems. In this course we deal with small to medium programs
and small systems that work without critical time constraints (although
time will be considered).

We examine design methods such as JSP (Jackson System Programming), Data
Flow, SADT (Structured Analysis and Design Technique), top down, bottom
up and structured design methods. We show how theoretical notions from
finite state machines and grammars are related to and used in the design
process.

Some of the low level techniques we look at are: abstract data types; backtracking;
divide and conquer; structure clash resolution; process inversion; coroutines;
and error handling.

Design issues are related to the other phases of developing a program:
requirements analysis, specification, implementation, testing, and maintenance.

Upon leaving the course, you can expect to be able to design, implement
and modify programs and systems of programs which transform sequences from
one form to another. You will understand the role of tools and frames in
the design process. You will be able to evaluate program designs and design
methods.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 2001.03 and MATH2090.03

Course Director: N. Graham

**COSC 3321.03 Operating System Fundamentals**

Section A (Fall) Mon, Wed, Fri 16:30

Section M (Winter) Tues, Thurs 19:00-20:30

This course is intended to teach students the fundamental concepts that underlie operating systems, including multiprogramming, concurrent processes, CPU scheduling, deadlocks, memory management, file systems, protection and security. Many examples from real systems are given to illustrate the application of particular concepts. At the end of this course, a student will be able to understand the principles and techniques required for understanding and designing operating systems.

Text: A. Silberschatz, J.L. Peterson, and P. Galvin, Operating System Concepts, Third Edition, Addison-Wesley, 1991.

Prerequisites: general prerequisites, including COSC2021.03

Course Director:

Section A M. Spetsakis

Section M H. Sandhu

**COSC 3331.03 Object-Oriented Programming and Design**

Section M (Winter) Tues, Thurs 10:00-11:30

Introduction to the theoretical and practical methods of object-oriented
software construction. Topics include: single and multiple inheritance,
type hierarchies, polymorphism, operator overloading, class library design,
templates, constraint based programming; and contract model of design.

This course is a detailed introduction to the methodology and practice
of Object-Oriented software construction, one of the major areas of software
engineering practice and research.

A source program in an object-oriented programming environment is based
on independently defined abstract program units called object classes or
types; the object instances of the classes are created in the program and
interact through message passing at run-time. Each object is a program
unit which packages both a coherent collection of data elements and the
methods (routines) for their manipulation. The object encapsulates its
data elements, which means that the object class has an interface which
defines all and only what is visible about the object instances to other
objects in the program environment. These techniques promote the reuse
of reliable code and reduce the frequency of the kinds of programming which
arise in attempting to integrate the different parts of a complex program.

The course will introduce the theoretical concepts of object-oriented programming
and design, and present examples using the object-oriented programming
language C++.

The course assumes a general knowledge of C++ (i.e. base types, control
structure, pointers, references, functions, parameter passing, etc.) as
well as general notion of abstract data types and as they are implemented
in C++ (i.e. classes).

The topics to be covered include the following.

- A brief introduction to Abstract Data Types and classes of C++.
- The construction of a hierarchy of data types in which types are derived from one or more ancestor types by inheritance and refinement.
- A discussion of overloading, overriding, hiding of member functions.
- Constraint based programming to ensure the correctness of methods, class invariants, loop invariants, etc.
- Polymorphism and templates as an approach to code reuse.
- Static versus dynamic binding of methods to method calls.
- Techniques of object-oriented design: identifying objects and classes; identifying semantics of objects and classes; identifying class hierarchies; identifying when to use polymorphism.
- The contract model of software design.
- Multiple inheritance.
- An introduction to object models in other programming languages (e.g. Ada 95, Java, Eiffel).
- Object class library design to provide reusable software components.

Text: t.b.a.

Prerequisites: general prerequisites

Degree Credit Exclusion: COSC3010A.03

Course Director: N. Graham

**COSC 3401.03 Introduction to Symbolic Computation**

Section A (Fall) Tues, Thurs 17:30-19:00

The course will introduce and explore programming concepts used in symbolic
and knowledge-based computing. It is intended to give the student a programming
background which will be useful for further work in logic programming,
expert systems, and artificial intelligence.

The programming language Prolog will be considered in detail. Prolog is
a declarative programming language based on the concept of a logical assertion.
It is widely used for constructing knowledge-based and expert systems.

The course will develop the following concepts.

- Terms as representations of facts
- Logical clauses as rules
- Recursive programming techniques
- Backward-chaining vs. forward-chaining
- Goal search through backtracking
- Building logical databases for knowledge-based problem-solving
- Representing mathematical knowledge by rewrite rules
- Natural language processing using grammar rules

Text: t.b.a.

Prerequisites: general prerequisites, including MATH 2090.03

Course Director: G. Gotshalks

**COSC 3402.03 Introduction to Concepts of Artificial Intelligence**

Section M (Winter) Tues, Thurs 16:00-17:30

Artificial Intelligence (AI) deals with building a system which can
operate in an intelligent fashion. Neat as this simple definition is, it
obscures the complex nature of intelligence. At the time of the Dartmouth
Conference (1956), regarded by many as the start of AI, some researchers
believed it would be possible to create a "thinking machine"
in a matter of a few years. That was close to 40 years ago, and we are
still far from our goal, but we have learned a lot on the way.

In this course, we begin by discussing differing definitions of artificial
intelligence and go on to examine fundamental concepts in AI, building
on material introduced in COSC3401.03: Introduction to Symbolic Computation.
Topics to be covered include reasoning under uncertainty, search, constraint
propagation, planning and problem solving.

Text: Rowe, N., Artificial Intelligence Through Prolog, Prentice-Hall 1988

Prerequisites: general prerequisites; COSC3401.03; MATH2320.03

Course Director: Z. Stachniak

**COSC 3408.03 Simulation of Discrete Systems**

Section A (Fall) Tues, Thurs 14:30-16:00

Simulation is a technique for dealing with problems that do not admit
exact (or "analytic") solutions via mathematical analysis. A
model of the system to be studied is constructed, and then the model is
run to see how it performs, either to predict how the system will behave,
or, if the behaviour of the system is known, to test the validity of the
model of the system. A computer is a tool for supporting a large amount
of activity in the running of the model.

A "discrete system" simulation is one which admits a discrete-event
model that can run be in discrete steps that match the structure of the
model. (For simulation of continuous systems see COSC 3418.03)

Examples of discrete systems studied by simulation include games and other
dynamic systems involving small populations where it is feasible to model
individual's behaviour. Major sub-topics include the generation and use
of random numbers, queuing systems, and the visual presentation of behaviour.

Texts: t.b.a.

Prerequisites: general prerequisites; MATH2560.03.

Degree Credit Exclusion: MATH4930B.03.

Course Director: H. Sandhu

**COSC 3411.03 File Structures and Data Management**

Section A (Fall) Tues 12:30-14:30, Thurs 12:30

Section M (Winter) Tues, Thurs 14:30-16:00

The purpose of this course is to introduce students to file organizations
and the hardware and software involved in the creation and manipulation
of files. The course presents basic concepts, criteria for choosing between
alternative file organizations, and other topics that are important for
the understanding of file management. At the end of this course a student
will be able to understand and apply file organization techniques in design
and analysis of file management systems.

Topics covered may include the following.

- Overview of data processing, file organizations. Review of external storage devices characteristics
- Sequential files
- Hash files
- Indexed sequential files
- B-trees, B+-trees, B*-trees
- Tries and Patricia
- Multi-key file organizations
- Data encoding
- External sorting
- Buffer and memory management

Texts: M.J. Folk and B. Zoellick, File Structures, 2nd edition, Addison-Wesley, 1992.

Suggested readings:

- P.D. Smith and G.M. Barnes, Files and Databases: an Introduction, Addison Wesley, 1987.
- W.B. Frakes, R. Baeza-Yates (eds.), Information Retrieval: Data Structures and Algorithms, Prentice-Hall, 1992.
- A. Tharp, File Organization and Processing, John Wiley & Sons, 1988.

Prerequisites: general prerequisites, including COSC 2021.03 and MATH2090.03; knowledge of the C or C++ language is recommended; MATH2320.03 is recommended.

Course Director:

Section A G. Gotshalks

Section M J. Xu

**COSC 3412.03 Introduction to Database Management Systems**

Section A (Fall) Tues 9:30-11:30, Thurs 9:30

Section M (Winter) Mon, Wed, Fri 9:30

The purpose of this course is to introduce the fundamental concepts
of database management, including aspects of data models, database languages,
and database design. At the end of this course, a student will be able
to understand and apply the fundamental concepts required for the use and
design of database management systems.

Topics may include the following:

- Overview of Database Management Systems
- Entity-Relationship Model
- Relational Model
- SQL
- Integrity Constraints
- Relational Database Design
- Network Model
- Hierarchical Model

Texts:

- A. Silberschatz, H.F. Korth, and S. Sudarshan, Database System Concepts, 3rd Ed., McGraw-Hill, 1997.
- G. Koch, and K. Loney, ORACLE: The Complete Reference, 3rd. Ed., Oracle Press (Osborne McGraw-Hill), 1995

Prerequisites: general prerequisites; COSC3411.03

Course Director:

Section A t.b.a.

Section M t.b.a.

**COSC 3418.03 Simulation of Continuous Systems**

(not offered in FW97/98)

Simulation is a technique for dealing with problems that do not admit
exact (or "analytic") solutions via mathematical analysis. A
model of the system to be studied is constructed, and then the model is
run to see how it performs, either to predict how the system will behave,
or, if the behaviour of the system is known, to test the validity of the
model of the system. A computer is a tool for supporting a large amount
of activity in the running of the model.

A "continuous system" may either be presumed to be inherently
continuous or it may, at a fine enough scale, be actually composed of discrete
events. However, in simulation, a "continuous system" is one
for which the model, due to practical necessity, is described by continuous
variables regardless of its physical structure. However, the running of
a continuous model involves, also of necessity, discrete steps. Thus central
to continuous system simulation is the problem of approximation. (For simulation
of discrete systems see COSC 3408.03)

Examples of continuous systems studied by simulation include dynamic systems
involving very fine variations or large populations. Major sub-topics include
chaotic behaviour, the numerical solution of differential equations by
finite methods, and related issues of stability and errors.

Texts: t.b.a.

Prerequisites: general prerequisites; MATH2560.03.

**COSC 3530.03 Technical and Professional Writing
**(x-listed BC3030.03)

Fall

Wed 9:30-11:30, Fri 10:30

This writing-intensive course is for upper-year students enrolled in Computer Science, Space and Communication Sciences, and related fields. Students develop confidence and competence in professional and technical writing. Focus is on communication of complex information in a clear, sensible style. Articles, end-user documentation and technical reports will be critically evaluated in class. Outside speakers from industry will be invited to provide a real-world perspective on needs.

**Note**: This course counts as elective Science credits toward satisfying
Faculty degree requirements but does not count as Computer Science credit.

Web site: www.yorku.ca/bethune/courses/3030.htm

Texts:

- Sherman, Theodore A., and Simon S. Johnson, Modern Technical Writing, 5th edition, Prentice Hall, New Jersey, 1990.

Corequisite: concurrent enrolment in at least one course in 3000- or 4000-level Computer Science, Physics, or other applied science. English language proficiency is expected.

Degree Credit Exclusions: BC3030.03; BC3050.03.

Course Director: t.b.a.

[ return to Table of Contents ]

**4000-Level General Prerequisites
**Before enrollment is permitted in any 4000-level computer science course
the following requirements must be met.

- COSC2001.03, COSC2011.03, COSC2021.03 completed.
- at least 12 credits in COSC courses at the 3000-level completed.
- a cumulative gpa of 5.0 or better over completed computer science courses (including only the most recent grades in repeated courses for Science students).
- MATH2090.03 completed Specific prerequisites may apply to individual courses.

**COSC 4001.06 Space and Communication Sciences Workshop**

(same as SC/EATS4001.06 and SC/PHYS4001.06)

Full Year Tues 17:00

Individual projects will be assigned by mutual agreement between the student and a faculty member. The work may be done under supervision by the faculty member, or under supervision of an industrial associate to that faculty member. The projects will be self-contained problems of a design nature, and will be pursued in the manner of a space project. Thus, the first step is to define the requirements of the design, the second to carry out a review of previous work, and the third to execute the design. Following that, the design shall be tested, normally through simulation, and conclusions drawn. A report of professional quality shall be written and submitted.

Prerequisites: Satisfactory completion of the 3000-level courses in the Space and Communication Science core

Degree Credit Exclusions: COSC4080.03, EATS4001.06, PHYS4001.06

Course Director: M. Wharton

**COSC 4010C.03 Beyond the Object: Frameworks, Components and ORBs**

(not offered in FW97/98) .

**COSC 4080.03 Computer Science Project**

This is a course for advanced students, normally those in the fourth
year of an honours programme, or students who have completed six full computer
science courses. Students who have a project they wish to do, need to convince
a member of the faculty in the department that it is appropriate for course
credit. Alternatively, students may approach a faculty member in the Department
(typically, one who is teaching or doing research in the area of the project)
and ask for project suggestions. Whatever the origin of the project, a
ÔcontractÕ is required. It must state the scope of the project,
the schedule of work, the resources required, and the criteria for evaluation.
The contract must be signed by the student and his/her project supervisor
and be acceptable to the course director.

Internship students may elect to receive credit for their internship as
a project course. This is outlined further at the beginning of this calendar.
A 'contract' is still required.

Prerequisites: general prerequisites; permission of the course director. Restricted to students who have completed 36 credits in Computer Science.

Degree Credit Exclusion: COSC4001.06

Course Director: M. Wharton

**COSC 4101.03 Advanced Data Structures**

(x-listed COSC 5101.03)

Section A (Fall) Mon, Wed, Fri 15:30

Section M (Winter) Mon 9:30-11:30, Wed 9:30

The course discusses advanced data structures: heaps, balanced binary
search trees, hashing tables, red--black trees, B--trees and their variants,
structures for disjoint sets, binomial heaps, Fibonacci heaps, finger trees,
persistent data structures, etc. When feasible, a mathematical analysis
of these structures will be presented, with an emphasis on average case
analysis and amortized analysis. If time permits, some lower bound techniques
may be discussed, as well as NP-completeness proof techniques and approximation
algorithms.

The course may include the following topics.

- Amortized and worst-case analysis of data structures.
- Data structuring paradigms: self-adjustment and persistence.
- Lists: self-adjustment with the move-to-front heuristic.
- Search trees: splay trees, finger search trees.
- Heaps: skew heaps, fibinacci heaps.
- Union-find trees.
- Link-and-cut trees.
- Multidimensional data structures and dynamization.

Texts:

- Mark Allen Weiss, Data Structures and Algorithm Analysis, 2nd edition, Benjamin/Cummings, 1995.
- T.H.Cormen, C.E.Leiserson, R.L.Rivest, Introduction to Algorithms, McGraw-Hill, 1990.

Prerequisites: general prerequisites, including COSC 3101.03; MATH2320.03

Course Director:

Section A t.b.a.

Section M A. Mirzaian

**COSC 4111.03 Automata and Computability**

Section A (Fall) Mon, Wed, Fri 12:30

This course is the second course in the theory of computing. It is intended to give students a detailed understanding of the basic concepts of abstract machine structure, information flow, computability, and complexity. The emphasis will be on appreciating the signficance of these ideas and the formal techniques used to establish their properties. Topics chosen for study include: models of finite and infinite automata, the limits to computation, and the measurement of the intrinsic difficulty of computational problems.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC3101.03; MATH2320.03.

Course Director: P. Roosen-Runge

**COSC 4201.03 Computer Architecture**

(x-listed COSC 5590.03)

Section M (Winter) Mon 9:30-11:30, Wed 9:30

This course presents the core concepts of computer architecture and
design ideas embodied in many machines and emphasizes a quantitative approach
to cost/performance tradeoffs. This course concentrates on uniprocessor
systems. A few machines are studied to illustrate how these concepts are
implemented; how various tradeoffs that exist among design choices are
treated; and how good designs make efficient use of technology. Future
trends in computer architecture are also discussed.

Topics covered may include the following.

- Fundamentals of computer design
- Performance and cost
- Instruction set design and measurements of use
- Basic processor implementation techniques
- Pipeline design techniques
- Memory-hierarchy design
- Input-output subsystems
- Future directions

Texts:

- J. Hennesey and D. Patterson, Computer Architecture
- A Quantitative Approach, Morgan Kauffmann Publishers, Inc., 1990.

Prerequisites: general prerequisites, including COSC 3201.03 and COSC3321.03

Course Director: M. Aboelaze

**COSC 4211.03 Performance Evaluation of Computer Systems**

Section M (Winter) Tues, Thurs 16:00-17:30

Topics covered may include the following.

- Review of Probability Theory - probability, conditional probability, total probability, random variables, moments, distributions (Bernoulli, Poisson, exponential, hyperexponential, etc.)
- Stochastic Processes - Markov chains and birth and death processes
- Queueing Theory - M/M/1 Queueing system in detail; other forms of queueing systems including limited population and limited buffers.
- Application - A case study involving use of the queuing theory paradigm in performance evaluation and modeling of computer systems such as open networks of queues and closed queuing networks. Use of approximation techniques, simulations, measurements and parameter estimation.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 3211.03 and COSC3408.03

Course Director: H. Sandhu

**COSC 4242.03 Signals and Systems
**(x-listed COSC 5325.03)

Section A (Fall) Mon, Wed, Fri 11:30

The study of computer vision, graphics and robotics requires background
in the concept of discrete signals, filtering, and elementary linear systems
theory. Discrete signals are obtained by sampling continuous signals.

In this course, students review the concept of a discrete signal, the conditions
under which a continuous signal is completely represented by its discrete
version, linear time-invariant systems.

Topics covered may include the following.

- Continuous and discrete signals
- Linear time-invariant systems
- Fourier analysis in continuous time
- ourier analysis in discrete time
- Sampling
- Filtering, image enhancement
- Laplace transform
- Z transform
- Linear feedback systems
- Random signals, image coding
- Kalman filtering
- Statistical pattern recognition

Text: A. V. Oppenheim, A. S. Willsky, Signals and Systems, Prentice Hall, 1983

Prerequisites: general prerequisites; COSC3121.03 or MATH3241.03.

Degree Credit Exclusions: COSC4010B.03, EATS4020.03, MATH4830.03, PHYS4060.03.

Course Director: B. Guo

**COSC 4301.03 Programming Language Design**

(x-listed COSC 5423.03)

Section M (Winter) Mon, Wed 18:00-19:30

This course is a continuation of COSC3301.03 Programming Language Fundamentals. Like its predecessor, the course focuses on the linguistics of programming languages; that is, on the common, unifying themes that are relevant to programming languages in general. Both algorithmic and nonalgorithmic language categories are examined. Current techniques for the formal specification of the syntax and semantics of programming languages are studied. Skills are developed in the critical and comparative evaluation of programming languages.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 3301.03

Course Director: M. Wharton

**COSC 4302.03 Language Processors**

Section A (Fall) Mon, Wed, Fri 14:30

This course is concerned with a variety of theoretical and practical
questions that are raised by the need to implement programming languages.
The implementation of a programming language is accomplished by writing
a computer program that functions as a "translator" or "language
processor". Language processors can be categorized as compilers, cross-compilers,
interpreters, assemblers, and pre-processors. However, the different kinds
of translators generally exhibit a common internal structure consisting
of standardized "phases": the scanner, parser, and semantics.
Because of this common structure, it is appropriate to study language processors
as a unified group. However, the course emphasizes the most important class
of language processors: compilers.

As a practical exercise, students are required to design and implement
components of a compiler.

Topics covered may include the following.

- Phases of translation, single-pass and multi-pass translation, phase interleaving.
- Lexical analysis, or scanning: finite-state automata, practical simplifications of finite-state automata.
- Syntactic analysis, or parsing: shift-reduce parsing, operator precedence parsing, top-down parsing, bottom-up parsing, backtracking, look-ahead, efficiency considerations.
- Context conditions, semantic analysis, code generation,
- Data structures for translators, symbol tables.
- Optimization: local optimizations, register optimization, global optimization, control flow analysis, data flow analysis.
- Error analysis: error trapping and recovery.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 3301.03

Course Director: M. Wharton

**COSC 4311.03 System Development**

Section M (Winter) Mon, Wed, Fri 14:30

System Development deals with the construction of systems of interacting
processes. The course focuses on abstraction, specification, and analysis
in software system development. Abstraction and specification can greatly
enhance the understandability, reliability and maintainability of a system.
Analysis of concurrency and interaction is essential to the design of a
complex system of interacting processes.

The course is split into three parts. The first part discusses a semiformal
method, Jackson System Development (JSD) by Michael Jackson. JSD is used
to build an understanding of what system development entails and to develop
a basic method of constructing practical systems of interacting processes.
JSD gives precise and useful guidelines for developing a system and is
compatible with the object oriented paradigm. In particular, JSD is well
suited to the following.

- Concurrent software where processes must synchronize with each other.
- Real time software. JSD modeling is extremely detailed and focuses on time at the analysis and design stages.
- Microcode. JSD is thorough, it makes no assumptions about the availability of an operating system.
- Programming parallel computers. The JSD paradigm of many processes may be helpful.

The second part of the course discusses the mathematical model CSP (Communicating
Sequential Processes by C.A.R. Hoare). While CSP is not suitable to the
actual design and development of a system of interacting processes, it
can mathematically capture much of JSD. Consequently, it is possible to
use formal methods in analyzing inter-process communication arising out
of JSD designs.

The third part of the course discusses Z notation and its use in the specification
of software systems. Z has been successfully used in many software companies
-- such as IBM and Texas Instruments -- to specify and verify the correctness
of real systems.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 3311.03, and COSC3111.03 or COSC3321.03.

Course Director: G. Gotshalks

**COSC 4321.03 Operating System Design**

(x-listed COSC 5421.03)

Section A (Fall) Tues, Thurs 14:30-16:00

An operating system has four major components: process management, input/output,
memory management, and the file system. This project- oriented course puts
operating system principles into action. This course presents a practical
approach to studying implementation aspects of operating systems. A series
of projects is included, making it possible for students to acquire direct
experience in the design and construction of operating system components.
A student in this course must design and implement some components of an
operating system and have each interact correctly with existing system
software. The programming environment is C++ under Unix. At the end of
this course, a student will be able to design and implement the basic components
of operating systems.

A solid background in operating systems concepts, computer architecture,
C, and UNIX is expected.

Texts: Bacon, J., Concurrent Systems, and a course reader available from Department of Computer Science.

Prerequisites: general prerequisites, including COSC 3321.03.

Course Director: T. Brecht

**COSC 4331.03 Computer Graphics**

(x-listed COSC 5431.03)

Section A (Fall) Tues, Thurs 19:00-20:30

Section M (Winter) Mon, Wed, Fri 11:30

This course introduces the student to the fundamental algorithms of
3-D computer graphics and image synthesis.

The first half of the course covers window systems, display hardware, graphical
primitives, scan conversion, two and three-dimensional transformations
and the mathematics of planar geometric projection.

The second half concentrates on raster algorithms and image synthesis.
Some of the topics include visible surface algorithms, modeling, shading,
global illumination, anti-aliasing and texture mapping.

Students are expected to be familiar with C and UNIX and will be using
the X window environment on the undergraduate workstations.

Texts t.b.a.

Prerequisites: general prerequisites; MATH2221.03

Course Director:

Section A J. Amanatides

Section M B. Guo

**COSC 4341.03 Interactive System Design
**(x-listed COSC 5491.03)

Section M (Winter) Tues 12:30-14:30, Thurs 12:30

Recent studies have shown that on average, 50% of the costs of modern
application programs come from the development of the program's user interface.
At the same time, users of programs are becoming increasingly aware and
critical of poorly designed user interfaces. The modern system designer
must, therefore, be capable of creating systems that are easy to use and
that truly address the needs of the users, while still managing to remain
within budget.

This course introduces the concepts and technology necessary to manage
the design and implementation of interactive software. Students will learn
methods for designing software matched to the goals, tasks and skills of
the eventual users of the system. A development methodology is presented
in which each development stage involves evaluation of the quality of the
system design. Units in the course will cover User Needs Analysis, User
Interface Design, Task-Oriented Specification, Architecture Design of Interactive
Systems, System Implementation, and User Testing and Evaluation.

The course is based on a project which involves programming in Turing,
a Pascal-like language. Students are expected to learn Turing on their
own.

Texts: t.b.a.

Prerequisites: general prerequisites.

Course Director: N. Graham

**COSC 4351.03 Real-Time Systems Theory**

Section A (Fall) Tues, Thurs 16:00-17:30

In real-time computing systems the correctness of the system depends
not only on the logical result of the computation but also on the time
at which the results are produced. For example, a computer controlling
a robot on the factory floor of a flexible manufacturing system, must stop
or turn the robot aside in time to prevent a collision with some other
object on the factory floor. Other examples of current real-time systems
include communication systems, traffic systems, nuclear power plants and
space shuttle and avionic systems.

Real-time programs in many safety-critical systems are more complex than
sequential programs or concurrent programs that do not have real-time requirements.
This course will deal with the modelling, simulation, specification, analysis,
design and verification of such real-time programs. The objective of the
course is to expose the student to current techniques for formally proving
the correctness of real-time behaviour of systems.

Topics covered may include the following.

- Techniques for expressing syntax and semantics of real-time programming languages
- Modelling real-time systems with discrete event calculi (e.g. Petri net and state machine formalisms)
- Specification of concurrency, deadlock, mutual exclusion, delays and timeouts
- Scheduling of tasks to meet hard time bounds.
- CASE tools for analysis and design. At the end of the course the student will be able to model and specify real-time systems, design and verify correctness of some real-time systems.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 3311.03 or COSC3321.03 or COSC3111.03.

Course Director: t.b.a.

**COSC 4352.03 Real-Time Systems Practice**

Section M (Winter) Mon, Wed 16:30-18:00

In real-time computing systems the correctness of the system depends
not only on the logical result of the computation but also on the time
at which the results are produced. For example, a computer controlling
a robot on a factory floor must stop the robot in time to prevent a collision.
Other examples of real-time systems include communication systems, traffic
systems, nuclear power plants and avionic systems. Real-time systems are
complex and require a knowledge of reactive programs for their design.
A reactive program maintains an ongoing non-terminating interaction with
its environment rather than computing some final value on termination.

The course will focus on the design, construction and verification of soft
and hard real-time systems. Topics may include: models of concurrent processes
with access to a clock (e.g. by fair transition systems with timeouts and
clock variables), semaphores and synchronization, process communication
and fairness, temporal logic for specifying safety properties (e.g. freedom
from deadlock), liveness and real-time response, verification of real-time
systems using temporal logic model-checking tools such as StateClock/STeP,
and examples from real-time programming languages (Ada and Java).

Text: Z. Manna and A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems, Springer-Verlag, 1991, ISBN 0-387-97664-7 (v1).

Prerequisites: general prerequisites, including COSC 3301.03 or COSC3311.03 or COSC3321.03

Course Director: J. Ostroff

**COSC 4361.03 Human-Computer Communication**

Section A (Fall) Mon, Wed 16:30-18:00

The course focuses this year on the design and implementation of hypermedia
presentation systems. "Hypermedia" refer to the non-linear organization
of digital information, in which items (such as a word in a text field
or a region of an image) are actively linked to other items. Users interactively
select and traverse links in a hypermedia presentation system in order
to locate specific information or entertainment, or to browse in large
archives of text, sound, images, and video. Well-structured hypermedia
give users a way of coping with the "navigation" problem created
by availability of low-cost, fast access, high-density storage media.

We will explore the following topics.

- The historical roots of hypermedia: Bush, Engelbart, and Nelson;
- The digital representation of media: rich text, sound, speech, images, animation, and video;
- Enabling technologies for creating hypermedia
- The role of scripting and markup languages;
- Networked hypermedia (e. g. HTTP browsers); performance and compression issues
- Development Tool Kits
- Distribution and Intellectual Property Issues

Students will be expected to familiarize themselves quickly with the Macintosh interface and basic features of the operating system. Students will be asked to schedule themselves for at least six hours/week lab time in the Department's Multimedia Lab (161 CCB), as the course work will involve a significant amount of exploration and development of multimedia/hypermedia materials. Students will be divided into small teams with specific responsibilities for individual exploration and programming tasks assigned in connection with the course topics. Tasks may take the form of constructing presentations, prototype applications, or the programming of useful scripts. The teams will be asked to write short reports on their work which will be presented in class.

Text: t.b.a.

Prerequisites: general prerequisites.

Course Director: P. Roosen-Runge

**COSC 4401.03 Artificial Intelligence**

(x-listed COSC 5326.03)

Section M (Winter) Tues, Thurs 14:30-16:00

This course will be an in-depth treatment of one or more specific topics within the field of Artificial Intelligence. Possible topics include the following.

- Machine learning: deduction, induction, abduction, explanation-based learning, learning k-DNF.
- Statistical learning: reinforcement learning, genetic learning algorithms, connectionist learning systems, supervised and unsupervised.
- Statistical and structural pattern recognition.
- Speech recognition.
- Artificial intelligence programming paradigms: search, pattern-directed inference, logic- and object-oriented programming, symbolic mathematics, constraint satisfaction and symbolic relaxation, building problem solvers, efficiency issues.
- Sensor-based robotics: path planning, position estimation, map-building, object recognition, robotic sensor and actuator hardware, software, and interfacing. Contact the course director for information regarding the focus of the course this year.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 3402.03

Course Director: Y. Lesperance

**COSC 4402.03 Logic Programming**

(x-listed COSC 5311.03)

Section A (Fall) Tues 9:30-11:30, Thurs 9:30

Logic programming has its roots in mathematical logic and it provides
a view of computation which contrasts in interesting ways with conventional
programming languages. Logic programming approach is rather to describe
known facts and relationships about a problem, than to prescribe the sequence
of steps taken by a computer to solve the problem.

One of the most important problems in logic programming is the challenge
of designing languages suitable for describing the computations which these
systems are designed to achieve. The most commonly recognized language
is PROLOG.

When a computer is programmed in PROLOG, the actual way the computer carries
out the computation is specified partly by the logical declarative semantics
of PROLOG, partly by what new facts PROLOG can "infer" from the
given ones, and only partly by explicit control information supplied by
the programmer. Computer Science concepts in areas such as artificial intelligence,
database theory, software engineering knowledge representation, etc., can
all be described in logic programs.

Topics covered may include the following.

- Logical preliminaries: syntax and semantics of first order predicate logic and its Horn logic fragment;
- Logical foundations of logic programming: unification, the resolution rule, SLD-resolution and search trees;
- PROLOG as a logic programming system;
- Programming techniques and applications of PROLOG;
- Constrained logic programming systems.

At the end of this course a student will be familiar with fundamental logic programming concepts and will have some programming expertise in PROLOG.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC 3401.03, and COSC3101.03 or COSC3111.03.

Course Director: Z. Stachniak

**COSC 4411.03 Database Management Systems**

Section A (Fall) Tues 12:30-14:30, Thurs 12:30

This course is the second course in database management. It introduces
concepts, approaches, and techniques required for the design and implementation
of database management systems.

Topics may include the following:

- Query Processing
- Transactions
- Concurrency Control
- Recovery
- Database System Architectures
- Distributed Databases
- Object-Oriented Databases

Texts: A. Silberschatz, H.F. Korth, and S. Sudarshan, Database System Concepts, 3rd Ed., McGraw-Hill, 1997.

Suggested Readings: R. Elmasri and S.B. Navathe, Fundamentals of Database Systems, 2nd Ed., Benjamin Cummings, 1994.

Prerequisites: general prerequisites, including COSC3412.03.

Course Director: J. Xu

**COSC 4421.03 Introduction to Robotics**

(x-listed COSC 5324.03)

Section A (Fall) Mon, Wed, Fri 9:30

The course introduces the basic concepts of robotic manipulators and autonomous systems. After a review of some fundamental mathematics the course examines the mechanics and dynamics of robot arms, modible robots, their sensors and algorithms for controlling them. A Robotics Laboratory is available equipped with a manipulator and a moving platform with sonars, several workstations and an extensive collection of software.

Texts: J. Craig, Introduction to Robotics: Mechanics and Control, 2nd edition, Addison Wesley.

Prerequisites: general prerequisites; MATH2221.03.

Course Director: M. Jenkin

**COSC 4422.03 Computer Vision**

(x-listed COSC 5323.03)

Section M (Winter) Mon, Wed, Fri 15:30

Computer Vision is a very challenging problem with wide applications.
It spans several disciplines within science and engineering: computer science,
computer engineering, photogrammetry, telecommunications, robotics, medicine
and the list goes on. This course introduces the fundamental concepts of
vision with emphasis on computer science.

In particular the course covers the image formation process, color analysis,
image processing, enhancement and restoration, feature extraction and matching,
3-D parameter estimation and applications. A Vision Laboratory is available
where students can gain practical experience. The Lab includes several
workstations equipped with video cameras, digitizers and image processing
software.

Texts: t.b.a.

Prerequisites: general prerequisites, including COSC3121.03

Course Director: M. Spetsakis

[ return to Table of Contents ]

The introductory courses MATH1090.03 and MATH1300.03 , and MATH1310.03 are required of all Computer Science majors. Students who have not taken OAC calculus should consult advisors in the Mathematics Department to determine which courses they should take before attempting MATH1300.03. In addition, some combination, or all of, the following mathematics courses will also be required, depending on the degree programme; MATH2090.03, MATH2221.03, and MATH2320.03.

Mathematics Substitute Course List Course

Course | Acceptable Substitutions for COSC degree requirements |

MATH1025.03 | MATH2021.03, MATH2221.03 |

MATH1090.03 | MATH1120.03 |

MATH1300.03 | MATH1000.03, MATH1013.03 |

MATH1310.03 | MATH1010.03, MATH1014.03 |

MATH2221.03 | MATH1025.03, MATH2021.03 |
---|

**MATH 1090.03 Introduction to Sets and Logic**

(formerly MATH1120.03)

This course is an introduction to sets, functions, relations, logic, induction
and proof techniques, and may include a smattering of basic combinatorics
and graph theory. It should be of value to mathematics or computer science
majors, and may also appeal to students wanting to apply mathematics to
the social and management sciences.

The final grade will be based on class tests and a final examination (and
possibly assignments).

Prerequisites: One credit of OAC (Ontario Grade 13) mathematics or AK/MATH1710.06 or equivalent.

Degree Credit Exclusions: AS/SC/MATH1120.03, AK/MATH1409A.03, AK/MATH2400.06, AK/MATH2440.06, AK/MATH2441.03. The course is not open to students who have taken or are taking any mathematics course at 3000 or higher level.

**MATH 1300.03 Differential Calculus With Applications**

Topics include functions, limits, continuity, differentiation, mean-value
theorem, curve sketching, maxima and minima, Riemann integration, antiderivatives,
fundamental theorem of calculus.

The final grade may be based on assignments, quizzes, class tests and a
final examination worth at least 30%.

Prerequisites: OAC.Calculus or AS/SC/MATH1500.03 or AS/SC/MATH1515.03 or AK/MATH1710.06 or equivalent.

Degree Credit Exclusions: AS/SC/MATH1000.03, AS/SC/MATH1013.03, AS/SC/MATH1505.06, AS/MATH1530.03, AS/AK/MATH1550.06, AS/ECON1530.03, SC/ACMS1030.06, SC/ACMS1050.06, AK/MATH1410.06, AK/MATH 1300.03, AK/MATH1409B.03.

**MATH 1310.03 Integral Calculus with Applications**

This is the second in a series of introductory calculus courses. It is
designed to follow MATH 1300.03.

Topics include fundamental theorem of calculus, logarithmic and exponential
functions, trigonometric functions, techniques of integration, applications
of integration theory, l'Hôpital's rule, infinite sequences and numerical
series.

The final grade may be based on assignments, quizzes, class tests, and
a final examination worth at least 30%.

Prerequisites: One of AS/SC/MATH 1000.03, AS/SC/MATH 1013.03, AS/SC/AK/MATH 1300.03, or, for non-Science students only, one of AS/MATH 1530.03 and AS/MATH 1540.03; or AS/AK/MATH 1550.06; or AS/ECON 1530.03 and AS/ECON 1540.03.

Degree Credit Exclusions: AS/SC/MATH 1010.03, AS/SC/MATH 1014.03, AS/SC/MATH 1505.06, SC/ACMS1030.06, SC/ACMS1050.06, AK/MATH1310.03, AK/MATH1410.06.

**MATH 2090.03 Introduction to Mathematical Logic**

Logic is the "official" language of mathematics and is essential
in establishing the foundations on which mathematics is built. In recent
years, logic has also come to play a fundamental and major role in computer
science. A knowledge of logic is now an absolute necessity for the computer
professional. In this course we will introduce the student to the basics
of mathematical logic and deductive reasoning. The course is primarily
intended for Computer Science students but would be valuable to any student
interested in formal reasoning. The topics covered will include the syntax
and semantics of both propositional and predicate logic, an introduction
to some axiomatic theories and a more detailed study of Peano arithmetic
and induction.

There will be assignments using software for the PC computers; equipment
will be available at the Steacie labs. The final grade will be based on
two class tests and a final examination (and possibly assignments).

Prerequisite: AS/SC/AK/MATH1090.03 or any 2000-level MATH course (without second digit 5) or permission of the course director.

**MATH 2221.03 Linear Algebra with Applications I
**Linear algebra is a branch of mathematics which is particularly useful
in other fields and in other branches of mathematics. Its frequent application
in the engineering and physical sciences rivals that of calculus. Computer
scientists and economists have long recognized its relevance to their discipline.
Moreover, linear algebra is fundamental in the rapidly increasing quantification
that is taking place in the management and social sciences. Finally, it
is essential to higher mathematics courses in algebra, analysis, probability
and statistics and geometry, where the ideas of linear algebra reappear.

This course and MATH2222.03 form a standard full-year introduction to linear algebra. While the presentation is not excessively theoretical, proofs will be presented and the student is expected to master concepts as well as results. Applications will be left mainly for MATH 2222.03.

Topics to be studied include: systems of linear equations and matrices, determinants, linear dependence and independence of sets of vectors in Rn, vector spaces, inner product spaces and the Gram-Schmidt process.

The final grade will be based on term work and a final examination(with possible weights of 60% and 40% respectively).

Prerequisite: OAC algebra or any university mathematics course.

Degree Credit Exclusions: AS/SC/MATH1025.03, AS/SC/MATH2000.06; AS/SC/MATH 2021.03, SC/ACMS 1020.06; AK/MATH2220.06, AK/MATH2221.03.

**MATH 2320.03 Discrete Mathematical Structures**

This course is intended primarily, but not exclusively, for Computer Science
students. It aims to provide an intensive introduction to a variety of
algebraic and combinatorial structures which are needed in computer science.
A student of mathematics should enjoy being introduced to this variety
of mathematical topics, many of which are not covered elsewhere. The course
does not require a previous knowledge of computer science.

In broad categories the topics to be covered include set theory (relations,
functions, ...), combinatorics, graph theory and abstract algebra (posets,
lattices, Boolean algebra, groups, ...). The emphasis will be on examples
and on extracting common properties.

This course is a prerequisite for COSC 3101.03, COSC 3402.03, COSC 4101.03,
COSC 4111.03.

The final grade may be based on two class tests (25% each), and a final
examination (50%).

Prerequisite: AS/SC/AK/MATH 1090.03 or any 2000-level MATH course (without second digit 5) or permission of the course director.

Degree Credit Exclusions: AK/MATH 2440.06, AK/MATH2442.03.

**MATH 2560.03 Elementary Statistics I**

Displaying and describing distributions, normal distribution. Relationships
between variables, regression and correlation. The need for design, experimental
design and sampling design. Sampling distributions, bias, variability.
Probability models, random variables, probability laws.

Prerequisite: Ontario Grade 12 Advanced Mathematics.

Degree Credit Exclusions: AS/SC/MATH 1131.03, SC/BIOL 3080.03, SC/BIOL 3090.03, AS/ECON 2500.03, AS/SC/GEOG 2420.03, AK/MATH 2442.03.03, AS/SC/PHED2050.03, AS/SC/PSYC 2202.03, AS/SOC/3030.06. Not open to any student who has successfully completed AS/SC/MATH 2030.06.

[ return to Table of Contents ]

Students should consult the University Undergraduate Calendar for full
details of the degree requirements and relevant regulations.

Degree requirements refer to the following categories of courses:

**General education** Intended to provide a broad interdisciplinary
perspective, courses come from the Divisions of Humanities, Natural Science(BA
degrees only) and Social Science. They also provide exposure to areas of
study outside ones area of specialization, and thus requirements may also
specify courses outside of ones area of specialization.

**Major (and minor) courses ** Students specialize in a specific
subject or combination of subjects. The area of primary concentration is
known as the "Major" and an area of secondary concentration (if
any) is known as the "Minor", in BA degrees only. It is possible
to have two "Majors".

**Elective courses** Intended to broaden the student's education
beyond their area of specialization, electives include courses which are
not used to fulfill Departmental, General Education or Major/Minor requirements.
Courses not considered to be electives are: a) major courses taken above
the required number (Faculty of Arts only); b) non-major courses taken
within the major subject (e.g. most Atkinson COSC courses); c) courses
outside the major taken to fulfil major requirements (e.g. MATH1090.03
and other MATH courses required for Computer Science); d) courses which
are cross-listed or designated as equivalents or exclusions for courses
in the Major Programme.

**Upper-level courses** Courses taken at the 3000- and/or 4000-level.
Faculty of Arts Honours degrees require at least 18 credits at the 4000-level
and at least 36 credits at the 3000- and 4000-level. Faculty of Pure and
Applied Science Honours degrees require a total of at least 42 credits
at the 3000- and 4000-level.

**In faculty courses** Faculty of Arts courses have the prefix
AS. Faculty of Pure and Applied Science courses have the prefix SC. All
computer science and most mathematics courses are cross-listed between
the faculties and have either AS or SC as a prefix depending upon the degree
sought.

**York University courses**: for both BA Honours and BA Ordinary
degrees, students must successfully complete at least 30 credits at York.
Of these 30 credits, a minimum of 24 credits must be successfully completed
in the faculty in which a degree is sought. At least half (raised if a
fraction) of the course credit requirements of the Department must be taken
in the faculty in which a degree is sought.

**Faculty of Arts
**The Faculty of Arts offers the following B.A. degree programmes
in Computer Science. Be sure to check the relevant departments for information
about each area of specialization.

- Specialized Honours (total of 20 courses; one area of specialization)
- Honours Major (total of 20 courses; one area of specialization)
- Honours Double Major unlinked and linked (total of 20 courses; two areas of specialization)
- Honours Major/Minor (total of 20 courses; two areas of specialization; requires a major in another area)
- Ordinary (total of 15 courses; one area of specialization)

For details of programme requirements refer to the York Calendar or web site (Calendars link at www.yorku.ca)

**General education requirements**

Students select their general education requirements in accordance with
the following prescription.

- One 1000-level course, in either the Division of Humanities or the Division of Social Science to be taken within the first four courses.
- One 1000-level course in the Division of Natural Science to be taken within the first seven courses.
- One 2000-, 3000- or 4000-level course, in either the Division of Humanities or the Division of Social Science to be taken at any time after the session in which the student has completed their fourth course.
- Breadth requirement to be taken before graduation; at least one course from each of the following areas.

Area I |
Area II |

Classical Studies (Greek or Latin) | Anthropology |

English | Economics |

French Studies | Geography |

History | Political Science |

Humanities | Psychology |

Languages, Literatures and Linguistics | Social Science |

Philosophy | Sociology |

**Faculty of Pure and Applied Science**

The Faculty of Pure and Applied Science offers the following BSc degree
programmes in Computer Science. The programmes are described in more detail
in the following sections. Be sure to see the relevant departments for
information about each area of specialization.

- Specialized Honours (total of 120 credits; one area of specialization)
- Specialized Honours Space and Communications Stream (total of 122 credits; one area of specialization)
- Combined Honours (total of 120 credits; two areas of specialization)
- Ordinary (total of 90 credits; one area of specialization)

**General regulations **

- All students are required to observe the regulations of the University. Unless otherwise stated, any changes in regulations become effective as announced. This policy is not meant to disadvantage students as they proceed through their studies, including those who have completed a number of courses. It is intended to ensure that their preparation for courses is appropriate and current. Students should consult closely with departments and the Faculty through the advising process.
- All students are normally permitted to enrol in only those courses for which they have successfully completed all designated prerequisites and are normally required to take concurrently all specified corequisites not already completed successfully.
- All degree candidates are required to indicate a choice of degree programme and, where applicable, major subject area(s) upon successful completion of 24 credits. Candidates may change their degree programmes and/or their major subject areas within 10 class days of the beginning of the first term in each session, provided their standing, prescription of studies and timetable arrangements permit the proposed changes, and provided they are supported in writing by the academic advisors concerned. All programme and major subject area changes must be done through the Registrar's Office. Advanced standing assessments should be reviewed after any change in programme/major subject area.
- All candidates for all degrees in Computer Science must successfully complete the following requirements, normally at the 1000-level.

- COSC1020.03, COSC1030.03.
- MATH1090.03, MATH1300.03, MATH1310.03.
- 6 credits from: BIOL1010.06, CHEM1010.06, EATS1010.06, PHYS1010.06, PHYS1410.06.
- at least 3 additional credits from: BIOL1010.06, CHEM1010.06, EATS1010.06, EATS1010.03, EATS1011.03, MATH1025.03, PHYS1010.06, PHYS1070.03, PHYS1410.06.
- 6 credits from each of Humanities and Social Science (no substitutions permitted).

**Ordinary Programme**

All BSc degree candidates in all ordinary programmes must do the following
through registration in courses at York or elsewhere deemed creditable
towards the BSc degree.

1. Satisfy general regulations 2, 3 and 4 in the York University Undergraduate
Calendar (see above for a summary).

2. Present a total of at least 90 passed credits of which

- a minimum of 66 must be earned in Science courses.
- a minimum of 24 must be earned in one major Science subject area.
- a minimum of 18 must be earned in courses at the 3000- or higher level.

3. Successfully complete the programme of study specified for the Ordinary
Programme in Computer Science.

4. Achieve a cumulative COSC grade point average of 4.0 or better as part
of the general prerequisites for 2000-level and 3000-level COSC courses.

5. There is no grade point average requirement to graduate with an ordinary
degree.

**Honours programmes**

All candidates for the BSc degree in all honours programmes must do the
following through registration in courses at York or elsewhere deemed creditable
towards the BSc degree.

- 90 must be earned in Science courses.
- 30 must be earned in one major Science subject area (Specialized Honours programmes only), or 18 in each of two major Science subject areas (Combined Honours programmes only)
- 42 must be earned in courses at the 3000- or higher level.

1. Satisfy regulations 2, 3 and 4 in the University Undergraduate Calendar
(see above for a summary).

2. Present a total of at least 120 passed credits of which a minimum of:

3. Successfully complete the programme of study specified for the declared
Honours Programmes and major subject areas.

4. To **declare** Honours requires successful completion of at least
24 credits with a minimum cumulative credit-weighted grade-point average
of 5.0 (6.0 for SCS stream and Combined Honours with Biology) over all
Science (SC) courses completed.

To **proceed** in each year of an Honours BSc programme requires a minimum
cumulative credit-weighted grade-point average of 5.0 (6.0 for SCS stream
and Combined Honours with Biology) over all Science (SC) courses completed.

To **graduate** in an Honours BSc programme requires successful completion
of all Faculty requirements and departmental required courses and a minimum
cumulative credit-weighted grade-point grade average of 5.0 (6.0 for SCS
stream and Combined Honours with Biology) over all Science (SC) courses
completed.

**Breadth requirement**

We have partitioned our courses into four areas. Students must take at
least one 3000-level course identified as a **Group A** course from
each area. **Group A** courses have **odd course numbers**.

4000-level courses are also partitioned into the same four areas but they
are not further partitioned into groups A and B. Thus, whether the course
number is even or odd has no significance.

The four areas are described in the following.

**Theory** Course numbers COSC31xx.03, COSC41xx.03; topics:
algorithms, data structures and complexity, automata and computability,
program verification, scientific and numerical computing.

**Hardware** Course numbers COSC32xx.03, COSC42xx.03; topics:
digital logic, architecture and data communication networks.

**Software** Course numbers COSC33xx.03, COSC43xx.03; topics:
programming languages, software systems and operating systems.

**Knowledge-Based Computing** Course numbers COSC34xx.03, COSC44xx.03;
topics: artificial intelligence, expert systems, logic programming, databases,
simulation, machine learning, robotics and computer vision.

**Exceptions to Course Numbering**

Service courses at all levels have the second digit 5. These courses do
not satisfy requirements in Computer Science.

Other courses falling outside the course numbering conventions are the
following.

COSC3001.01 -- restricted to SCS stream students

COSC3010.03 -- Special Topics course

COSC4001.06 -- restricted to SCS stream students

COSC4010.03 -- Special Topics course

COSC4080.03 -- Computer Science Project

**Course Requirements and Order of Study
**This section presents a summary of the Department's course requirements.
Detailed requirements are best seen by reading the course checklists for
each of the different programmes. These are to be found at the back of
this calendar.

The indication of first year, second year, etc., indicates the year of study for normal progress.

1000-level first year

- Fall COSC1020.03, MATH1090.03, MATH1300.03
- Winter COSC1030.03, MATH1310.03.
- 15 additional credits satisfying general education, faculty, second major programme, or elective requirements

2000-level second year

- COSC2001.03, COSC2011.03, COSC2021.03
- MATH2090.03
- MATH2221.03 and MATH2320.03. Specialized Honours programme MATH2221.03 or MATH2320.03 all other programmes
- 12 to 15 additional credits satisfying general education, faculty, second major programme, or elective requirements

3000-level third year

- 12 COSC credits at the 3000-level satisfying the breadth requirement including COSC3101.03 for the Specialized Honours programme (except SCS)
- 9 additional COSC credits for the Specialized Honours Programme

3 additional COSC credits at the 3000-level for Combined Honours programmes

6 additional COSC credits at the 3000-level for the Ordinary programme - 9 to 15 credits additional credits satisfying general education, faculty, second major programme, or elective requirements

4000-level fourth year, honours programmes only

- 12 COSC credits at the 4000-level (except when computer science is a minor in a combined B.A. degree which requires only 6 credits at the 4000-level), including one of COSC4111.03 or COSC4101.03 for the Specialized Honours programme (except SCS).
- 6 additional COSC credits at the 3000- or 4000-level Specialized Honours programme (except SCS)
- 12 to 18 additional credits satisfying general education, faculty, second major programme, or elective requirements

[ return to Table of Contents ]

**Prerequisites for Computer
Science Courses**

It is absolutely essential that students fulfill the prerequisites for
courses they wish to take.

There are both **general** prerequisites which are required for all
COSC courses at the specified level and **specific** prerequisites for
each course which are in addition to the general prerequisites. Both types
of prerequisites include computer science courses and mathematics courses,
and in all cases there are grade requirements in the prerequisite courses.
The prerequisites are listed after each course description and summarized
in the following table.

The prerequisites table is useful to determine what courses must be taken
in order to enrol in a particular course, or to determine if you are permitted
to enrol in a course.

Course Title Prerequisite(s)

---------------------------------

**1000-Level**

**General Prerequisites (except 15xx.xx courses)**

You must satisfy one of the following requirements. The latest courses
are considered.

- OAC calculus and one other OAC mathematics (normally finite mathematics, or algebra and geometry) with an average grade of 75% in all OAC mathematics and no grade less than 65%; or
- 6 credits in a university-level mathematics course(s) for math majors with a grade of C+ or better; or
- 6 credits in a university-level mathematics service course(s) (second digit is 5) with a grade of B+ or better; or
- 6 credits in a community college mathematics course(s) with a grade of B+ or better.

COSC1020.03 | Intro. to Computer Science I | General prerequisites |

COSC1030.03 | Intro. to Computer Science II | COSC1020.03; MATH1090.03 |

MATH1090.03 | Introduction to Sets and Logic | One OAC mathematics or AK/MATH1710.06 |

MATH1300.03 | Differential Calculus with Applications | OAC calculus or MATH1500.03 or MATH1515.03 or AK/MATH1710.06 |

MATH1310.03 | Integral Calculus with Applications | MATH1300.03 |

**2000-Level**

**General Prerequisites**

- completed COSC1030.03
- have a cumulative gpa of 4.0 or better for completed computer science courses.

COSC2001.03 | Intro. to Theory of Computation | General prerequisites |

COSC2011.03 | Fundamentals of Data Structures | General prerequisites |

COSC2021.03 | Computer Organization | General prerequisites |

COSC2031.03 | C, Unix and X Window System | General prerequisites |

MATH2090.03 | Intro. to Mathematical Logic (without second digit 5) | MATH1090.03 or any 2000-level MATH course |

MATH2221.03 | Linear Algebra with Applications I | OAC algebra or any university mathematics course. |

MATH2320.03 | Discrete Mathematical Structures | MATH1090.03 or any 2000-level MATH course (without second digit 5). MATH2090.03 is recommended as a prerequisite for COSC majors. |

**3000-Level**

**General Prerequisites (except 35xx.xx courses)**

- completed COSC2011.03, and one of COSC2001.03 or COSC2021.03
- completed MATH1300.03 and MATH1310.03
- completed one of MATH2090.03, MATH2221.03 or MATH2320.03
- have a cumulative gpa of 4.0 or better over all completed computer science courses.

Theory Courses - Group A |
||

COSC3101.03 | Design and Analysis of Algorithms | MATH2320.03 (SCS students may enrol without MATH2320.03 or concurrently with MATH2320.03) |

COSC3111.03 | Intro. to Program Verification | MATH2090.03 |

COSC3121.03 | Intro. to Numerical Computations I | MATH2221.03 |

Theory Courses - Group B |
||

COSC3122.03 | Intro. to Numerical Computations II | COSC3121.03; MATH2270.03 |

Hardware Courses - Group A |
||

COSC3201.03 | Digital Logic Design | COSC2021.03 |

COSC3211.03 | Data Communication | COSC2021.03; MATH2090.03 |

Hardware Courses - Group B |
||

COSC3212.03 | Computer Networks | COSC3211.03 |

Software Courses - Group A |
||

COSC3301.03 | Programming Language Fundamentals | COSC2001.03 |

COSC3311.03 | Software Design | COSC2001.03; MATH2090.03 |

COSC3321.03 | Operating System Fundamentals | COSC2021.03 |

COSC3331.03 | Object-Oriented Programming and Design |

Knowledge-Based Computing - Group A |
||

COSC3401.03 | Intro. to Symbolic Computation | MATH2090.03 |

COSC3411.03 | File Structures and Data Management | COSC2021.03; MATH2090.03 |

Knowledge-Based Computing - Group B |
||

COSC3402.03 | Intro. to Concepts of Artificial Intell. | COSC3401.03; MATH2320.03 |

COSC3408.03 | Simulation of Discrete Systems | MATH2560.03 |

COSC3412.03 | Intro. to Database Management Systems | COSC3411.03 |

COSC3418.03 | Simulation of Continuous Systems | MATH2560.03 |

Other Courses |
||

COSC3001.01 | Org. & Management Seminar in SCS | In 3rd year of SCS stream |

COSC3010.03 | Special Topics in Computer Science | Varies depending on the topic |

**4000-Level
General Prerequisites**

- completed COSC2001.03; COSC2011.03; COSC2021.03
- completed MATH2090.03
- completed at least 12 credits in computer science 3000-level courses.
- a cumulative gpa of 5.0 or better over all completed computer science courses

Theory Courses |
||

COSC4101.03 | Advanced Data Structures | COSC3101.03; MATH2320.03 |

COSC4111.03 | Automata and Computability | COSC3101.03; MATH2320.03 |

Hardware Courses |
||

COSC4201.03 | Computer Architecture | COSC3201.03; COSC3321.03 |

COSC4211.03 | Performance Eval. of Computer Systems | COSC3211.03; COSC3408.03 |

COSC4242.03 | Signals and Systems | COSC3121.03 or MATH3241.03 |

Software Courses |
||

COSC4301.03 | Programming Language Design | COSC3301.03 |

COSC4302.03 | Language Processors | COSC3301.03 |

COSC4311.03 | System Development | COSC3311.03; COSC3111.03 or COSC3321.03 |

COSC4321.03 | Operating System Design | COSC3321.03 |

COSC4331.03 | Computer Graphics | MATH2221.03 |

COSC4341.03 | Interactive System Design | |

COSC4351.03 | Real-Time Systems Theory | COSC3111.03 or COSC3311.03 or COSC3321.03 |

COSC4352.03 | Real-Time Systems Practice | COSC3301.03 or COSC3311.03 or COSC3321.03 |

COSC4361.03 | Human-Computer Communication |

Knowledge-Based Computing |
||

COSC4401.03 | Artificial Intelligence | COSC3402.03 |

COSC4402.03 | Logic Programming | COSC3401.03; COSC3101.03 or COSC3111.03 |

COSC4411.03 | Database Management Systems | COSC3412.03 |

COSC4421.03 | Introduction to Robotics | MATH2221.03 |

COSC4422.03 | Computer Vision | COSC3121.03 |

Other Courses |
||

COSC4001.06 | Space and Comm. Sciences Workshop | 3000-level of SCS core |

COSC4080.03 | Computer Science Project | permission of course director, 36 COSC credits |

COSC4010.03 | Special Topics in Computer Science | Varies depending on the topic |

[ return to Table of Contents ]

Checklist^{1}

*Computer Science Requirements* (Credit Count)

1000-level

COSC1020.03, MATH1090.03, MATH1300.03 (9 )

COSC1030.03, MATH1310.03 (6)

2000-level

COSC2001.03, COSC2011.03, COSC2021.03 (9 )

MATH2090.03 (3 )

MATH2221.03 or MATH2320.03 (3)

3000-level One Group A course (odd numbered) from each area

Theory COSC31_____.03, Software COSC33____.03 (6)

Hardware COSC32_____.03, Knowledge COSC34____.03 (6)

Two more courses COSC3______.03, COSC3______.03 (6)

*Faculty Requirements*

Any level SOSC__________.06, HUMA__________.06 (12)

One of

BIOL1010.06, CHEM1010.06, EATS1010.06, PHYS1010.06^{2}, PHYS1410.06
(6)

At least 3 additional credits from the following

BIOL1010.06, CHEM1010.06, EATS1010.06, EATS1010.03, EATS1011.03, (3)

MATH1025.03, PHYS1010.06^{2}, PHYS1070.03, PHYS1410.06

9 more SC credits^{3} _________________ _________________ _________________
(9)

12 more credits _________________ _________________ (6)

_________________ _________________ (6)

Total credits (90)

^{1 }The Departmental general prerequisite cumulative grade
point average over all COSC courses must be met to proceed in the programme.There
is no grade point average requirement to graduate with an ordinary degree.

^{2} PHYS1010.06 is taken, then you must take as corequisites
MATH1013.03, MATH1014.03 and MATH1025.03. These courses are considered
equivalent to MATH1300.03, MATH1310.03 and MATH2221.03 for Computer Science
requirements.

^{3} If MATH1025.03 is taken, then 12 credits are required in
this category, as MATH1025.03 is considered equivalent to MATH2221.03 for
Computer Science requirements and is counted twice in the checklist.

[ return to Table of Contents ]

**BSc Specialized Honours
Degree**

Checklist^{1}

*Computer Science Requirements* (Credit Count)

1000-level

COSC1020.03, MATH1090.03, MATH1300.03 (9)

COSC1030.03, MATH1310.03 (6)

2000-level

COSC2001.03, COSC2011.03, COSC2021.03 (9)

MATH2090.03, MATH2221.03, MATH2320.03 (9)

3000-level One Group A course (odd numbered) from each area

Theory COSC3101.03, Software COSC33____.03 (6)

Hardware COSC32_____.03, Knowledge COSC34____.03 (6)

Three more courses COSC3______.03, COSC3______.03, COSC3______.03 (9)

4000-level

Four courses COSC4101.03 **or** COSC4111.03, COSC4______.03 (6)

COSC4______.03, COSC4______.03 (6)

Two courses (3000- or 4000-level) COSC________.03, COSC________.03 (6)

*Faculty Requirements*

Any level SOSC__________.06, HUMA__________.06 (12)

One of

BIOL1010.06, CHEM1010.06, EATS1010.06, PHYS1010.06^{2}, PHYS1410.06
(6)

At least 3 additional credits from the following

BIOL1010.06, CHEM1010.06, EATS1010.06, EATS1010.03, EATS1011.03, (3)

MATH1025.03, PHYS1010.06^{2}, PHYS1070.03, PHYS1410.06

9 more SC credits^{3 }_________________ _________________ _________________
(9)

18 more credits _________________ _________________ _________________ (9)

_________________ _________________ _________________ (9)

Total credits (120 )

^{1} A cumulative grade point average of 5.0 over all SC courses
is required to proceed in each year of the programme and to graduate. In
addition, the Departmental general prerequisite cumulative grade point
average over all COSC courses must be met to proceed in the programme.

^{2} PHYS1010.06 is taken, then you must take as corequisites
MATH1013.03, MATH1014.03 and MATH1025.03. These courses are considered
equivalent to MATH1300.03, MATH1310.03 and MATH2221.03 for Computer Science
requirements.

^{3} At least three credits in total from the categories "9
more SC credits" and "18 more credits" must be at the 3000-
or 4000- level (for an overall total of 42 credits at 3000- or 4000-level).
If MATH1025.03 is taken, then 12 credits are required in this category,
as MATH1025.03 is considered equivalent to MATH2221.03 for Computer Science
requirements and is counted twice in the checklist.

[ return to Table of Contents ]

Checklist^{1}

*Computer Science Requirements* (Credit Count)

1000-level

COSC1020.03, MATH1090.03, MATH1300.03 (9)

COSC1030.03, MATH1310.03 (6)

2000-level

COSC2001.03, COSC2011.03, COSC2021.03 (9)

MATH2090.03 (3)

MATH2221.03 or MATH2320.03 (3)

3000-level One Group A course (odd numbered) from each area

Theory COSC31_____.03, Software COSC33____.03 (6)

Hardware COSC32_____.03, Knowledge COSC34____.03 (6)

One more course COSC3______.03 (3)

4000-level

Four courses COSC4______.03, COSC4______.03 (6)

COSC4______.03, COSC4______.03 (6)

*Faculty Requirements*

Any level SOSC__________.06, HUMA__________.06 (12)

One of

BIOL1010.06, CHEM1010.06, EATS1010.06, PHYS1010.06^{3}, PHYS1410.06
(6)

At least 3 additional credits from the following^{2}

BIOL1010.06, CHEM1010.06, EATS1010.06, EATS1010.03, EATS1011.03 (3)

MATH1025.03, PHYS1010.06^{3}, PHYS1070.03, PHYS1410.06 (3)

*Other Honours Subject and Other Courses*

42 more credits^{4} _______________ _______________ _______________
_______________ (42)

_______________ _______________ _______________ _______________ _______________

_______________ _______________ _______________ _______________ _______________

Total credits (120)

^{1} A cumulative grade point average of 5.0 over all SC courses
(6.0 for Combined Honours with Biology) is required to proceed in each
year of the programme and to graduate. In addition, the Departmental general
prerequisite cumulative grade point average over all COSC courses must
be met to proceed in the programme.

^{2} These are the minimum requirements for Computer Science;
the choice may be determined by the requirements of the second major.

^{3} PHYS1010.06 is taken, then you must take as corequisites
MATH1013.03, MATH1014.03 and MATH1025.03. These courses are considered
equivalent to MATH1300.03, MATH1310.03 and MATH2221.03 for Computer Science
requirements.

^{4} If MATH1025.03 is taken, then 45 credits are required in
this category, as MATH1025.03 is considered equivalent to MATH2221.03 for
Computer Science requirements and is counted twice in the checklist.

[ return to Table of Contents ]

**BSc Specialized Honours Degree, SCS
Stream**

Checklist^{1}

*Computer Science Requirements* (Credit Count)

1000-level

COSC1020.03, MATH1090.03, MATH1013.03 (9)

COSC1030.03, MATH1014.03, MATH1025.03 (9)

PHYS1010.06 (6)

CHEM1010.06 **or** EATS1010.06 (6)

2000-level

COSC2001.03, COSC2011.03, COSC2021.03 (9)

MATH2015.03, MATH2090.03, MATH2270.03 (9)

PHYS2020.03, PHYS2040.03, PHYS2211.01 (7)

One of PHYS2010.03 **or** EATS2470.04 (3 or 4)

One of CHEM2050.03 **or** COSC2031.03 **or** EATS2010.03, (3)

**or** EATS2030.03 **or** PHYS1070.03 **or** PHYS2060.03

3000-level

COSC3121.03, COSC3211.03, COSC3321.03 (9)

COSC/EATS/PHYS/3001.01, EATS/PHYS3280.03 (4)

PHYS3050.03, PHYS3250.03 (6)

One of COSC3311.03 **or** COSC3331.03 **or** COSC3401.03 (3)

One of any 3000-level COSC course not already taken (without second digit
5) (3)

**or **EATS3020.03 **or** EATS3030.03 **or** MATH3271.03

**or** MATH3410.03 **or** PHYS3020.03 **or** PHYS3070.03

**or** PHYS3080.03 **or** PHYS3150.03 **or **PHYS4120.03 **or**
other approved courses

4000-level

COSC4001.06 (6)

One of COSC4351.03 **or **COSC4352.03 **or** PHYS4250.03 (3)

One of COSC4301.03 **or** COSC4302.03 **or** COSC4321.03 **or**
COSC4341.03 (3)

Two of COSC4242.03 **or** COSC4331.03 **or **COSC4421.03 **or **COSC4422.03
(6)

Two of 4000-level COSC courses not already taken as listed above (6)

**or **EATS4220.03 **or** EATS4230.03 **or** PHYS3070.03

**or** PHYS4060.03 **or** PHYS4110.03 **or** PHYS4270.03 **or**
PHYS4450.03

*Faculty Requirements*

Any level SOSC__________.06, HUMA__________.06 (12)

Total credits (122 or 123)

^{1} A cumulative grade point average of 6.0 over all SC courses
is required to proceed in each year of the programme and to graduate. In
addition, the Departmental general prerequisite cumulative grade point
average over all COSC courses must be met to proceed in the programme.

[ return to Table of Contents ]

Checklist^{1}

*Computer Science Requirements* (Course Count)

1000-level

COSC1020.03, MATH1090.03, MATH1300.03 (1.5)

COSC1030.03, MATH1310.03 (1.0)

2000-level

COSC2001.03, COSC2011.03, COSC2021.03 (1.5)

MATH2090.03 (0.5)

MATH2221.03 or MATH2320.03 (0.5)

3000-level

One Group A half course (odd numbered) from each area

Theory COSC31_____.03, Software COSC33____.03 (1.0)

Hardware COSC32_____.03, Knowledge COSC34____.03 (1.0)

Two more half courses COSC3______.03, COSC3______.03 (1.0)

*Faculty Requirements*

General education

1000-level NATS__________.06 (1.0)

One of HUMA__________.06 **or** SOSC__________.06 (1.0)

2000-level (should satisfy breadth)

One of HUMA__________.06 **or **SOSC__________.06 (1.0)

Extra breadth course required if breadth not satisfied above _________________

Electives

3 courses outside COSC requirements

_________________ _________________ _________________ (3.0)

One more course _________________ (1.0)

Total Courses (15.0)

^{1} A cumulative grade point average of 4.0 over all courses
and over all COSC courses is required to graduate. In addition, the Departmental
general prerequisite cumulative grade point average over all COSC courses
must be met to proceed in the programme.

[ return to Table of Contents ]

Checklist^{1}

*Computer Science Requirements* (Course Count)

1000-level

COSC1020.03, MATH1090.03, MATH1300.03 (1.5)

COSC1030.03, MATH1310.03 (1.0)

2000-level

COSC2001.03, COSC2011.0,3 COSC2021.03 (1.5)

MATH2090.03 (0.5)

MATH2221.03 **or** MATH2320.03 (0.5)

3000-level

One Group A half course (odd numbered) from each area

Theory COSC31_____.03, Software COSC33____.03 (1.0)

Hardware COSC32_____.03, Knowledge COSC34____.03 (1.0)

One more half course COSC3______.03 (0.5)

4000-level

Four half courses COSC4______.03, COSC4______.03 (1.0)

COSC4______.03, COSC4______.03 (1.0)

*Faculty Requirements*

General education

1000-level NATS__________.06 (1.0)

One of HUMA__________.06 **or** SOSC__________.06 (1.0)

2000-level (should satisfy breadth)

One of HUMA__________.06 **or **SOSC__________.06 (1.0)

Extra breadth course required if breadth not satisfied above _________________

Electives

3 courses outside COSC requirements

_________________ _________________ _________________ (3.0)

Upper level

3000-level half course _________________ 4000-level full _________________ (1.5)

Additional courses _________________ _________________ _________________ (3.0)

_________________ _________________ _________________

Total Courses (20.0)

^{1} A cumulative grade point average of 5.0 over all courses
is required to proceed in each year of the programme. In addition, the
Departmental general prerequisite cumulative grade point average over all
COSC courses must be met to proceed in the programme. To graduate requires
a cumulative grade point average of 5.0 over all courses and all COSC courses.

[ return to Table of Contents ]

Checklist^{1}

*Computer Science Requirements* (Course Count)

1000-level

COSC1020.03, MATH1090.03, MATH1300.03 (1.5)

COSC1030.03, MATH1310.03 (1.0)

2000-level

COSC2001.03, COSC2011.03, COSC2021.03 (1.5)

MATH2090.03 (0.5)

MATH2221.03 **or** MATH2320.03 (0.5)

3000-level

One Group A half course (odd numbered) from each area

Theory COSC31_____.03, Software COSC33____.03 (1.0)

Hardware COSC32_____.03, Knowledge COSC34____.03 (1.0)

One more half course COSC3______.03 (0.5)

4000-level

Two half courses COSC4______.03, COSC4______.03 (1.0)

*Faculty Requirements*

General education

1000-level NATS__________.06 (1.0)

One of HUMA__________.06 **or** SOSC__________.06 (1.0)

2000-level (should satisfy breadth)

One of HUMA__________.06 **or **SOSC__________.06 (1.0)

Extra breadth course required if breadth not satisfied above _________________

*Honours Major subject*

3000-level One course (satisfy upper level requirement) _________________ (1.0)

4000-level Two courses (satisfy upper level requirement)

_________________ _________________ (2.0)

Additional courses _________________ _________________ _________________ (5.5)

_________________ _________________ _________________

_________________ _________________ _________________

_________________ _________________

Total Courses (20.0)

^{1} A cumulative grade point average of 5.0 over all courses
is required to proceed in each year of the programme. In addition, the
Departmental general prerequisite cumulative grade point average over all
COSC courses must be met to proceed in the programme. To graduate requires
a cumulative grade point average of 5.0 over all courses and all COSC courses.

[ return to Table of Contents ]

Checklist^{1}

*Computer Science Requirements* (Course Count)

1000-level

COSC1020.03, MATH1090.03, MATH1300.03 (1.5)

COSC1030.03, MATH1310.03 (1.0)

2000-level

COSC2001.03, COSC2011.03, COSC2021.03 (1.5)

MATH2090.03, MATH2221.03, MATH2320.03 (1.5)

3000-level

One Group A half course (odd numbered) from each area

Theory COSC3101.03, Software COSC33____.03 (1.0)

Hardware COSC32_____.03, Knowledge COSC34____.03 (1.0)

Three more courses COSC3______.03, COSC3______.03, COSC3______.03 (1.5)

4000-level

Four courses COSC4101.03 **or** COSC4111.03, COSC4______.03 (1.0)

COSC4______.03, COSC4______.03 (1.0)

Two courses (3000- or 4000-level) COSC________.03, COSC________.03 (1.0)

*Faculty Requirements*

General education

1000-level NATS__________.06 (1.0)

One of HUMA__________.06 **or** SOSC__________.06 (1.0)

2000-level (should satisfy breadth)

One of HUMA__________.06 **or** SOSC__________.06 (1.0)

Extra breadth course required if breadth not satisfied above _________________

Electives

3 courses outside COSC requirements

_________________ _________________ _________________ (3.0)

Upper level 4000-level^{2} _________________ (1.0)

Additional courses _________________ _________________ (1.0)

Total Courses (20.0)

^{1} A cumulative grade point average of 5.0 over all courses
is required to proceed in each year of the programme. In addition, the
Departmental general prerequisite cumulative grade point average over all
COSC courses must be met to proceed in the programme. To graduate requires
a cumulative grade point average of 5.0 over all courses and all COSC courses.

^{2} Must be 4000-level only if you have less than 3.0 computer
science courses at the 4000-level. Otherwise the course can be at any level.

[ return to Table of Contents ]

**BA Honours Double Major Degree**

Checklist^{1}

*Computer Science Requirements* (Course Count)

1000-level

COSC1020.03, MATH1090.03, MATH1300.03 (1.5)

COSC1030.03, MATH1310.03 (1.0)

2000-level

COSC2001.03, COSC2011.03, COSC2021.03 (1.5)

MATH2090.03 (0.5)

MATH2221.03 **or** MATH2320.03 (0.5)

3000-level

One Group A half course (odd numbered) from each area

Theory COSC31_____.03, Software COSC33____.03 (1.0)

Hardware COSC32_____.03, Knowledge COSC34____.03 (1.0)

One more half course COSC3______.03 (0.5)

4000-level

Four half courses COSC4______.03, COSC4______.03 (1.0)

COSC4______.03, COSC4______.03 (1.0)

*Faculty Requirements*

General education

1000-level NATS__________.06 (1.0)

One of HUMA__________.06 **or** SOSC__________.06 (1.0)

2000-level (should satisfy breadth)

One of HUMA__________.06 **or** SOSC__________.06 (1.0)

Extra breadth course required if breadth not satisfied above _________________

*Other Honours Major Subject and Other Courses*

4000-level Two courses (satisfy upper level requirement) _________________ _________________ (2.0)

Additional courses _________________ _________________ _________________ (5.5)

_________________ _________________ _________________

_________________ _________________ _________________

_________________ _________________

Total Courses (20.0)

^{1} A cumulative grade point average of 5.0 over all courses
is required to proceed in each year of the programme. In addition, the
Departmental general prerequisite cumulative grade point average over all
COSC courses must be met to proceed in the programme. To graduate requires
a cumulative grade point average of 5.0 over all courses and all COSC courses.

[ return to Table of Contents ]