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, 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. In BA degrees only, the area of primary
concentration is known as the "Major" and an area of secondary concentration
(if any) is known as the "Minor". 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.

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

**Out of department courses:** 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 - here defined to be all 1000- and 2000-level Computer Science courses,
3000-level Computer Science courses satisfying the breadth requirement, and for
Honours programmes, any required 3000- and 4000-level Computer Science courses
- and 12 credits in total.

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

* **Specialized Honours** (total of 20 courses; one area of
specialization)

* **Major **(total of 20 courses; one area of specialization)

* **Double Major** (total of 20 courses; two areas of specialization)

* **Minor **(total of 20 courses; two areas of specialization; requires a
major in another area)

* **Ordinary **(total of 15 courses; one area of specialization)

**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[1] - to be taken
before graduation; at least one course from** each **of the following
areas.

**Area I Area II**

Classical Studies Anthropology

(Greek or Latin) Economics

English Geography

French Studies Political Science

History Psychology

Humanities Social Science

Languages, Literatures Sociology

and Linguistics

Philosophy

**Requirements by Programme Type**

**Specialized Honours**

A minimum of 20 courses satisfying the following.

1 General education.

2 Major courses as defined by the specific programme; at least 9 courses.

3 Elective courses: at least 3.

4 Upper-level courses: at least 6 courses of which at least 3, including at least 2 in the major, must be at the 4000-level.

5 At least 10 of the 20 courses, including at least 5 in the major, must be in Faculty.

6 Achieve and maintain a satisfactory academic standing to enter, proceed and graduate.

7 Graduation requires a grade point average of 5.0 overall** and **a grade
point average of 5.0 over all completed computer science courses.

**Honours major**

A minimum of 20 courses satisfying the following.

1 General education.

2 Major courses as defined by the specific programme; at least 7 courses.

3 Elective courses: at least 3.

4 Upper-level courses: at least 6 courses of which at least 3, including at least 2 in the major, must be at the 4000-level.

5 At least 10 of the 20 courses, including at least 4 in the major, must be in Faculty.

6 Achieve and maintain a satisfactory academic standing to enter, proceed and graduate.

7 Graduation requires a grade point average of 5.0 overall** and **a grade
point average of 5.0 over all completed computer science courses.

**Honours major/minor**

A minimum of 20 courses satisfying the following.

1 General education.

2 Major/minor courses as defined by the specific programme; at least 7 courses in the major; at least 5 courses in the minor.

3 Elective courses: none are required.

4 Upper-level courses: at least 6 courses of which at least 3, including at least 2 in the major and 1 in the minor, must be at the 4000-level.

5 At least 10 of the 20 courses, including at least 4 in the major and 3 in the minor (except where the minor is in a Fine Arts subject or Environmental Studies), must be in Faculty.

6 Achieve and maintain a satisfactory academic standing to enter, proceed and graduate.

7 Graduation requires a grade point average of 5.0 overall** and **a grade
point average of 5.0 over all completed computer science courses.

**Honours double major (unlinked)**

A minimum of 20 courses satisfying the following.

1 General education.

2 Major/minor courses as defined by the specific programme; at least 7 courses in each major.

3 Elective courses: none are required.

4 Upper-level courses: at least 6 courses of which at least 3, including at least 2 in each major, must be at the 4000-level.

5 At least 10 of the 20 courses, including at least 4 in each major (except where the minor is in a Fine Arts subject or Environmental Studies), must be in Faculty.

6 Achieve and maintain a satisfactory academic standing to enter, proceed and graduate.

** and **a grade
point average of 5.0 over all completed computer science courses.

**Honours double major (linked)**

A minimum of 20 courses satisfying the following. Computer Science may be linked with the interdisciplinary studies programmes Mass Communications and Women's Studies.

1 General education.

2 Major/minor courses as defined by the specific programme; at least 6 courses in each major.

3 Elective courses: none are required.

4 Upper-level courses: at least 6 courses of which at least 3, including at least 1 in each major, must be at the 4000-level.

5 At least 10 of the 20 courses, including at least 3 in each major, must be in Faculty.

6 Achieve and maintain a satisfactory academic standing to enter, proceed and graduate.

** and **a grade
point average of 5.0 over all completed computer science courses.

**Ordinary**

A minimum of 15 courses satisfying the following.

1 General education.

2 Major courses as defined by the specific programme; at least 5 courses.

3 Elective courses: at least 3.

4 Upper-level courses: at least 3 courses of which at least 2 must be in the major.

5 At least 8 of the 15 courses, including at least 3 in the major, must be in Faculty.

6 Achieve and maintain a satisfactory academic standing to enter, proceed and graduate.

7 Graduation requires a grade point average of 4.0 overall** and **a grade
point average of 4.0 over all completed computer science courses.

* **Specialized Honours** (total of 120 credits; one area of
specialization)

* **Specialized Honours Space and Communications Stream **(total of 122
credits; one area of specialization)

* **Combined Honours** (total of 120 credits; two areas of specialization)

* **Ordinary **(total of 90 credits; one area of specialization)

**General regulations**

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. Students admitted to the Faculty prior to September 1995 are strongly advised to follow current regulations, but may elect to graduate under the regulations of the year in which they were admitted to the University.

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. Prior to enrollment and registration all students must have their study lists signed by the appropriate academic advisors.

Enrollment in courses can be done during the first 10 class days without special permission from the course director.

Courses may be dropped up to approximately two thirds of the way through a course without a grade being recorded. After the drop date a final grade is recorded. Consult the Lecture Schedule for the drop dates for courses.

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.

* COSC1020.03, COSC1030.03.

* MATH1090.03, MATH1300.03, MATH1310.03.

* 6 credits from: BIOL1010.06, CHEM1010.06, EATS1010.06, PHYS1010.06, PHYS1410.06.

* at least 3 additional credits from: BIOL1010.06, CHEM1010.06, EATS1010.06, EATS1010.03, EATS1011.03, MATH1025.03, PHYS1010.06, PHYS1070.03, PHYS1410.06.

* 6 credits from each of Humanities and Social Science (no substitutions permitted).

**Ordinary Programme**

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

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

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

* a minimum of 66 must be earned in Science courses.

* a minimum of 24 must be earned in one major Science subject area.

* a minimum of 18 must be earned in courses at the 3000- or higher level.

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

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

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

**Honours programmes**

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

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

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

* 90 must be earned in Science courses.

* 30 must be earned in one major Science subject area (Specialized Honours programmes only), or 18 in each of two major Science subject areas (Combined Honours programmes only)

* 42 must be earned in courses at the 3000- or higher level.

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

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

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

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

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

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

**Mathematics Courses**

Mathematics courses are required for all programmes. Mathematics courses in calculus and algebra are universally recognized as developing the analytic problem solving skills required in computer science and courses in sets, logic and discrete mathematics are directly applicable.

At the 1000-level MATH1090.03, *Introduction to Sets and Logic *,
(formerly MATH1120.03), MATH1300.03, *Differential Calculus with
Applications*, and MATH1310.03, *Integral Calculus with Applications*,
are required. At the 2000-level MATH2090.03, *Introduction to Mathematical
Logic* is required for all programmes. For specialized honours both
MATH2221.03, *Linear Algebra with Applications I*, and MATH2320.03,
*Discrete Mathematical Structures* are required. For other programmes
only one of MATH2221.03 and MATH2320.03 is required.

**Note:** In addition to the required mathematics courses many upper year
computer science courses make use of concepts from probability and statistics.
We recommend MATH2030.03, or MATH2560.03 and MATH2570.03 as preparation for
such courses.

**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

* Fall - COSC1020.03, MATH1090.03, MATH1300.03

* Winter - COSC1030.03, MATH1310.03.

* 15 additional credits satisfying general education, faculty, second major programme, or elective requirements

*2000-level *- second year

* COSC2001.03, COSC2011.03, COSC2021.03

* MATH2090.03

* MATH2221.03 and MATH2320.03. Specialized Honours programme

MATH2221.03 or MATH2320.03 all other programmes

* 12 to 15 additional credits satisfying general education, faculty, second major programme, or elective requirements

*3000-level* - third year

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

* 9 additional COSC credits for the Specialized Honours programme

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

6 additional COSC credits at the 3000-level for the Ordinary programme

* 9 to 15 credits additional credits satisfying general education, faculty, second major programme, or elective requirements

*4000-level* - fourth year, honours programmes only

* 12 COSC credits at the 4000-level (except when computer science is a minor in a combined B.A. degree which requires only 6 credits at the 4000-level), including one of COSC4111.03 or COSC4101.03 for the Specialized Honours programme (except SCS).

* 6 additional COSC credits at the 3000- or 4000-level - Specialized Honours programme (except SCS)

* 12 to 18 additional credits satisfying general education, faculty, second major programme, or elective requirements

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 would enrol as a special undergraduate student in computer science. If there is space in the courses you need and you satisfy all the prerequisites, the Undergraduate Director will write a letter admitting you to those courses. You take this letter to the Admissions Office who will see if you satisfy general University entrance requirements for special students. There is a university deadline of June 1 to apply as a special student, so you should consider beginning your application in March or April.

If you need more than three courses, then you will have to apply to the Faculty of Pure and Applied Science to obtain the specialized honours degree. In this case you receive credit for courses you have taken which satisfy the requirements of the specialized honours degree and enrol as a full time student in the courses you have yet to complete. This route may take more than one year, depending upon what is missing.

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

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

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

**Course Title Prerequisite(s)**

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

__1000-Level__

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

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

* OAC calculus and one other OAC mathematics (normally finite mathematics, or algebra and geometry) with an average grade of 75% in all OAC mathematics and no grade less than 65%; or

* 6 credits in a university-level mathematics course(s) for math majors with a grade of C+ or better; or

* 6 credits in a university-level mathematics service course(s) (second digit is 5) with a grade of B+ or better; or

* 6 credits in a community college mathematics course(s) with a grade of B+ or better.

COSC1020.03

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

MATH1090.03 Introduction to Sets and Logic One OAC mathematics

MATH1300.03 Differential Calculus with Applications OAC calculus or MATH1500.03

MATH1310.03 Integral Calculus with Applications MATH1300.03

__2000-Level__

**General Prerequisites:**

*** **completed COSC1030.03

* have a cumulative gpa of 4.0 or better for completed computer science courses.

COSC2001.03 Intro. to Theory of Computation General prerequisites

COSC2011.03 Fundamentals of Data Structures General prerequisites

COSC2021.03 Computer Organization General prerequisites

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

MATH2090.03 Intro. to Mathematical Logic MATH1090.03, or any 2000-level

MATH courses (without second digit 5)

MATH2221.03 Linear Algebra with Applications I MATH1505.03 or MATH1540.03 or

MATH1550.06; or pre- or corequisite MATH1000.03 or MATH1013.03 or

MATH1300.03

MATH2320.03 Discrete Mathematical Structures MATH1090.03, or any 2000-level

MATH courses (without second digit 5)

director. MATH2090.03 is recommended as a

prerequisite for COSC majors.

__3000-Level__

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

* completed COSC2011.03, and one of COSC2001.03 or COSC2021.03

* completed MATH1300.03 and MATH1310.03

* completed one of MATH2090.03, MATH2221.03 or MATH2320.03

* have a cumulative gpa of 4.0 or better over all completed computer science courses.

**Theory Courses - Group A**

COSC3101.03 Design and Analysis of Algorithms MATH2320.03 (SCS students may enrol without

MATH2320.03 or concurrently with

MATH2320.03)

COSC3111.03 Intro. to Program Verification MATH2090.03

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

**Theory Courses - Group B**

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

**Hardware Courses - Group A**

COSC3201.03 Digital Logic Design COSC2021.03

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

**Hardware Courses - Group B**

COSC3212.03 Computer Networks COSC3211.03

**Software Courses - Group A**

COSC3301.03 Programming Language Fundamentals COSC2001.03

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

COSC3321.03 Operating System Fundamentals COSC2021.03

COSC3331.03 Object-Oriented Programming and Design General prerequisites

**Knowledge-Based Computing - Group A**

COSC3401.03 Intro. to Symbolic Computation MATH2090.03

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

**Knowledge-Based Computing - Group B**

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

COSC3408.03 Simulation of Discrete Systems MATH2560.03

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

COSC3418.03 Simulation of Continuous Systems MATH2560.03

**Other Courses:**

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

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

__4000-Level__

**General Prerequisites:**

* completed COSC2001.03; COSC2011.03; COSC2021.03

* completed MATH2090.03

* completed at least 12 credits in computer science 3000-level courses.

* a cumulative gpa of 5.0 or better over all completed computer science courses

**Theory Courses**

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

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

**Hardware Courses**

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

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

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

**Software Courses**

COSC4301.03 Programming Language Design COSC3301.03

COSC4302.03 Language Processors COSC3301.03

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

COSC4321.03 Operating System Design COSC3321.03

COSC4331.03 Computer Graphics MATH2221.03

COSC4341.03 Interactive System Design General prerequisites

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 General prerequisites

**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

**Explanation of how cumulative gpa is computed and used in the Departmental
general prerequisites**

1 Completion of an SC/AS/COSC course means a grade has been reported. A course can be successfully completed with a passing grade (D or greater), or unsuccessfully completed with a failing grade (E or F). SC/AS/COSC courses for majors are those not having a second digit 5.

2 GPA computation includes only the most recently reported grade for a course.

3 GPA is computed at the end of every term and applied as prerequisite to the next set of SC/AS/COSC courses for majors in which the student enrols.

4 Students can improve their gpa by repeating courses within faculty rules. Repeating a course requires the permission of the Department.