5.6 School of Computer Science

(Ext. 2990)

For further information, see our World Wide Web page:

http://www.cs.uwindsor.ca/units/cs/welcome.html

5.6.1 OFFICERS OF INSTRUCTION

Professors

Kent, Robert D., B.Sc. (U.B.C.), M.Sc., Ph.D. (Windsor)—1982.

Bandyopadhyay, Subir; B.Sc., B. Tech., M. Tech. (Calcutta), M. Math. (Waterloo), Ph.D. (Calcutta)—1984.

Frost, Richard A.; B.Sc. (Hons.) (London), M.Sc. (Aberdeen), Ph.D. (Strathclyde)—1987. (Director of the School)

Associate Professors

Tsin, Yung H.; B.Sc. (Nanyang), M.Sc. (Calgary), Ph.D. (Alberta)—1985.

Morrissey, Joan; B.Sc.(Hons.), Ph.D. (Dublin)—1989.

Li, Liwu; M.Sc. (Peking), Ph.D. (Alberta)—1991.

Assistant Professors

Toews, Henry; B.Sc., M.Sc., Ph.D. (Windsor)—1981.

Park, Young G.; B.Sc. (Seoul), M.Sc. (K.A.I.S.T.), M.Sc., Ph.D. (N.Y.U.)—1992.

Jaekel, Arunita; B.Engg. (Calcutta), M.A.Sc., Ph.D. (Windsor)—1995.

Adjunct Assistant Professor

Patil, Linganagouda; B.E. (Karnatak), D.I.C. (London), P.Eng.—1990.

5.6.2 SCHOOL REGULATIONS

ADMISSION REQUIREMENTS

For students presenting the OSSD, six OAC credits are required, including English I, Calculus, and Algebra and Geometry. An average of 60% in all Mathematics courses also is required.

Students lacking one or more of the university entrance-level Mathematics courses may be considered for admission.

Possession of the minimum requirements guarantees only that the application will be considered. Candidates may be required to present averages well above the minimum depending upon the number of places available in the program.

ADVANCED STANDING EXAMINATIONS

Students with prior knowledge of the subject matter covered in any Computer Science course may petition the Director for an Advanced Standing Examination.

ENGLISH PROFICIENCY

Students are highly recommended to take English 26-100 (Expository Writing) as students in Computer Science should develop good oral and written communications skills, besides technical proficiency in the basic science.

SELECTION OF COURSES

In selecting courses to meet the requirements of the programs outlined below, the following general regulations also must be observed:

1) No more than fourteen courses at the 100 level may be included.

2) Students not officially registered in a program will not be eligible for a degree in that program.

3) A student registering in a course without having successfully completed the prerequisite course(s) will be required to drop that course unless the permission of the instructor and the School is obtained.

4) If two or more courses cover essentially the same material, only one may be taken for credit.

5) Prior approval of the Director must be obtained before substituting other courses for required ones.

6) Statistics courses other than those specifically required for the degree, or ones for which the required statistics courses are prerequisites, may not be taken for credit.

7) In general, computer courses offered by other departments may not be taken for credit. Neither 60-205 nor 60-206 may be used to satisfy the major requirements of any degree program offered by the School, or in joint programs with Computer Science.

5.6.3 PROGRAMS OF STUDY

The School of Computer Science offers programs leading to the following degrees: Bachelor of Computer Science (Honours), Bachelor of Computer Science (General), B.Sc. (Honours Computer Information Systems), and B.Sc. (Honours Software Development). As well, the Faculty of Science offers a B.Sc. (Honours Mathematics and Computer Science) (see 5.8.2) and a B.Sc. (Honours Physics and Computer Science) (see 5.10.2). With the School's approval, Computer Science may be combined with other honours programs, see 5.3.2 and below.

Bachelor of Computer Science (General)

Total courses: thirty.

Major requirements: twelve courses, including 60-100, 60-102, 60-104, 60-108, 60-212, 60-254, 60-255, 60-265, 60-315, 60-322, and 60-330.

Other requirements:

(a)

62-110 (or 62-113), 62-120, and 65-253;

(b)

one course from each of the Faculties of Arts and Social Science;

(c)

thirteen other courses from any department, school, or faculty, including Computer Science and Business Administration.

RECOMMENDED COURSE SEQUENCE

Level 1: ten courses, including 60-100, 60-102, 60-104, 60-108, 62-110 (or 62-113), and 62-120.

Level 2: ten courses, including 60-212, 60-254, 60-255, 60-265, and 65-253.

Level 3: ten courses, including 60-315, 60-322, and 60-330.

Continuation in Program: To maintain standing in the general program, a student must meet the requirements of the Faculty of Science (see 5.3.1).

Graduation: In order to graduate with the Bachelor of Computer Science (General) degree, a student must obtain a grade of C- or better in each required Computer Science course and a cumulative average of 5.0 or better.

Bachelor of Computer Science (Honours)

Total courses: forty.

Major requirements: twenty-three courses, including 60-100, 60-102, 60-104, 60-108, 60-212, 60-214, 60-231, 60-254, 60-255, 60-265, 60-311 (or 60-393), 60-315, 60-322, 60-330, 60-333, 60-367, 60-440, 60-454, 60-460, 60-470, 60-475, and 60-499 (a 6.0 credit hour course).

Other requirements:

(a)

62-100, 62-110 (or 62-113), 62-120, and 65-253);

(b)

three courses from the Faculties of Arts and Social Science, with at least one from each;

(c)

ten other courses from any department, school, or faculty, including Computer Science.

RECOMMENDED COURSE SEQUENCE

Level 1: ten courses, including 60-100, 60-102, 60-104, 60-108, 62-100, 62-110 (or 62-113), and 62-120.

Level 2: ten courses, including 60-212, 60-214, 60-231, 60-254, 60-255, 60-265, and 65-253.

Level 3: ten courses, including 60-311 (or 60-393), 60-315, 60-322, 60-330, 60-334, and 60-367.

Level 4: ten courses, including 60-440, 60-454, 60-460, 60-470, 60-475, and 60-499 (a 6.0 credit hour course).

Continuation in Program: To maintain standing in the honours program, a student must meet the requirements of the Faculty of Science (see 5.3.2). In addition, a student in the honours program whose average in Computer Science courses is below 8.0 at any time will normally be required to transfer to the general program.

Graduation: In order to graduate with the Bachelor of Computer Science (Honours) degree, a student must obtain:

(a)

a grade of C- or better in each required Computer Science course taken;

(b)

a major average of 8.0 or better;

(c)

a cumulative average of 5.0 or better.

Bachelor of Science (Honours Computer Information Systems)

Total courses: forty.

Major requirements—Computer Science: sixteen courses, including: 60-100, 60-102, 60-104, 60-108, 60-212, 60-254, 60-255, 60-265, 60-315, 60-322, 60-330, 60-333, 60-393, and 60-499 (a 6.0 credit hour course); plus one additional Computer Science course.

Major requirements—Faculty of Business: nine courses, including 70-151, 70-152, 71-140, 72-171, and 74-231, but excluding 73-105, 73-211, 73-220 and 73-320.

Other requirements:

(a)

62-110 (or 62-113), 62-120, and 65-253;

(b)

three courses from Faculties of Arts Social Science, with at least one from each;

(c)

nine additional courses from any department, school, or faculty.

RECOMMENDED COURSE SEQUENCE

Level 1: ten courses, including 60-100, 60-102, 60-104, 60-108, 62-110 (or 62-113), 62-120, 70-151, 71-140, and 72-171.

Level 2: ten courses, including 60-212, 60-254, 60-255, 60-265, 65-253, and 74-231;

Level 3: ten courses, including 60-315, 60-322, 60-330, 60-333, and 60-393.

Level 4: ten courses, including 60-499 (a 6.0 credit hour course).

Continuation in Program: To maintain standing in the Honours Computer Information Systems program, a student must meet the requirements of the Faculty of Science (see 5.3). In addition, a student in the program whose combined average in Computer Science and Business Administration courses is below 8.0 at any time will normally be required to withdraw from the program. Such a student may be eligible to continue on the Bachelor of Computer Science (general) program.

Graduation: In order to graduate with the Bachelor of Science (Honours Computer Information Systems) degree, a student must obtain:

(a)

a grade of C- or better in all required Computer Science or required Business Administration courses taken;

(b)

a major average of 8.0 or better in all Computer Science and Business Administration courses taken;

(c)

a cumulative average of 5.0 or better.

Bachelor of Science (Honours Software Development)

Total courses: forty.

Major requirements—Computer Science: twenty-four courses, including: 60-100, 60-102, 60-104, 60-108, 60-212, 60-214, 60-231, 60-254, 60-255, 60-265, 60-280, 60-311, 60-315, 60-322, 60-330, 60-334, 60-367, 60-380, 60-440, 60-454, 60-475, 60-480, and 60-499 (a 6.0 credit hour course).

Other requirements:

(a)

62-100, 62-110 (or 62-113), 62-120, and 65-253;

(b)

any four of 24-210, 26-140, 34-228, 34-229, 40-222, 46-115, 71-140, or 71-240.

(c)

one further course each from the Faculties of Arts or Social Science;

(d)

six additional courses from any department, school, or faculty, including Computer Science.

RECOMMENDED COURSE SEQUENCE

Level 1: ten courses, including of 60-100, 60-102, 60-104, 60-108, 62-100, 62-110 (or 62-113), and 62-120.

Level 2: ten courses, including 60-212, 60-214, 60-231, 60-254, 60-255, 60-265, and 65-253.

Level 3: ten courses, including 60-311, 60-322, 60-330, 60-334, 60-367, and 60-380.

Level 4: ten courses, including 60-315, 60-440, 60-454, 60-475, 60-480, and 60-499 (a 6.0 credit hour course).

Continuation in Program: As for the B.C.S. (Honours) program (see above).

Graduation: As for the B.C.S. (Honours) program (see above).

Bachelor of Science (Honours Mathematics and Computer Science)

See Department of Mathematics and Statistics, 5.8.2.

Bachelor of Science (Honours Physics and Computer Science)

See Department of Physics, 5.10.2.

Other Combined Honours Programs

For Faculty of Science regulations, see 5.3.2.

Total courses: forty.

Major requirements—Computer Science: fourteen courses, consisting of 60-100, 60-102, 60-104, 60-108, 60-212, 60-214, 60-231, 60-254, 60-255, 60-265, and 60-315; plus three additional Computer Science courses at the 300 level or above.

Major reqirements—Other Subject: as prescribed by that department or school.

Other requirements:

(a)

62-110 (or 62-113), 62-120, and 65-253;

(b)

any additional, non-major requirements as determined by the second department or school;

(c)

additional courses, if necessary, from any department, school, or faculty to a total of forty courses.

Bachelor of Science (General Science)

See Faculty of Science, 5.3.1.

Bachelor of Science (Science, Technology, and Society)

See Faculty of Science, 5.3.1.

Minor in Computer Science

A minor in Computer Science requires credits in the following courses: 60-100, 60-102, 60-104 (or its equivalent), 60-108 (or 60-206), 60-212, and one of 60-254, 60-255, or 60-334. Permission of the School of Computer Science is required for some of these courses and students wishing to take a minor in Computer Science should obtain permission for all such courses from the School before embarking upon the minor.

5.6.4 Co-operative Education Program in Computer Science

The Co-operative Education Program offers students the opportunity to combine their classroom experiences with related work experiences. The Computer Science Co-operative program will help students acquire valuable professional experience in the workplace while they are pursuing their academic careers.

Students who apply and are accepted into the Co-operative Education Program must successfully complete at least three paid work experiences interspersed throughout the four-year honours program. The experience gained while participating in these structured and supervised work placements is viewed as an integral component of the student's educational program.

APPLICATION PROCEDURE

Only students pursuing the following degrees will be eligible for the Co-operative Education program:

B.C.S. in Honours Computer Science;

B.Sc. in Honours Computer Software Development;

B.Sc. in Honours Computer Information Systems.

During the Fall term in Year 2 of their studies, students in the above programs will be invited to apply for the Co-operative Program in the School of Computer Science. Prospective students will have to apply to the office of Co-operative Education and Student Placement using prescribed forms, two letters of reference and a resume. Only selected students will be accepted into the Computer Science Co-operative program. The screening process will take into account the following points:

(a)

academic achievement;

(b)

previous volunteer and paid work experience;

(c)

student's motivation for applying;

(d)

letters of recommendation; and

(e)

performance at an interview.

Decisions regarding admission to the Co-operative Program will be finalized by the Computer Science Co-op Committee in the Winter term of the student's second year of study.

PLACEMENT

Students in the Co-operative Program will apply for work placement positions advertised by the Administrator of the Co-operative Education Program. These job postings will include relevant information regarding responsibilities, location, wages, etc.

Students will apply for the placements they are interested in. Employers will select the candidates they wish to interview. After interviews take place, employers will rank the students in order of preference. Students will also rank employers in order of preference. These two rankings will be used by the Administrator of the Co-operative Education Program to determine student placements.

The School of Computer Science does not guarantee placement, but every reasonable effort will be made to ensure that appropriate employment is made available.

SEQUENCE OF WORK* AND STUDY TERMS

First Year

Fall Term: Study term

Winter Term: Study term

Second Year

Fall Term: Study term

Winter Term: Study term

Summer Term: Work term

Third Year

Fall Term: Study term

Winter Term: Work term

Summer Term: Study term

Fourth Year

Fall Term: Work term

Winter Term: Study term

Summer Term: Work term

Fifth Year

Fall Term: Study term

* Students must successfully complete at least three out of the four work terms given above.

WORK TERM EVALUATION

In consultation with the School of Computer Science, the Administrator of the Co-operative Education Program will evaluate the student's performance at the conclusion of each Work Term. A student's performance in a Work Term will be evaluated as either "Satisfactory" or "Unsatisfactory".

RULES AND REGULATIONS

1) To continue in the Co-operative program, students must

(a)

maintain a minimum major average of 8.0;

(b)

attend all professional development workshops organised by the office of the Director of Co-operative Education and Placement;

(c)

receive a satisfactory grade in each work term. This grade will be based on:

2) Students who

(a)

obtain an evaluation of "Unsatisfactory" for a work term;

(b)

do not report for interviews;

(c)

fail to report to an employer after accepting a work placement;

(d)

are dismissed by the employer for just cause;

(e)

leave an employer without permission;

(f)

do not maintain a minimum major average of 8.0

will be reviewed by the Computer Science Co-op Committee and may be required to withdraw from the Co-operative Program.

3) The performance of each student during her/his work term will be supervised and evaluated by the student's Co-operative Program employer.

4) The students in the Co-operative Program will be monitored by the office of the Director of the Co-operative Education closely through regular phone conversations and at least one work-site visit in each work term.

5) Each student must provide a written report at the completion of each work term. The objective of the report is to enhance the integration of a student's theoretical and experiential concepts and will be a technical treatise of a project undertaken by the student during the work term. This report will be assessed by the School of Computer Science. The employer must also send, to the office of the Director of the Co-operative Education, an evaluation of the student performance following each placement.

6) Students in the Co-operative Program must successfully complete at least 3 work terms.

7) Each student in the Co-operative Program will have to pay a Co-operative Program administration fee for each work and study term to a maximum of eight terms. The Co-operative program administration fees are not refundable.

8) The diploma awarded to students who complete the requirements for a Bachelor's degree including the requirements of the Co-operative program satisfactorily will have a notation indicating their successful completion of a Co-operative degree program. The transcripts of students in Co-operative Program will carry a similar designation.

5.6.5. COURSE DESCRIPTIONS

Not all courses listed below will necessarily be offered every academic year.

Due to the fact that Computer Science is a relatively new and continuously evolving discipline, some of the courses listed may undergo slight revision and therefore may not always conform exactly to the detailed descriptions given below.

All courses listed below are three lecture hours per week, unless otherwise stated. In addition, laboratory/tutorial time may be scheduled as required.

Note: Most Computer Science courses require substantial time out of class in writing, correcting, and testing computer programs. Students should be prepared to devote a minimum of from three to five hours a week per course to assignment work alone.

Students who have covered the material in 60-104 in another university-level course may petition the Director for exemption from the requirement of 60-104 as a prerequisite to other courses.

60-100. Key Concepts in Computer Science

The objectives of this course are to excite students' interest in computer science and to give students a precise understanding of a number of difficult concepts that are fundamental to modern computer science. Topics include: data types; induction and recursion; algebraic characterization; concrete and abstract syntax; formal logic; soundness, completeness, and decidability; specification, algorithm, implementation, and determinism; complexity. (Restricted to students registered in programs offered wholly or jointly by the School of Computer Science or by the Departmant of Mathematics and Statistics, or by approval of the Director of the School.)

60-102. Problem Solving, Programs and Computers

Discussion of the need for careful specification and analysis of a problem before developing a solution. The importance of representing a problem in various ways before attempting to develop a solution. Introduction to, and practical experience in using various problem solving strategies, including stepwise refinement and divide and conquer. The concept of an algorithm. Examples of algorithms. Analyzing algorithms. Complexity. Coding of algorithms in programming languages. (Restricted to students registered in programs offered wholly or jointly by the School of Computer Science or by the Departmant of Mathematics and Statistics, or by approval of the Director of the School.)

60-104. Computer Concepts for End-Users

Introduction to the concepts of operation of a computer system, including hardware and software. Development of conceptual understanding of word processors, databases, spreadsheets, etc., and practical experience with their use. The Internet will be introduced, with students having some access to Internet resources. Fundamental concepts of algorithm development and programming will be introduced. Hands-on experience with microcomputers as well as a distributed-computing environment will be involved. In addition to lecture time, laboratory/tutorial time may be scheduled as required. (See above, "School Regulations".) (Antirequisite: 73-211.)

60-108. Introduction to Programming

Introduction to computing concepts: computer organization; machine language; high-level languages; and distributed-computing environments. Structured programming. Elements of program style, including documentation. Data declaration. Procedural programming constructs—assignment statements, sequence, selection and iteration statements. Use of debugging tools. Logical operators. Formatted Input/Output. Functions—function definition, function prototypes, scope rules, using function libraries, recursive functions. Arrays—declaration, use of single and multidimensional arrays. Defining and accessing structures. Passing arrays as parameters to functions. Pointers—introduction, declaration of pointers, setting up simple, linear-linked lists. (Note: the C language is currently used for this course.) (Prerequisites: 60-100, 60-102, and 60-104 or equivalent. Students in Mathematics programs are allowed to take 60-104 concurrently with 60-108.)

60-205. Introduction to the Internet

The history of the Internet, including the development of communication protocols. The Internet as a global information infrastructure and a high-level discussion of how it works. Browsing the Internet with Gopher, Mosaic, etc. and the concepts of Universal Resource Locators and Hypertext Mark-up Languages will be included. The functionality of electronic mail and bulletin board services will be introduced with hands on experience in sending and receiving information, automated title searching and an introduction to organizing information to be accessible over the network. In addition to lecture time, laboratory/tutorial time may be scheduled as required. (May not be taken for credit by students in programs offered wholly or jointly by Computer Science.) (Prerequisite: 60-104 or equivalent. Antirequisite: 60-334.) (May not be taken for credit by students registered in programs offered wholly or jointly by the School of Computer Science.)

60-206. Programming in C for Beginners

Introduction to computing concepts. Problem solving using stepwise refinement. Structured programming. Structure of a C program. Elements of program style, including documentation. Data declaration. Procedural programming constructs—assignment statements, sequence, selection and iteration statements. Use of debugging tools. Logical operators. Formatted Input/Output. Functions—function definition, function prototypes, scope rules, using function libraries. Arrays—declaration, use of single and multidimensional arrays. Pointers—introduction, declaration of pointers, setting up simple, linear-linked lists. Files—operations on sequential files. (Prerequisite: 60-104 or equivalent. Antirequisite: 60-108.) (May not be taken for credit by students registered in programs offered wholly or jointly by the School of Computer Science.)

60-212. Advanced Computer Programming with C++

Revision of C programming concepts: assignment, if, while, for statements; functions, arrays, structures, and pointers. Advanced problem solving in C with emphasis on string manipulation, recursion, linear and non-linear linked lists, bit manipulation, function pointers, and command-line arguments. Introduction to C++, concept of abstract data types and object-oriented programming; classes and data abstraction, constructors and destructors, classes as members of other classes, friend class, information hiding. Operator overloading and its applications. Use of inheritance and multiple inheritance in software development. Virtual functions and polymorphism. (Prerequisites: 60-100, 60-102, 60-104, and 60-108 or 60-206.)

60-214. Computer Languages, Grammars, and Translators

This course covers both pragmatic and theoretical aspects of grammars, recognizers, and translators for computer languages. Regular languages: regular expressions, regular grammars, finite-state machines (automata), regular language recognizers, automatic regular-language-recognizer generator: lex. Context-free languages: context-free grammars and pushdown automata (stack machine), LL grammars and top-down recognotion and parsing: LL(1) and recursive-descent parsers, LR grammars and bottom-up regognition and parsing: LR(0), SLR(1), LR(1), and LALR(1) parsers. Automatic context-free-language parser generator: YACC. Attribute grammars, syntaz-directed translation, computer-language processors: interpreters and compilers. (Prerequisites: 60-100, 60-102, 60-104 or equivalent, and 60-108 or 60-206.)

60-231. Theoretical Foundations of Computer Science

An introduction to propositional logic, first order logic, proof techniques, mathematical induction, the pigeonhole principles, sets, operations on sets, relations, operations on relations, functions, countable and uncountable sets, basic defintions in graph theory, connectivity, isomorphism of graphs, trees, Euler graphs, Hamilton graphs, planar graphs and graph colouring. In addition to lecture time, laboratory/tutorial time may be scheduled as required. (Prerequisite: 62-100.)

60-254. Data Structures and Algorithms

An introduction to the programming and time-complexity analysis of internal (main store) data structures. Topics include linear lists, stacks, queues, linked structures, representation of sparse arrays, general trees, binary trees, binary trees in sequential storage, heap sort, quicksort, linked representation of binary trees, traversal of binary trees, dynamic binary search trees. (Prerequisites: 60-100, 60-102, 60-104 or equivalent, 60-108 or 60-206, and 60-212, or with consent of the School.)

60-255. File Structures

This course provides the student with the concepts and techniques required to efficiently maintain data on secondary storage devices. Topics include: performance differences between primary and secondary storage; secondary storage devices; fundamental file structures; sequential files; indexing; B trees; B+ trees; index sequential files; hashing; sorting and searching techniques on secondary storage devices. (Prerequisites: 60-100, 60-102, 60-104 or equivalent, 60-108 or 60-206, and 60-212, or with consent of the School.)

60-265. Computer System Organization

Examination of the fundamentals of modern computer organization and architecture. Historical development. The computer system in terms of interconnection structures, memory, I/O and operating system software. CPU structure and function, including numeric representations, instruction sets, addressing modes and formats. Control unit. Alternate architectures and performance enhancement. (Prerequisites: 60-100, 60-102, 60-104 or equivalent, and 60-108.)

60-275. Selected Topics I

Selected topics in computer science may be offered by the School. The topics may differ from year to year. (Prerequisites: 60-100, 60-102, 60-104 or equivalent, and 60-108.)

60-280. Practicum I

Students are required to attend lectures in which they will be introduced to advanced computing tools. Students also are required to investigate, through reading and experimentation, a specified number of software tools, such as parser generators, database management packages, simulators, VLSI design packages, structure editor generators, and speech recognition software. Each student will be required to submit a report comprising summary descriptions and evidence of successful, non-trivial use of the tools investigated. The selection of tools to be investigated will be made by the student with the approval of the course instructor. (Prerequisites: 60-100, 60-102, 60-104 or equivalent, and 60-108.) (Restricted to students in the Honours Software Development degree program only.)

60-298. Co-op Work Term I

60-311. Introduction to Software Engineering

The objectives of this course are to demonstrate the relevance of formal methods to software engineering and to nurture a professional approach to the development of software. Various formal techniques for specifying problems and constructing s/w solutions shall be considered. (Prerequisites: 60-212, 60-254, 60-255, 60-265, and 62-100.)

60-315.Database Management Systems

This course is an introduction to data base management systems. Topics include : basic concepts; 3-level architechture; the relational model; relational algebra and calculus; SQL; data base design with Normalization Theory; introduction to query optimization; introduction to distributed systems. (Prerequisites: 60-212, 60-214, 60-254, 60-255, and 60-265.)

60-322. Object-Oriented Software Design

This course builds on the knowledge of object-oriented programming and data structures and file structures gained in courses 60-212, 60-254, and 60-255. Students are introduced to object-oriented software design techniques that are currently used in industry. (Prerequisites: 60-212, 60-254, 60-255, and 60-265.)

60-330. Operating Systems Fundamentals

Introduction to the primary components of multiprogramming operating systems with emphasis on resource sharing for competing processes. Justification of multiprogramming operating systems on the basis of resource utilization and user-friendliness. The process construct. Management strategies for the CPU resource, the main memory resource and peripheral device resources. The deadlock problem for nonsharable resources. Synchronization and local-serialization constructs for cooperating processes. Machine architectural requirements for operating system integrity. Inter-process communication via unbuffered, bounded buffer, and unbounded buffer constructs. Virtual device constructs with application to the batch spooling structure. Unix multiprogramming, processes. and pipes. (Prerequisites: 60-212, 60-254, 60-255, and 60-265.)

60-334. World-Wide Information Systems Development

This course is designed for people who want to make their data available to others over the Internet. Topics discussed will include World-Wide Web authoring, hyper-media design, and network-based information retrieval. (Prerequisite: 60-104 or equivalent. Antirequisite: 60-205.)

60-367. Computer Networks

Introduction and use of computer networks, network structures and software. Examples of network topology, protocols, and routing algorithms. (Prerequisites: 60-212, 60-254, 60-255, and 60-265.)

60-375. Selected Topics II

Selected topics in computer science may be offered by the School. The topics may differ from year to year. (Prerequisites: 60-212, 60-254, 60-255, and 60-265. Additional courses may be required depending upon the topic.)

60-380. Practicum II

Students are required to attend lectures in which they will be introduced to advanced computing tools. Students also are required to investigate, through reading and experimentation, a specified number of software tools, such as parser generators, database management packages, simulators, VLSI design packages, structure editor generators, and speech recognition software. Each student will be required to submit a report comprising summary descriptions and evidence of successful, non-trivial use of the tools investigated. The selection of tools to be investigated will be made by the student with the approval of the course instructor. (Prerequisites: 60-212, 60-254, 60-255, and 60-265.) (Restricted to students in the Honours Software Development degree program only.)

60-393. Developing Systems for Data Processing

An historical perspective on the use and growth of the computer in business. A discussion of the business environment in which this use and growth has been and is taking place. Basic concepts of the systems development cycle of today's business and management information systems. The planning and managing of the system development life cycle. (Prerequisites: 60-212, 60-254, 60-255, and 60-265.)

60-398. Co-op Work Term II

60-440. Principles of Programming Languages

Basic concepts of programming languages. Comparative study of the major programming paradigms, including imperative, object-oriented, functional, logic, and concurrent programming. Principles of programming language design and evaluation. Syntax, semantics and implementation techniques of programming languages. (Prerequisites: 60-212, 60-214, 60-231, 60-254, 60-255, 60-265, 60-311 or 60-393, and 60-322.)

60-454. Design and Analysis of Computer Algorithms

The intent of this course is to introduce the fundamental ideas in the design and analysis of computer algorithms. Topics include: searching, sorting, order statistics, oracle arguments, red-black trees, binomial heaps, Fibonacci heaps, divide-and-conquer, greedy algorithms, dynamic programming, NP completeness, and approximation algorithms. (Prerequisites: 60-212, 60-231 and 60-254.)

60-460. Digital Design and Computer Architecture

Design of combinatorial and sequential circuits. Modular design concepts in digital circuits. Interfacing facilities. VLSI systems. Architecture classification schemes. Parallel computing architectures. (Prerequisites: 60-265, 60-330, and 60-367.)

60-470. Project Using Selected Tools

Students will complete a project using an advanced computing tool, such as a database package, simulation software, speech-recognition hardware module, etc. Students are required to submit a report describing the project and demonstrating mastery of the tool. Tools and the project are chosen by the student with the approval of the instructor. (Prerequisites: 60-212, 60-254, 60-255, 60-265, 60-311 or 60-393, 60-322, and 60-330.)

60-475. Selected Topics III

Selected topics in computer science may be offered by the School. In many cases the topics will coincide with the graduate course offering in a given year, and students will be required to complete the lecture component of a graduate course. Topics may include: advanced database management, graphics, artificial intelligence, information retrieval, theory of computation, functional programming, knowledge base systems, and foundations of programming languages. (Prerequisites: 60-212, 60-254, 60-255, 60-311 or 60-393, 60-322, and 60-330. Additional courses may be required depending upon the topic.)

60-476. Selected Topics IV

Selected topics in computer science may be offered by the School. In many cases the topics will coincide with the graduate course offering in a given year, and students will be required to complete the lecture component of a graduate course. Topics may include: advanced database management, graphics, artificial intelligence, information retrieval, theory of computation, functional programming, knowledge base systems, and foundations of programming languages. (Prerequisites: 60-212, 60-254, 60-255, 60-311 or 60-393, 60-322, and 60-330. Additional courses may be required depending upon the topic.)

60-480. Practicum III

Students are required to complete a group project involving all stages of software development. Students will present a written report on which they will be orally examined. (Prerequisites: 60-311, 60-322, and 60-330.) (Restricted to students in the Honours Software Development program only.)

60-497. Co-op Work Term III

60-498. Co-op Work Term IV

60-499. Project Management: Techniques and Tools

The course consists of two components: a) exposure to project-presentation and project management skills, and b) working on a large project in a group. The course coordinator will arrange lectures on a variety of relevant topics. The lectures may have quizzes and/or short assignments. Students will be expected to develop skills in technical writing, organizing seminars, techniques for use of multimedia tools, as well as developing a major project using a modern software tool. (A 6.0 credit hour course.) (Prerequisites: 60-212, 60-254, 60-255, 60-311 or 60-393, 60-322, and 60-330, or consent of the School.)


RETURN TO THE TOP OF THIS PAGE


Return to main page Previous Page