Ottawa-Carleton Institute for Computer Science Herzberg Bldg. 542 The Institute Director of the Institute: R.C. Holte Associate Director of the Institute: S. Dandamudi Students who wish to pursue studies in computer science leading to an M.C.S. or a Ph.D. degree can do so in a joint program offered by the Department of Computer Science at the University of Ottawa and the School of Computer Science at Carleton University under the auspices of the Ottawa-Carleton Institute for Computer Science. The institute is responsible for supervising the program and for providing a framework for interaction between the two departments at the research level. In addition to the faculty members from the two computer science departments the institute also has members with computer science expertise from other departments. Requests for information, and completed appli-cations, should be sent to the director or associate director of the institute. A joint admissions committee examines all applications and assigns students to the most appropriate campus and supervisor. Members of the Institute The "home" department of each member is indicated by (CSI) for the Department of Computer Science, University of Ottawa, (ELG) for the Department of Electrical Engineering, University of Ottawa, (ADM) for Faculty of Administration, University of Ottawa, (SCS) for the School of Computer Science, Carleton University, (MAT) for the Department of Mathematics and Statistics, Carleton University, (SCE) for the Department of Systems and Computer Engineering, Carleton University, (C) for the Department of Civil Engineering, Carleton University. M.D. Atkinson, (SCS), Complexity, algorithms, computational algebra L.G. Birta, (CSI), Simulation, optimization, numerical algorithms B.A. Bowen, (SCE), Expert systems, systems design S. Boyd, (CSI), Optimization, combinatorics R.J.A. Buhr, (SCE), Software engineering, protocols, CAD of computer systems T.Y. Cheung, (CSI), Distributed computing, optimization, databases J.W. Chinneck, (SCE), Operations research, modeling and simulation methodology J.-P. Corriveau, (SCS), Cognitive science, natural language understanding, CASE tools W.H. Cunningham, (MAT), Optimization, algorithms, graph theory S. Dandamudi, (SCS), Parallel and distributed systems, database systems, performance evaluation, computer architecture, operating systems N.W. Dawes, (SCE), Communication networks, optimization F. Dehne, (SCS), Computational geometry, VLSI algorithms J.D. Dixon, (MAT), Algorithms, algebra, number theory F. Fiala, (SCS), Optimization, combinatorics N. Georganas, (ELG), Computer communications, mobile radio M. Goldberg, (ELG), Image processing, pattern recognition R.C. Holte, (CSI) Artificial intelligence, machine learning, knowledge compilation N. Holtz, (C) Computer-aided structural engineering G.M. Karam, (SCE), Logic programming, office automation T. Kasvand, (CSI), Digital image processing, pattern recognition A.R. Kaye, (SCE), Expert systems, office automation E. Kranakis, (SCS), Cryptography, computational number theory, combinatorial analysis, computational geometry, distributed computing, mathematical logic M. Krieger, (ELG), Computer architecture W.R. LaLonde, (SCS), Programming languages, artificial intelligence L. Logrippo, (CSI), Software methodology, communications protocols S.A. Mahmoud, (SCE), Local area networks, communication protocols S.J. Matwin, (CSI), Programming languages, expert systems L.R. Morris, (SCE), Signal processing, speech analysis, graphics B.C. Mortimer, (MAT), Combinatorics, algorithms, groups theory J. E. Neilson, (SCS), Computer architecture, distributed computing L. Nel, (SCS), Network reliability and performance, digital signal processing, computer music J. Oommen, (SCS), Automata, pattern recognition, image processing F. Oppacher, (SCS), Natural language processing, expert systems T.I. Oren, (CSI), Simulation, modeling R.B. Osborne, (SCS), Speculative computation, parallel processing, programming languages E.J. Otoo, (SCS), Databases, algorithms B. Pagurek, (SCE), Queuing, databases R.L. Probert, (CSI), Communications, expert systems J. Pugh, (SCS), Artificial intelligence, graphics, programming languages J. Raymond, (CSI), Computer architecture, graphics I. Reichstein, (SCS), Numerical applications, microcomputers I. Rival, (CSI), Combinatorics, optimization, algorithms J.-R. Sack, (SCS), Algorithms, computational geometry, graphics N. Santoro, (SCS), Algorithms, distributed and parallel computing P. Scott, (CSI), Logic, theoretical computer science, category theory J.B. Sidney, (ADM), Combinatorics, complexity, computational geometry D.R. Skuce, (CSI), Artificial Intelligence, logic programming I. Stojmenovic, (CSI), Computational geometry, multiple-valued logics, parallel computing S. Szpakowicz, (CSI), Logic programming, computational linguistics D. Thomas, (SCS), Artificial intelligence, fifth generation machines H. Ural, (CSI), Software reliability and testing, data communication protocols, applications of logic programming J. Urrutia, (CSI), Algorithms, combinatorics, geometry and algorithms R. Vaillancourt, (CSI), Numerical methods G.M. White, (CSI), Networking, office automation C.M. Woodside, (SCE), Performance modeling, distributed systems, queuing Master of Computer Science Admission Requirements Applicants should have an honors bachelor's degree in computer science or equivalent, with at least high honors standing. By equivalent is meant an honors degree in a program which includes at least twelve computer science half courses, two of which must be at the fourth-year level, as well as eight half courses in mathematics, one of which must be at the third- or fourth-year level. These courses must include the topics indicated below: Computer Science Data structures/file management, operating systems, computer architecture, algorithm design and analysis, assembly language and two high-level languages Mathematics Calculus, linear algebra, algebraic structures or discrete mathematics, probability and statistics, numerical analysis. Applicants who have a general (pass) bachelor's degree, or who otherwise lack the required undergraduate preparation, may be admitted to a qualifying-year program. Refer to the general section of this calendar for regulations governing the qualifying year. Program Requirements The program includes graduate study and research in four broad areas identified as follows: Programming Systems and Languages Database systems, operating systems, software methodology, software translators, language design Theory of Computing Analysis of algorithms, automata theory, formal languages, complexity, computability, logic and program schemata Computer Applications Artifical intelligence, graphics, picture and signal processing, modeling and simulation, numerical analysis, optimization Computer Systems Computer architecture, networks and distributed processing, computer communications, mini- and microcomputers Within these areas, the program emphasizes problems of current practical significance and has close links to the scientific and industrial communities. Normally, students in the program will be expected to complete a thesis; however, students who have substantial relevant work experience may be permitted to take the non-thesis option, which must include a graduate research project course. Each candidate submitting a thesis will be required to undertake an oral defense of the thesis. Students in the thesis option must take five half courses or equivalent, fulfill the graduate seminar requirement, and complete a thesis. Students in the non-thesis option must take ten half courses, and fulfill the graduate seminar requirement. The course selections must be approved by the student's academic adviser, and must include at least: * One half course in programming systems and languages * One half course in the theory of computing * One half course in either computer applications or computer systems The graduate seminar requirement includes a seminar presentation and participation in at least thirteen seminars in the Joint Graduate Student Seminar Series. Both course and thesis work may be completed either by full-time or part-time study. A candidate may be permitted to carry out thesis work off campus provided that suitable arrangements are made for supervision and experimental work, and prior approval is given by the institute. Doctor of Philosophy Admission Requirements A Master's degree in Computer Science (or equivalent) with high second-class standing is normally required for admission into the Ph.D. program. Students who are currently registered in the M.C.S. program may, in exceptional cases, be permitted to transfer into the Ph.D. program if they have completed all course requirements with at least high second-class standing and demonstrate significant promise for advanced research. Program Requirements * A minimum of six half courses, or equivalent, at the graduate level with at least one half course from each of the four areas * Presentation of at least two seminars in the Computer Science Institute seminar series * A comprehensive examination involving breadth and depth components * A written thesis proposal defended at an oral examination * A research thesis, defended at an oral examination Residence Requirement Students must fulfill a residence requirement of at least four terms of full-time study. Graduate Courses The courses in the following list are offered by various departments indicated by the prefix of the course code as follows: Carleton University 70. Department of Mathematics and Statistics 94. Department of Systems and Computer Engineering 95. School of Computer Science University of Ottawa CSI Department of Computer Science ELG Department of Electrical Engineering MAT Department of Mathematics Programming Systems and Languages 94.480 Software Engineering 95.404 Systems Software 95.490 Advanced Topics in Computer Science 94.531 (ELG6131) System Design with Ada 94.571 (CSI5117) Mini/Microcomputer Operating System Design 94.573 (CSI5115) Integrated Database Systems 94.579 (CSI5112) Advanced Topics in Software Engineering 95.501 (CSI5113) Foundations of Programming Languages 95.502 (CSI5119) User-Interface Facilities 95.514 (CSI5314) Object-oriented Systems 95.516 (CSI5123) Languages for Parallel Computing CSI5111 (95.551) Software Testing: Theory and Practice CSI5118 (95.578) Design of Compilers and Translators CSI5184 (95.584) Logic Programming CSI5518 (95.578) Conception des compilateurs et traducteurs CSI5584 (95.584) Programmation logique Theory of Computing 70.482 Introduction to Mathematical Logic 70/95.483 Topics in Applied Logic 70/95.484 Design and Analysis of Algorithms 70/95.485 Theory of Automata 70/95.486 Numerical Linear Algebra 70.565 (MAT5161) Theory of Automata 70.585 (MAT5308) Topics of Algorithm Design 95.409 Introduction to Parallel and Systolic Computing 95.504 (CSI5305) Topics in Arithmetic Complexity 95.505 (CSI5390) Automata Models of Learning Systems 95.508 (CSI5164) Computational Geometry 95.522 (CSI5172) Network Reliability 95.573 (CSI5163) Algorithm Analysis and Design 95/70.587 (CSI5104) Formal Languages and Syntax Analysis CSI5101 (95.561) Formal Models of Computational Systems CSI5110 (95.577) Principles of Formal Software Development CSI5162 (95.572) Topics in the Theory of Computing CSI5165 (95.579) Combinatorial Algorithms CSI5166 (95.585) Applications of Combinatorial Optimization CSI5174T (95.564) Specification and Validation of Communication Software CSI5510 (95.577) Principes de développement formel de logiciels Computer Applications 70/95.486 Numerical Linear Algebra 94.405 Discrete Simulation and Its Applications 95.402 Computer Graphics 95.403 Transaction Processing Systems 95.405 First Course in Robotics and Computer Vision 95.407 Applied Artifical Intelligence 70.569 (MAT5301) Topics in Combinatorial Mathematics 70.581 (MAT5303/ADM6385) Linear Optimization 70.583 (MAT5304/ADM6386) Nonlinear Optimization 70.584 (MAT5307/ADM6387) Topics in Operations Research 70.586 (MAT5180) Numerical Analysis 70.588 (MAT5305) Combinatorial Optimization I 70.589 (MAT5306) Combinatorial Optimization II 94.501 (CSI5120) Simulation and Modeling 94.504 (ADM6371) Mathematical Programming for Engineering Applications 94.505 (CSI5150) Optimization Theory and Methods 94.534 (ELG6134) Mini-Micro Applications 94.535 (ELG6135) Representations and Methods in Design Tools for Concurrent Systems 94.542 (ELG6142) Advanced Dynamics with Applications to Robots 94.553 (ELG6153) Stochastic Processes 95.506 (CSI5306) Natural Language Understanding 95/94.507(CSI5307) Expert Systems 95.510 (CSI5180) Topics in Artificial Intelligence 95.513 (CSI5313) Cryptography 95.520 (CSI5182) Cerebral Computations CSI5161 (95.566) Topics in System Simulation and Optimization CSI5181 (95.575) Artificial Intelligence Applications in Software Development CSI5304 (95.562) Knowledge Engineering CSI5386 (95.555) Natural Language Processing CSI5387 (95.576) Machine Learning CSI5388 (95.581) Topics in Machine Learning CSI5580 (95.510) Sujet en intelligence artificielle CSI5581 (95.575) Applications de l'intelligence artificielle dans le développement des systèmes CSI5787 (95.576) Apprentissage Symbolique Automatique ELG5119 (92.519) Stochastic Processes Computer Systems 94.457 Introduction to the Architecture of Computer Systems 94.470 Introduction to Telecommunications 94.511 (ELG6111) Computer System Design for Performance 94.519 (ELG6119) Teletraffic Engineering 94.521 (ELG6121) Computer Communications 94.527 (ELG6127) Distributed Processing Systems 94.532 (ELG6132) Systems Design 94.533 (ELG6133) Digital Systems Engineering 94.538 (ELG6138) Computer Architecture and Parallel Processing 94.539 (ELG6139) Advanced Topics in Digital Systems Design 94.558 (ELG6158) Digital Systems Architecture 94.576 (ELG6176) Analytical Performance Models of 94.577 (ELG6177) Teleprocessing Software Design 94.581 (ELG6181) Advanced Topics in Computer Communications 95.408 Performance Modeling 95.503 (CSI5308) Principles of Distributed Computing 95.509 (CSI5141) Associative Structures and Database Machines 95.511 (CSI5311) Distributed Databases and Transactions Processing Systems 95.512 (CSI5312) Distributed Operating Systems 95.515 (CSI5132) Parallel Processing Systems 95.574 (CSI5131) Parallel Algorithms and their VLSI Implementation 95.610 (CSI7131) Advanced Parallel and Systolic Algorithms 97.587 (ELG6387) Microprocessor Electronics CSI5114 (95.554) Automated Office Systems CSI5133 (95.568) Simulation and Testing of Logic Circuits CSI5135 (95.565) High Level Language Machines CSI5170 (95.580) Distributed Data Processing CSI5171 (95.583) Software for Communication Networks CSI5514 (95.554) Bureautique CSI5535 (95.565) Les machines de haut niveau ELG5192 (92.577) Microprocessor-based Systems ELG5193 (92.578) Multi-microprocessor Systems ELG5374 (92.567) Computer Communication Networks ELG5378TH (92.559) Image Processing Techniques and Image Communications Theses, Projects and Topics 95.590 (CSI5140) Selected Topics in Computer Science 95.591 (CSI5901) Directed Studies (M.C.S.) 95.592 (CSI5900) Graduate Project (M.C.S.) 95/70/94.595 (CSI7999) M.C.S. Thesis 95.661 (CSI7160) Advanced Topics in the Theory of Computing 95.662 (CSI7170) Advanced Topics in DistributedComputing 95.663 (CSI7161) Advanced Topics in Programming Systems and Languages 95.664 (CSI7162) Advanced Topics in Computer Applications 95.665 (CSI7163) Advanced Topics in Computer Systems 95.691 (CSI7901) Directed Studies (Ph.D.) 95.692 (CSI7900) Graduate Project in Computer Science 95.699 (CSI9999) Ph.D. Thesis CSI9998 Examen général de doctorat/Ph.D. Comprehensive Examination