COMPUTING AND SOFTWARE



The Department of Computing and Software offers programs leading to Master’s and Ph.D. degrees in Computer Science and Software Engineering.

Enquiries:  905 525-9140 Ext. 27863
E-mail:  gradcas@mcmaster.ca
Website:   http://www.cas.mcmaster.ca/cas/graduate/admissions.html

Staff / Fall 2004

PROFESSORS
Frantisek Franek, M.Sc., RNDr. (Charles, Prague), Ph.D. (Toronto)
Ryszard Janicki, M.Sc. (Warsaw), Ph.D., D.Hab. (Polish Academy of Sciences)
Thomas Maibaum, B.Sc. (Toronto), Ph.D. (London)
David L. Parnas, B.S., M.S., Ph.D. (Carnegie), Dr.h.c. (ETH Zürich), Dr.h.c. (Louvain), F.R.S.C., F.A.C.M.
Sanzheng Qiao, B.S., M.S. (Shanghai Teacher's College), M.S., Ph.D. (Cornell)
Paul A. Taylor, B.Sc., Ph.D. (Univ. Of Wales), P.Eng. / Chair
Tamás Terlaky, M.Sc., Ph.D. (Loránd Eötvös, Budapest)
Jeffrey I. Zucker, B.Sc. (Witwatersrand), Ph.D. (Stanford)

ASSOCIATE PROFESSORS
Ivan Bruha, Dipl. Ing. (Czech. Tech. Univ., Prague), RNDr. (Charles, Prague), Ph.D. (Czech. Tech. Univ., Prague)
Antoine Deza, M.Sc. (Ecole Nationale des Ponts et Chaussées), Ph.D. (Tokyo Institute of Technology)
Douglas G. Down, B.A.Sc., M.A.Sc. (Toronto), Ph.D. (Illinois, Urbana- Champaign)
William M. Farmer, B.A. (Notre Dame), M.A., M.S., Ph.D. (Wisconsin- Madison)
Wolfram Kahl, M.Sc. (Oxford), Dr.rer.nat. (UniBw München)
Emil Sekerinski, Dipl.Inf., Dr.rer.nat. (Karlsruhe)
W.F. Skipper Poehlman, B.S. (Niagara), B.Sc. (Brock), M.Sc., Ph.D. (McMaster), P.Eng.
Martin von Mohrenschildt, Dipl. Math., Dr.s.c.Math. (ETH-Zürich)
Alan Wassyng, B.Sc. (Hons.), M.Sc., Ph.D. (Witwatersrand)

ASSISTANT PROFESSORS
Christopher Anand, B. Math  (Waterloo), M.Sc., Ph.D. (McGill)
Jacques Carette, B. Math (Waterloo), M.Sc. (Montreal), Ph.D. (Paris-Sud, France)
George Karakostas, Dipl. Eng. (Patras), M.S.A., Ph.D. (Princeton)
Ridha Khedri, B.Eng. (Tunis), M.Sc., Ph.D. (Laval)
Stavros G. Kolliopoulos, Dipl. Eng. (Patras), M.S., Ph.D. (Dartmouth)
Mark S. Lawford, B.Sc. (Queen’s), M.A.Sc., Ph.D. (Toronto)
Ryan Leduc, B.Eng. (Victoria), M.A.Sc., Ph.D. (Toronto)
Ned Nedialkov, B.Sc. (Sophia University, Bulgaria), M.Sc., Ph.D. (Toronto)
Jiming Peng, B.Sc. (Xiang Tan), M.Sc. (Chinese Acad. of Sciences)
Kamran Sartipi, M.Sc. (Tehran), M.Math, Ph.D. (Waterloo)
Spencer Smith, B.Eng.C.S., M.Eng., Ph.D. (McMaster)
Michael Soltys, B.Sc., M.Sc., Ph.D.  (Toronto)

PROFESSORS EMERITI
Gerald L. Keech, B.A.Sc. (Toronto), M.Sc., Ph.D. (McMaster)
Peter E. Lauer, B.A. (Alabama), M.A. (Emory), Ph.D. (Queen's,  Belfast)
Patrick J. Ryan, B.Sc. (Toronto), Ph.D. (Brown)
William F. Smyth, B.A. (Toronto), M.Sc. (Ottawa), Ph.D. (Curtin),  C.Eng., F.B.C.S., F.I.C.A.


M.Sc. Degree in Computer Science

Admission requirements are given under the General Regulations of the Graduate School at the beginning of the Calendar.  Applicants who have an honours degree in another discipline with the required average and whose undergraduate program has included a substantial Computer Science content will be required to take one or more courses simultaneously with their graduate courses to make up any deficiencies.

A M.Sc. degree can be obtained by successful completion of the following requirements:

(a)    A minimum of five one-term courses (half courses) with at least a B- standing, chosen in consultation with the candidate’s thesis supervisor and the
        Computer Science Graduate Student Advisor.
(b)    A thesis which demonstrates the ability to do original research.
(c)    An oral examination to defend the thesis.

It is expected that these requirements will normally be met within 20 months of full-time study.  All programs of study are subject to the approval of the Department Chair.

Master’s Degree in Software Engineering

A candidate for a Master’s Degree in Software Engineering may proceed by one of two routes:  thesis-oriented (M.A.Sc.) or course-oriented (M.Eng.).

M.A.Sc. Degree

The minimum requirement for students to be admitted to the M.A.Sc. program is that they have the equivalent of a bachelor’s degree in Software Engineering from McMaster University with a B average.

Students must successfully complete four core graduate courses and successfully defend a thesis.  Students may be required to take more courses as judged by the graduate committee.  Exceptionally well prepared students may be permitted to substitute other approved graduate courses for part of the core course requirement.  All programs of study are subject to the approval of the Department Chair.

M. Eng. Degree

Admission requirements are given under the General Regulations of the Graduate School at the beginning of this Calendar.  Each student’s background will be assessed and his/her program of study designed to ensure appropriate depth and breadth in Software Engineering.

Students must successfully complete the equivalent of seven graduate courses.  These include four core courses in Software Engineering, with the remaining courses to be chosen from annual lists published by the department.  Students must also produce a major study report containing independent work that demonstrates a knowledge of how to do Software Engineering at an advanced level.

Ph.D. Degree in Computer Science

Admission requirements are given under the General Regulations of the Graduate School at the beginning of this Calendar.  Outstanding students with a Master’s degree in a field other than Computer Science will be counselled about the breadth and depth of the comprehensive examination before proceeding with the application.  Each student’s background will be assessed and his/her program of study designed to ensure appropriate depth and breadth in Computer Science.

Students holding a Bachelor’s degree should enrol at the Master’s level.  Excellent students may be transferred to the Ph.D. program prior to completing their Master’s thesis.

Ph.D. Degree in Software Engineering

Admission requirements are given under the General Regulations of the Graduate School at the beginning of this Calendar.  Outstanding students with a Master’s degree in a field other than Software Engineering will be counselled about the breadth and depth of the comprehensive examination before proceeding with the application.  Each student’s background will be assessed and his/her program of study designed to ensure appropriate depth and breadth in Software Engineering.

Students holding a Bachelor’s degree should enroll at the Master’s level.  Excellent students may be transferred to the Ph.D. program prior to completing their Master’s thesis.

Requirements for the Ph.D. Degrees in Software Engineering and Computer Science

Students must successfully complete the following requirements:

(a)    Equivalent of 4 one-half graduate courses in Computer Science,   Software Engineering, or relevant areas of Engineering or   Mathematics.  Only one
         half course can be from outside the   department, and only one can be at the 600 level.  Students   may be required to take more courses as judged by
         the supervisory committee.
(b)    Part I Comprehensive Examination
(c)    Prepare and successfully defend a thesis proposal
(d)    Successfully complete a “personalized” oral (Part 2  Comprehensive Examination based on the thesis proposal)
(e)    Prepare and successfully defend a thesis

Courses

All graduate courses offered by the Department are one term courses (half courses) and are marked with an asterisk (*). Not all courses are given each year. The 600-level courses are offered in conjunction with senior undergraduate students, but are also available for graduate credit. Graduate students will be required to do additional work as detailed in the course outline which may take the form of a seminar, written report on further studies of the topic, a more extensive project, extra assignments or term projects. Students should contact the Department or the course instructor concerning the appropriateness of their background for any course in which they are interested.

COMPUTING AND SOFTWARE COURSES

*6CB3 / Supercomputing System Architectures / W.F.S. Poehlman
Traditional performance enhancement techniques: pipelining, RISC, VLIW, prefetch, cache; modern high performance systems: mini-, micro-, mainframe supercomputers, array processors, parallelization considerations and vectorization methods.

*6CC3 / Advanced Operating Systems / W.F.S. Poehlman
Modern operating systems: large-scale distributed to small real-time operating systems; microcomputer/mainframe interconnections; message passing techniques; networks; distributed deadlocks and shared memory models; extended file systems and shared resources.

*6CD3 / Distributed System Architectures / W.F.S. Poehlman
Distributed systems; real-time, agent-oriented, heterogeneous, multi-computer, multi-processor, coupling schemes: loose, tight; networking, ATM, frame relay, clustering, software protocols; communication strategies, client/server approaches.

*6D03 / The Human Computer Interface / W.F.S. Poehlman
A study of the principles of good interface design. Information overload problems and accommodating user mental models. Human input and technology insertion methods. Information and data visualization techniques. Modes and the mode awareness problem. Human factors and health issues, ergonomics. Interface design tools and Performance Support Systems.

*6EB3 / Database Management System Design / Staff
Concepts and structures for the design of database management systems. Topics include data models, data normalization, data-description languages, query facilities, file organization and security.

*6EF3 / Software Requirements Activities / R. Khedri
Software requirements gathering and verification techniques.  Using requirements for software testing.  Software requirements management.

*6GB3 / Computational Geometry / P.J. Ryan
Discrete geometry from an algorithmic point of view. Searching, subdivision, proximity and intersection. Applications to problems in object modeling, computer graphics, and computer vision.

*6IB3 / Artificial Intelligence and Knowledge-Based Systems / I. Bruha
AI disciplines: perception, pattern recognition, machine learning, neural nets, image processing, scene analysis, speech processing; problem solving, production systems, backtracking and graph search techniques, planners; PROLOG.  Architectures and applications of expert systems.

*6MG3 / Computer System Architecture / Staff
Major components of a computer and their design issues; instruction set, data path, control, memory, and I/O. Principles of computer arithmetic, pipelining, memory hierarchy, and virtual memory.

*6MH3 / Principles of Operating Systems / S. Qiao
Concepts of operating systems; process co-ordination, memory management, file systems; introduction to distributed systems and computer networks. Involves group projects.

*6TA3 / Introduction to Automata and Formal Language Theory / R. Janicki
Language, classification, definition and properties. Grammars and automata. Regular, context-free and context-sensitive languages. Parallel automata and Petri nets. Applications.

*6TB3 / Compiler Construction / Staff
Lexical analysis; scanner construction, syntax analysis and syntax-directed translation; compiler compilers; intermediate code generation; code generation and optimization.

*6TC3 / Recursive Function Theory and Computability / J.I. Zucker
Recursive and primitive recursive functions, decidability and undecidability with applications to formal language theory, logic and algebra.

*6TD3 / Design and Analysis of Algorithms / J. Peng
Techniques for the design and analysis of algorithms, especially divide-and-conquer, greedy, and dynamic programming algorithms. An introduction to computational complexity. Analysis of particular algorithms of practical or theoretical importance in computer science.

*6TE3 / Continuous Optimization Algorithms / T. Terlaky
Fundamental algorithms and general duality concepts of continuous optimization.  Special attention will be paid to the applicability of the algorithms, their information requirements and computational costs.  Practical engineering problems will illustrate the power of continuous optimization techniques.

*6TF3 / Introduction to Machine Learning and Data Mining / J. Peng
This course aims at giving a basic introduction to a newly-emerging multidisciplinary field:  Data Mining and Machine Learning.  The course presents fundamental concepts, techniques, issues and applications relevant to data mining and machine learning.  Special attention will be paid to one of the standard tools, Support Vector Machines.

*6TG3 / Image and Signal Processing / C. Anand
Survey of image and signal processing applications; Sampling and the Fourier Transform; Filtering; Hardware and Software architectures; Magnetic Resonance Imaging.

The following 700-level courses are offered for graduate credit.

*701 / Logic and Discrete Mathematics in Software Engineering / Staff
Mathematical objects and logical concepts used in Software Engineering.  Higher-order logic.  Partial functions and undefined terms.  Practical application of the axiomatic method.  Recursive definition and inductive proof.  Survey of common mathematical structures and axiomatic theories used in Software Engineering.  Effective use of mechanized mathematics systems.

*702 / Data Structures and Algorithms / Staff
Design and mathematical analysis of data structures and algorithms.  The emphasis is on different design and analysis techniques and how they can be applied to different combinatorial problems.  For example, worst-case vs. amortized analysis and the use of greedy vs. dynamic programming.  Advanced topics like network flows and approximation algorithms will also be studied.

*703 / Software Design / Staff
Formal specification methods.  Requirements specifications.  Fail-safe systems.  Verification of safety critical applications.  Systematic testing.  Specification and design of concurrent, multi-process and distributed systems.

*704 / Embedded, Real-Time Software Systems / Staff
Continuous and discrete event dynamical systems.  Stability, controllability and observability.  State space control.  Scheduling for soft and hard real-time software systems.  Design of software real time control systems and codesign issues.

*705 / Computability and Complexity / Staff
Computability: Finite automata, Turing machines, and recursive functions.  The Halting problem and the Church-Turing thesis.  Complexity: Classes defined in terms of time, space, and circuits.  The reachability method.  The P vs. NP problem, Cook’s theorem, and NP-completeness.  The Time and Space Hierarchy theorems.  Randomized and parallel computations.

*706 / Programming Languages / Staff
Design, definition and implementation of programming languages.  Programming language paradigms; syntax, attribute grammars, typing; axiomatic, operational and denotational semantics; correctness proofs; implementation techniques, virtual machines; design and implementation of Domain-Specific Languages.

*707 / Formal Specification Techniques / Staff
Pre/Postconditions, refinement, state-based approaches, event based approaches, algebraic specifications, Petri nets, temporal logic, properties of programs, and specification, verification, and validation.

*708 / Scientific Computation / Staff
Floating-point arithmetic, solutions of systems of linear equations by direct and iterative methods, sparse matrix algorithms, solving systems of nonlinear equations, integration, differentiation, eigenvalue problems, methods for initial value problems in ordinary differential equations, and automatic differentiation.

*721 / Combinatorics and Computing / F. Franek
Topics in applied combinatorics and graph theory of importance to both theoretical computer science and practical computing including combinatorial computing. Main topics: graph theory and algorithms, combinatorial optimization and algorithms, design theory and coding theory. Solving problems in finite combinatorics using computers.

*722 / Computing Patterns in Strings / W.F. Smyth
This course deals with algorithms for finding "patterns" in strings, patterns of three main kinds: specific, generic, and intrinsic. The importance of approximate patterns and algorithms which identify them is made clear. Applications to DNA sequence analysis and other scientific areas are emphasized.

*723 / Distributed Real-Time Systems / W.F.S. Poehlman
A study of hard and soft systems: specifications, event processing, data concurrency, distribution completeness, corrections, integrity fallback, fault tolerance and applications; timing analysis: synchronization, deadlock, modeling.

*724/ Concurrency Theory / R. Janicki
Models based on interleaving and partial order paradigms including the Calculus of Communicating Systems (CCS), Communicating Sequential Processes (CSP), Actors, Petri Nets, Pomsets and COSY. Basic properties of concurrent systems such as deadlock, liveness, safety, fairness, etc. Temporal Logic techniques. The growing role of concurrent systems in many diverse scientific and engineering activities will also be discussed.

*725 / Formal Methods of Real-Time Systems / M. Lawford
Introduction to formal methods including equivalence verification, model-checking and theorem proving. Emphasis on verification of safety-critical real-time control systems using automated theorem provers and simple programming techniques.

*726 / Parallel Computing and Applications / S. Qiao
Parallel/distributed computer systems, performance analysis of parallel algorithms, design and development of parallel programs, applications to computer simulations.

*727 / Design of Numerical Software / S. Qiao
Principles of finite precision computation, subtleties of floating point arithmetic, design of stable and accurate numerical algorithms, techniques of testing numerical software, portability and performance.

*728 / Computability on Abstract Data Types / J. Zucker
A study of the extension and generalizations of classical computability theory (or recursion theory) to abstract data types.

*729 / Problem Solving with Knowledge-Based Systems / W.F.S. Poehlman
A practical study of knowledge-based technology as applied to appropriate problems including knowledge engineering; structure of expert, neural and fuzzy systems; application areas include simulation, fault analysis, rapid prototyping, adaptive scheduling, control and strategic planning.

*730 / Machine Learning and Related AI Topics / I. Bruha
A broad study of major approaches and methodologies related to machine learning from the viewpoint of artificial intelligence.  Symbolic algorithms of learning.  Statistical algorithms of learning.  Well-known existing learning systems.  Data mining and knowledge discovery.

*731 / Symbolic and Logic Programming / I. Bruha
Methodology of advanced symbolic programming: data structures and non-standard control techniques.  Methodology of logic programming: Prolog programming for AI, strategies of the resolution principle, reverse resolution, elements of theory revision.

*732 / Logical Foundations of Computer Science / J. Zucker
A solid logical and mathematical foundation for reasoning about software and software descriptions is provided. Topics include: introductory concepts in set theory (sets, relations, functions, etc.); various logics (first order, higher order, equational, conditional equational); many-sorted algebras; initial algebra semantics for equational and conditional equational theories.

*733 / Approximation Algorithms in Combinatorial Optimization / S. Kolliopoulos
Design and analysis of polynomial-time algorithms with provable approximation guarantees for hard problems in combinatorial optimization.  Techniques such as the prime-dual method, randomized rounding, and divide-and-conquer will be applied to network design, scheduling and geometric problems.

*734 / Formalized Mathematics / W. Farmer
Computer-supported, formalized mathematical reasoning for practical applications.  Specification and verification in higher-order logic.  Interactive theorem proving systems.  Techniques for developing axiomatic theories.

*735 / Convex Optimization in Engineering / T. Terlaky
Modern modeling and solution techniques.  Conic duality concepts of convex optimization.  Basics of interior point methods.  Fundamental properties of efficiently solvable problem classes.  All considered problem classes are illustrated by some realistic engineering problems.

*736 / Analysis of Stochastic Networks / D. Down
Techniques for the analysis of large networks that can be modeled in a statistical manner.  Single queues, product form networks and mean value analysis.  Fluid and diffusion approximations.  Simulation techniques, including variance reduction.  Hybrid simulation.  Current research directions in Stochastic networks.

*737 / Optimization Software Design / T. Terlaky
Critical review of commercial and open-source optimization software.  Crucial elements of optimization software for linear, mixed integer and non-linear optimization.  Algorithmic and numerical issues, sparse matrix factorization, modeling systems.

*738 / Relation Algebra and Kleene Algebra and their Applications / R. Khedri
Advanced course in relation algebra and an introduction to Kleene Algebra.  Homogeneous relations, orderings and equivalence relations, heterogeneous relations, basic results of Kleene algebra.  Discussion of some computer science and software engineering problems within the framework of these algebras.

*739 / Numerical Algorithms for Complementarity Problems / J. Peng
Theoretical properties and computational methods for complementarity problems, derivative-free methods, smoothing methods and interior point methods, applications.

*740 / Numerical Methods for Ordinary Differential Equations and Differential-Algebraic Equations / N. Nedialkov
Numerical methods for ODEs and DAEs; Runge-Kutta, multistep methods; convergence, accuracy, consistency; error estimation and propagation, stepsize and order control; stability, non-stiff and stiff methods; software for ODEs and DAEs.

*741 / Development and Inspection of Scientific Software / K. Kreyman
This course presents the basic principles of software development for modeling of physical and biological processes.  Using environmental applications it also presents an inspection procedure that should be followed to assure the accuracy and trustworthiness of those computer programs.

*742 / Methods of Symbolic Computation / M. von Mohrenschildt
 This course gives an introduction to symbolic computation methods and their application to (electrical, computer and mechanical) engineering problems. Topics include: linear and nonlinear equations and their solutions; algebraic equations; term-rewriting and their application to formal software specifications; Groebner-basis and their application to geometric problems; differential equations; visualization of dynamic processes.

*743 / Functional Programming / W. Kahl
The powerful abstraction capabilities and clean semantics of functional programming languages improve programmer efficiency and facilitate correct program derivation and transformation. This course will present practical aspects of software development in modern functional programming languages and theoretical foundations, like term rewriting systems, lambda-calculi, and type systems.

*744 / Advanced Topics in Design of Algorithms / G. Karakostas
Advanced design techniques for algorithms, including (but not limited to): approximation algorithms, randomized algorithms, on-line computation and competitive analysis, quantum computing. Each term the course will concentrate mainly on one of these topics for a deeper understanding of the particularities and the defining problems/issues of the field as well as its applications to other fields and to practice.  Presentation of up to date results and tackling of open research problems will be the main requirement for the students taking this course.

*745 / Supervisory Control of Discrete-Event Systems / R. Leduc
This course is an introduction to the control of discrete-event systems (DES), asynchronous systems discrete in space and time (e.g. manufacturing systems, communication systems, etc.). The course will provide a solid foundation for research in this area, focusing on architectural issues such as modular, decentralized, and hierarchical control. The course will also discuss timed DES, as well as current topics of interest.

*746 / Advanced Topics in Polyhedral Optimization / A. Deza
This course provides an introduction to useful frameworks for discrete optimization problems. We introduce the basic concepts of polyhedra, lattices and integer cones and illustrate these notions by some examples coming from combinatorial optimization. An algorithm for finding the Hermite normal form of a lattice and the main methods for facet or vertex enumeration are presented.

*780 / Topics in Computer Science / Staff
Normally a self-study course. Prerequisite: Permission of the Chair of the Department.

The following 700-level courses are relevant to Computer Science and Software Engineering. Not all courses will be offered every year. Interested students should contact the department concerned regarding the course description and offering of a particular course:

ELECTRICAL ENGINEERING COURSES
*711 / Computer-Aided Design / J.W. Bandler
*712 / Matrix Computations in Signal Processing / J.P. Reilly
*723 / Information Theory and Coding / Z-Q.T. Luo, K.M. Wong
*726 / Local Area Networks in Manufacturing Environment / B. Szabados
*764 / Computational Vision / D.W. Capson
*766 / Pattern Recognition / M. Kamath
*767 / Biophysical Modeling of Neural Networks / M. Kamath

MATHEMATICS COURSES
707 / Combinatorial Theory
708 / Graph Theory
711 / Mathematical Logic
712 / Set Theory
745 / Numerical Analysis
782 / Probability Theory

STATISTICS COURSES
*752 / Design of Experiments

Laboratory and Computer Facilities

The departmental computing laboratories consist of networked Sun workstations running Solaris, and PCs running Linux and Windows 2000.  Central file, print and mail services are provided by several server systems:  a Sun Enterprise 4500 (with 10 CPUs and a storage array); 3 Sun Enterprise 450s (with 4 CPUs); and several NT/W2000 PC servers.

A rich suite of software environments and packages are available under Sun Solaris, RedHat Linux, and Windows NT/2000; many popular public domain software, such as GNUware, X11 tools, Java, etc.; plus commercial software packages and tools, such as Matlab, Lisp, Prolog, etc., when required for departmental courses. Facilities are available to graduate students on a 24-hour basis, with support staff available during normal working hours.

Research facilities are furnished by individual faculty members according to the needs of their projects/research, providing an enhanced alternative to regular departmental resources.
 

Degree Programs

School of Graduate Studies