![]() |
COMPUTING
AND SOFTWARE
|
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.