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.1OFFICERS 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.

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

Assistant Professors

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

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

Ezeife, Christie I.; B.Sc. (Hons.) (Ife), M.Sc. (SFU), Ph.D. (Manitoba) - 1996.

Adjunct Assistant Professor

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

5.6.2SCHOOL 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.3PROGRAMS 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: thirteen courses, including 60-100, 60-104, 60-140, 60-141, 60-212, 60-254, 60-255, 60-265, 60-315, 60-322, and 60-330.

Other requirements:

(a) 62-120, 62-140, and 65-253;

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

(c) twelve 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-104, 60-140, 60-141, 62-140, 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-four courses, 60-100, 60-104, 60-140, 60-141, 60-212, 60-214, 60-231, 60-254, 60-255, 60-265, 60-311 (or 60-393), 60-315, 60-322, 60-330, 60-334, 60-367, 60-440, 60-454, 60-460, 60-470, 60-475, and 60-499 (a 6.0 credit hour course), plus one additional Computer Science course.

Other requirements:

(a) 62-100, 62-120, 62-140, and 65-253;

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

(c) nine other courses from any department, school, or faculty, including Computer Science.

RECOMMENDED COURSE SEQUENCE

Level 1: ten courses, including 60-100, 60-104, 60-140, 60-141, 62-100, 62-120, and 62-140.

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: seventeen courses, 60-100, 60-104, 60-140, 60-141, 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 two additional Computer Science courses.

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

Other requirements:

(a) 62-120, 62-140, and 65-253;

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

(c) eight additional courses from any department, school, or faculty.

RECOMMENDED COURSE SEQUENCE

Level 1: ten courses, including 60-100, 60-104, 60-140, 60-141, 62-120, 62-140, 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-five courses, 60-100, 60-104, 60-140, 60-141, 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), plus one additional Computer Science course.

Other requirements:

(a) 62-100, 62-120, 62-140, 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) two courses, one each from the Faculties of Arts and Social Science;

(d) five additional courses from any department, school, or faculty, including Computer Science.

RECOMMENDED COURSE SEQUENCE

Level 1: ten courses, including of 60-100, 60-104, 60-140, 60-141, 62-100, 62-120, and 62-140.

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: fifeen courses, consisting of 60-100, 60-104, 60-140, 60-141, 60-212, 60-214, 60-231, 60-254, 60-255, 60-265, and 60-315; plus four additional Computer Science courses at the 300 level or above.

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

Other requirements:

(a) 62-120, 62-140, 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-104 (or its equivalent), 60-140, 60-141 (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.4CO-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:

–Co-operative Program on-site visit from the office of the Director of Co-operative Education and Placement to discuss their progress to date.

–Co-operative Program employer evaluation.

–Co-operative Program work term report submitted by the student and evaluated by the School of Computer Science.

–Oral presentation by the student after each placement.

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 Department of Mathematics and Statistics, or by approval of the Director of the School.) This course requires attendance at one 90-minute laboratory, in addition to two lectures, unsupervised study and work on individual assignments.

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-213.)

60-140.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. Example of algorithms. Analyzing algorithms. Complexity. Coding of algorithms in programming languages. This course requires attendance at one 90-minute laboratory, in addition to two lectures, unsupervised study and work on individual assignments.

60-141.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. Pointers-introduction, declaration of pointers, setting up simple, linearlinked lists. (Note: the C language is currently used for this course.) (Prerequisites: 60-100, 60-104 or equivalent and 60-140.) Students in Mathematics programs are allowed to take 60-104 concurrently with 60-141. This course requires attendance at one 90-minute laboratory, in addition to two lecture, unsupervised study and work on individual assignments.

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

The course is an introduction to programming in C. Two major goals of this course are: teaching a rational approach to program development, and teaching an introduction to ANSI C. The emphasis of this course os on the first goal. This course adapts a library-based approach that emphasizes the principle of abstraction: library and modular development. The five-phase software development method is used to solve problems. Topics of this course include: a brief introduction to Computer Science, introduction to computer hardware, statement forms, iteration, functions, top-down design, basics of modular programming, recursion, arrays, pointers, dynamic data structures, and file processing. (Prerequisite: 60-104 or equivalent. Antirequisite: 60-141.) (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 with emphasis on string manipulation, recursion, linear and non-linear linked lists, bit manipulation, function pointers, and command-line arguments. Introduction to classes and inheritance. Principles of object oriented programming design of Graphic User Interfaces, concurrent programming, multimedia and animation, file handling and client server model. (Current languages used - C and Java) This course requires attendance at one 90-minute laboratory, in addition to two lectures, unsupervised study and work on individual assignments. (Prerequisites 60-100, 60-104, and 60-140 and 60-141, 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 recognition and parsing: LL(1) and recursive-descent parsers, LR grammars and bottom-up recognition 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, 60-140, and 60-141 or 60-206.) This course requires attendance at one 90-minute laboratory, in addition to two lectures, unsupervised study and work on individual assignments.

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 definitions in graph theory, connectivity, isomorphism of graphs, trees, Euler graphs, Hamilton graphs, planar graphs and graph colouring. (Prerequisite: 62-100.) This course requires attendance at one 90-minute laboratory, in addition to two lectures, unsupervised study and work on individual assignments.

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-104 or equivalent, 60-140, 60-141 or 60-206, and 60-212, or with consent of the School.) This course requires attendance at one 90-minute laboratory, in addition to two lectures, unsupervised study and work on individual assignments.

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-104 or equivalent, 60-140, 60-141, or 60-206, and 60-212, or with consent of the School.) This course requires attendance at one 90-minute laboratory, in addition to two lectures, unsupervised study and work on individual assignments.

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-104 or equivalent, and 60-140 and 60-141.) This course requires attendance at one 90-minute laboratory, in addition to two lectures, unsupervised study and work on individual assignments.

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-104 or equivalent, and 60-140 and 60-141.)

60-280.Practicum I

This practical course provides the students with the concepts and techniques required to develop a World Wide Web/server/site using Java. Basic techniques for building a Web server including the layered architecture of software systems incorporating TCP/IP and for planning a Web server including choosing a Web site type and web site platform will be discussed. The emphasis of this practical course is on the Java/client/server model and on Java security. Each student is required to develop a non-trivial Web site using Java, to submit the corresponding documentation, and to present one seminar on her/his project. (Prerequisite: 60-212.) Current language used - Java. Note: Admission restricted to students in the Software Development program and to students with permission from the Director, School of Computer Science.

60-298.Co-op Work Term I

60-311.Introduction to Software Engineering

This course is concerned with the practical problems of developing large-scale software systems. The emphasis of this course is on identifying and applying fundamental principles that are applicable throughout the software life cycle. Theoretical and practical aspects in software development stages, and as feasibility study, requirements analysis and specification, design and specification, module testing, integration and system testing, and maintenance will be discussed. Various formal methods of software engineering will also be discussed. Issues ranging from theoretical to those demonstrating the application of formal methods to complex problems in industry will be discussed. There are projects associated with this course. The projects are designed to provide experience both in managing the development of non-trivial software system and in working with other people. (Prerequisites: 60-212, 60-254, 60-231, 60-255 and 60-265.)

60-315.Database Management Systems

This course is an introduction to data base management systems. Topics include : basic concepts; 3-level architecture; 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

The major objective of this practical course is to provide the students with experience in managing the development of a large scale software system. The project involves all stages of software development following a particular software process modes. Typically, the following components/aspects are included in such a project: application of software engineering techniques to build a system, objectoriented design/programming, language specification and translator construction, building graphical user's interface, programming multi-threading processes, and interprocess communication. Note: Admission restricted to students in the Software Development program and to students with permission from the Director, School of Computer Science. Prerequisite: 60-212, 60-280, 60-254, 60-255, or permission of the Director.

(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

Modular design concepts in digital circuits. Interfacing facilities. Memory Organization. Architecture classification schemes. Parallel computing architectures. Pipelining and vector processing. Alternate architectures and performance enhancement. (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.) Restricted to fourth year BCS and BSc. (CIS) students. This course can be taken for credit only once.

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/Selected Topics in Software Engineering

Students will be provided with a list of advanced topics in software engineering, such as managing software engineering, project planning and scheduling, formal specification of real-time systems, systems for computer integrated manufacturing, formal aspects of software reuse, reverse engineering, software reliability engineering, and formal specification of concurrent processes. Each student will survey a topic and must submit a survey paper. Note: Admission is restricted to students in the Software Development Program and to students with permission form the Director, School of Computer Science. (Prerequisites: 60-311, 60-322, and 60-330 or permission of the Director.)

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.) Restricted to fourth year students. This course can be taken for credit only once.

RETURN TO THE TOP


Return to main page Previous Page