Department of Computer Science

UNDERGRADUATE SUPPLEMENTAL CALENDAR 1997-98

Table of Contents

Preface

The Department

Course Descriptions

Degree Requirements


Preface

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.

The Department

Office Hours

Mailing Address

Computer Science Home Page

York University Home Page

Chair

Director of Undergraduate Studies


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

Instructors

Technical Support

Administrative Support

[ return to Table of Contents ]


CSAC Accreditation

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:

The report of the accreditation committee notes about the department:


Access to Courses

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:

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.


Programmes Offered

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.

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

Mark A. Levy Computer Science Award

Nancy Waisbord Memorial Award

Other Awards

Prestigious Awards

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


Academic Policies

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:

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 within 14 days of the grade being made available.
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 within 14 days of the decision of the instructor.
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 within 14 days of the decision of the course director.

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, within 21 days of receiving notification of the grade.
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

A (8) Excellent

B+ (7) Very Good

B (6) Good

C+ (5) Competent

C (4) Fairly Competent

D+ (3) Passing

D (2) Barely Passing

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.

1000-Level

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:

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.

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.

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.

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:

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

  1. 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.
  2. 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.
  3. 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.
  4. 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:

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.

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.

Texts: t.b.a.

Suggested reading:

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.

Texts: t.b.a.

Suggested readings:

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.

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.

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

Texts:

Suggested readings:

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.

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:

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.

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.

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.

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.

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

Suggested readings:

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:

Texts:

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:

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.

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.

Texts:

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.

Texts:

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.

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.

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.

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.

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.

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.

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.

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.

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:

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 ]


Required Mathematics Courses

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 ]


Degree Requirements

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.

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.

  1. One 1000-level course, in either the Division of Humanities or the Division of Social Science ­ to be taken within the first four courses.
  2. One 1000-level course in the Division of Natural Science ­ to be taken within the first seven courses.
  3. 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.
  4. Breadth requirement ­ to be taken before graduation; at least one course from each of the following areas.

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.

General regulations

  1. 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.
  2. 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.
  3. 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.
  4. All candidates for all degrees in Computer Science must successfully complete the following requirements, normally at the 1000-level.

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.

    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.

Computer Science Requirements

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.
Note: the Specialized Honours Space and Communication Sciences Stream has exceptions from the general requirements; the exceptions are noted. The course requirements of the SCS stream are described in the section on Programme Checklists.
The indication of first year, second year, etc., indicates the year of study for normal progress.

1000-level ­ first year

2000-level ­ second year

3000-level ­ third year

4000-level ­ fourth year, honours programmes only

[ return to Table of Contents ]


Programme Checklists

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.

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

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)

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

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 ]


BSc Ordinary Degree

Checklist1

Computer Science Requirements (Credit Count)

1000-level

2000-level

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

Faculty Requirements

9 more SC credits3 _________________ _________________ _________________ (9)

12 more credits _________________ _________________ (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

Checklist1

Computer Science Requirements (Credit Count)

1000-level

2000-level

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

4000-level

Faculty Requirements

9 more SC credits3 _________________ _________________ _________________ (9)

18 more credits _________________ _________________ _________________ (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 ]


BSc Combined Honours Degree

Checklist1

Computer Science Requirements (Credit Count)

1000-level

2000-level

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

4000-level

Faculty Requirements

Other Honours Subject and Other Courses

42 more credits4 _______________ _______________ _______________ _______________ (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

Checklist1

Computer Science Requirements (Credit Count)

1000-level

2000-level

3000-level

4000-level

Faculty Requirements

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 ]


BA Ordinary Degree

Checklist1

Computer Science Requirements (Course Count)

1000-level

2000-level

3000-level

Faculty Requirements

General education

Electives

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 ]


BA Honours Major Degree

Checklist1

Computer Science Requirements (Course Count)

1000-level

2000-level

3000-level

4000-level

Faculty Requirements

General education

Electives

Upper level

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 ]


BA Honours Minor Degree

Checklist1

Computer Science Requirements (Course Count)

1000-level

2000-level

3000-level

4000-level

Faculty Requirements

General education

Honours Major subject

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 ]


BA Specialized Honours Degree

Checklist1

Computer Science Requirements (Course Count)

1000-level

2000-level

3000-level

4000-level

Faculty Requirements

General education

Electives

Upper level 4000-level2 _________________ (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

Checklist1

Computer Science Requirements (Course Count)

1000-level

2000-level

3000-level

4000-level

Faculty Requirements

General education

Other Honours Major Subject and Other Courses

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 ]