Courses offered in 2014-2015

A course for students with no previous knowledge of computer science. The impact of computers on society. Web design and dynamic content. The inner workings of computers (hardware). Networking principles. Algorithm design and programming. A look at how computers store data (image, sound, and video). Software distribution policies and mechanisms.

Prerequisite

High school level mathematics course on functions.

Restriction

Credit will not be given for COMP 102 if it is taken concurrently with, or after, any of: COMP 202, COMP 203, COMP 208, COMP 250. Management students cannot receive credit for COMP 102.

How computer technologies shape social notions such as ownership, safety, and privacy. Emphasis is on computer science powering both day-to-day technologies (e.g., online social media) and those in the news (e.g., cyberwar). Discussions will investigate technology and social issues in order to understand both.

Introduction to programming in a modern high-level language, modular software design and debugging. Programming concepts are illustrated using a variety of application areas.

Prerequisite

a CEGEP level mathematics course

Restriction

COMP 202 and COMP 208 cannot both be taken for credit. COMP 202 is intended as a general introductory course, while COMP 208 is intended for students interested in scientific computation. COMP 202 cannot be taken for credit with or after COMP 250

Prerequisite

Introduction to computer systems. Concepts and structures for high level programming. Elements of structured programming using FORTRAN 90 and C. Numerical algorithms such as root finding, numerical integration and differential equations. Non-numerical algorithms for sorting and searching.

Prerequisite

differential and integral calculus.

Corequisite

linear algebra: determinants, vectors, matrix operations.

Restriction

COMP 202 and COMP 208 cannot both be taken for credit. COMP 202 is intended as a general introductory course, while COMP 208 is intended for students interested in scientific computations. Credits for either of these courses will not count towards the 60-credit Major in Computer Science. COMP 208 cannot be taken for credit with or after COMP 250.

The design and analysis of data structures and algorithms. The description of various computational problems and the algorithms that can be used to solve them, along with their associated data structures. Proving the correctness of algorithms and determining their computational complexity.

Prerequisite

COMP 250 and MATH 240

Restriction

Open only to students registered in following programs: Honours in Computer Science, Joint Honours in Mathematics and Computer Science, Honours in Applied Mathematics, Honours in Mathematics. Not open to students who have taken or are taking COMP 251.

Restriction

Software development process in practice: requirement elicitation and analysis, software design, implementation, integration, test planning, and maintenance. Application of the core concepts and techniques through the realization of a large software system.

Restriction

This course cannot be taken under the S/U option. Departmental permission required. Students cannot be supervised by the same instructor for two 396 Science courses. Open to students in programs offered by the Faculty of Science only.

Restriction

A research project applying computational approaches to a biological problem. The project is (co)-supervised by a professor in Computer Science and/or Biology. A program advisor from each department has to approve the project.

Prerequisite

COMP 251 and 9 credits of BIOL courses, BIOL 301 recommended.

Restriction

Characteristics and utility of concurrent programs; formal methods for specification, verification and development of concurrent programs; communications, synchronization, resource allocation and management, coherency and integrity.

Prerequisite

Application of computer science techniques to problems arising in biology and medicine, techniques for modeling evolution, aligning molecular sequences, predicting structure of a molecule and other problems from computational biology.

Prerequisite

COMP 251, and MATH 323 or MATH 203 or BIOL 309

Restriction

Not open to students who have taken COMP 562. Not open to students who are taking or have taken COMP 561.

Restriction

The structure of a compiler. Lexical analysis. Parsing techniques. Syntax directed translation. Run-time implementation of various programming language constructs. Introduction to code generation for an idealized machine. Students will implement parts of a compiler.

Prerequisite

Genre and history of games, basic game design, storytelling and narrative analysis, game engines, design of virtual worlds, real-time 2D graphics, game physics and physical simulation, pathfinding and game AI, content generation, 3D game concerns, multiplayer and distributed games, social issues.

Prerequisite

Object-oriented, UML-based software development; requirements engineering based on use cases; using OCL and a coherent subset of UML to establish complete and precise analysis and design documents for a software system; Java-specific mapping strategies for implementation.

Prerequisite

Exposition of the first four layers of the ISO model for computer network protocols, i.e., the physical, data, network, and transport layers. Basic hardware and software issues with examples drawn from existing networks, notably SNA, DECnet, and ARPAnet.

Prerequisite

This course presents an in-depth study of modern cryptography and data security. The basic information theoretic and computational properties of classical and modern cryptographic systems are presented, followed by a cryptanalytic examination of several important systems. We will study the applications of cryptography to the security of systems.

Restriction

Application of computer science techniques to problems arising in biology and medicine, techniques for modeling evolution, aligning molecular sequences, predicting structure of a molecule and other problems from computational biology. An in-depth exploration of key research areas.

Prerequisite

COMP 251, and MATH 323 or MATH 203 or BIOL 309

Restriction

Not open to students who have taken COMP 562. Not open to students who are taking or have taken COMP 462.

Formulation, solution and applications of integer programs. Branch and bound, cutting plane, and column generation algorithms. Combinatorial optimization. Polyhedral methods. A large emphasis will be placed on modelling. Students will select and present a case study of an application of integer programming in an area of their choice.

Restriction

Courses not offered in 2014-2015

This is a seminar format course intended for freshman and other beginning students. The topics are chosen to encourage critical discussion of fundamental ideas. Possible topics are computability, complexity, geometry, vision, AI, pattern recognition, machine models, cryptography and security and social implications of computing.

Prerequisite

High school mathematics.

Restriction

Open only to newly admitted students in U0 or U1, who may take only one FYS. Students who register for more than one will be obliged to withdraw from all but one of them.

Prerequisite

MATH 133 and COMP 202

Restriction

COMP 203 and COMP 250 are considered to be equivalent from a prerequisite point of view, and cannot both be taken for credit. Students who are registered in the following programs: Major or Honours in Computer Science, Major in Software Engineering, any of the joint major programs offered through the Faculty of Science and the Major Concentration in Foundations of Computing, in the Faculty of Arts, may not take this course.

Prerequisite

This course in software engineering teaches basic concepts and methods for software development. The focus is on engineering and analysing requirements, design and code. Small software development exercises will be given where students would learn how to apply different methods.

Logic provides computer science with both a unifying foundational framework and a tool for modeling. Introduction to modern constructive logic, its mathematical properties, and its numerous applications in computer science.

This software engineering course teaches students how to develop, manage and improve their personal processes for developing software. Selected software development practices are introduced through 10 small programming exercises. The students then use these programs to analyse data on their personal performance, plan homework projects, and guide their process improvement.

Prerequisite

Restriction

Team-work and team-processes for evolving software systems. Guided by defined processes, project teams will elicit new requirements, design code and test an enhanced software system. Team members will play various technical and managerial roles in carrying out their software project.

This course examines computational problems related to gene regulation at the mRNA and protein levels. With respect to mRNA expression, topics include microarray analysis, SNP detection, and the inference of genetic networks. With respect to protein expression, topics include peptide sequencing, peptide identification, and the interpretation of interaction maps.

Prerequisite

Use of computer in solving problems in discrete optimization. Linear programming and extensions. Network simplex method. Applications of linear programming. Vertex enumeration. Geometry of linear programming. Implementation issues and robustness. Students will do a project on an application of their choice.

Prerequisite

Characteristics and internal structure of microcomputers and workstations. Architectures of current CISC and RISC micro processors. Assembler and machine languages for microcomputers. System software. Applications for single and networked microcomputers. Students will be assigned hands-on projects.

Study of a collection of algorithms that are basic to the world of concurrent programming. Discussion of algorithms from the following areas: termination detection, deadlock detection, global snapshots, clock synchronization, fault tolerance (byzantine and self-stabilizing systems). Students will implement algorithms on the BBN butterfly and will present papers on topics in these areas.

Prerequisite

Seminar course. A major area of application of the techniques covered in 308-612 is discussed. No prior expertise in the application area is required, since the emphasis of the course is on methods of computation. Storage structures and algorithms for efficient retrieval and processing of data for the application will be discussed.

Prerequisite

Enrolment in Bioinformatics Option Program or permission of coordinators.

Restriction

Enrolment by students in the Bioinformatics Option Program or by permission of course coordinators only. Computer Science graduate students not in the Bioinformatics Option Program need additional permission of the M.Sc. or Ph.D. Committee respectively.

Program analysis and transformations are used in optimizing compilers and other automatic tools such as bug-finders, verification tools and software engineering applications. Course topics include the design of intermediate representations, control flow analysis, data flow analysis at both the intra- and inter-procedural level and program transformations for performance improvement.

Prerequisite

COMP 251 or equivalent, COMP 302 or equivalent, COMP 520 is useful but not strictly necessary

The course aims to teach the main features of, and the techniques to construct, Software Development Environments (SDEs). Students would benefit from this course by obtaining an understanding of the practical problems in large scale software development projects, and how formal and practical approaches may be put to use in solving these problems.

Software is critical; the record is poor, and improvement action is needed. The quality of a software system is governed by the quality of the process used to develop and maintain it. The course aims to describe the technical and managerial topics critical in the design, engineering and management of software processes.

Prerequisite

Restriction

Conservative and optimistic synchronization involved in executing a discrete event simulation on a distributed platform (e.g. cluster of workstations, shared memory multiprocessor). Focus is on efficiency, strengths and limitations of the different approaches. Applications to large simulations (networks, VLSI, virtual environments).

Restriction

A study of recent work in parallel search techniques. Algorithms to be considered are: parallel branch and bound, parallel minimax and parallel resolution techniques for theorem proving. Students will be expected to write programs implementing algorithms for parallel search on the School's 32-processor BBN parallel computer.