**Computing and Communications**

There is an increasing demand for graduates with expertise both in communications engineering and certain areas of software engineering, as well as in emerging areas such as data science and machine learning. With the proliferation of communications networks, cloud computing, big data, and machine learning has come the demand for mathematically sophisticated data processing algorithms. The Computing and Communications option combines basic communication and signal processing content with a package of courses in protocols, algorithm analysis, and software engineering methods.

Apart from their core engineering and mathematics courses, students take high level program specific courses in engineering systems, communications and information theory, stochastic processes and systems, cryptography, and coding theory. Graduates of the program are exceptionally well-prepared for careers in telecommunications, software engineering, and machine learning, as well as careers in any field requiring strong analytical skills.

**Second Year Courses**

CMPE 212: Introduction to Computing Science IIIntroduction to object-oriented design, architecture, and programming. Use of packages, class libraries, and interfaces. Encapsulation and representational abstraction. Inheritance. Polymorphic programming. Exception handling. Iterators. Introduction to a class design notation. Applications in various areas.

ELEC 271: Digital SystemsBoolean algebra applied to digital systems; logic gates; combinational logic design; electronic circuits for logic gates; arithmetic circuits; latches and flipflops, registers and counters; synchronous sequential logic and state machine design; implementation in programmable logic chips.

ELEC 274: Computer ArchitectureNumber and data representation. Logical structure of computers. Instruction set architecture. Instruction execution sequencing. Assembly-language programming. Input/output interfaces and programming. Processor datapath and control unit design. Semiconductor memory technology and memory hierarchy design.

ELEC 278: Fundamentals of Information StructuresFundamentals of Data Structures and Algorithms: arrays, linked lists, stacks, queues, deques, asymptotic notation, hash and scatter tables, recursion, trees and search trees, heaps and priority queues, sorting, and graphs. Advanced programming in the C language. Introduction to object oriented programming concepts in the context of data structures.

ENPH 239: Electricity and MagnetismThe experimental basis and mathematical description of electrostatics, magnetostatics and electromagnetic induction, together with a discussion of the properties of dielectrics and ferromagnetics, are presented. Both the integral and vector forms of Maxwell’s equations are deduced.

**Third Year Courses**

ELEC 371: Microprocessor Interfacing and Embedded SystemsMicroprocessor bus organization and memory interfaces; parallel input/output interface design; assembly-language and high-level-language programming; interrupts and exceptions; timers; embedded systems organization and design considerations; integration in microcontrollers and programmable logic chips; interfacing with sensors and actuators; embedded system case studies.

MTHE 353: Probability IIIntermediate probability theory as a basis for further study in mathematical statistics and stochastic processes; probability measures, expectations; modes of convergence of sequences of random variables; conditional expectations; independent systems of random variables; Gaussian systems; characteristic functions; Law of large numbers, Central limit theory; some notions of dependence.

CMPE 320: Fundamentals of Software Development

Introduction to management of small and medium-scale software projects. Advanced programming methodology using the programming language C++. Includes a significant programming project.

CMPE 332: Database Management SystemsData models: relational, entity-relationship. Relational query languages: relational algebra and SQL. Relational database design. Application interfaces and embedded SQL. Storage and indexing.

CMPE 365: Algorithms IPrinciples of design, analysis and implementation of efficient algorithms. Case studies from a variety of areas illustrate divide and conquer methods, the greedy approach, branch and bound algorithms and dynamic programming.

**Fourth Year Courses**

MTHE 455: Stochastic Processes and ApplicationsMarkov chains, birth and death processes, random walk problems, elementary renewal theory, Markov processes, Brownian motion and Poisson processes, queuing theory, branching processes.

MTHE 474: Information TheoryTopics include: information measures, entropy, mutual information, modeling of information sources, lossless data compression, block encoding, variable-length encoding, Kraft inequality, fundamentals of channel coding, channel capacity, rate-distortion theory, lossy data compression, rate-distortion theorem.

MTHE 477: Data Compression and Source CodingTopics include: arithmetic coding, universal lossless coding, Lempel-Ziv and related dictionary based methods, rate-distortion theory, scalar and vector quantization, predictive and transform coding, applications to speech and image coding.

**Technical Electives**

In the fourth year of the program, students choose four technical electives to compliment the core courses and explore their individual interests. At least one must be chosen from List I and the remaining from List I or List II so that they satisfy certain engineering design and engineering science criteria. Course offerings change year to year.

See the current Academic Calendar for a complete list of offered technical electives.

### List I

MTHE 406: Introduction To Coding TheoryConstruction and properties of finite fields. Polynomials, vector spaces, block codes over finite fields. Hamming distance and other code parameters. Bounds relating code parameters. Cyclic codes and their structure as ideals. Weight distribution. Special codes and their relation to designs and projective planes. Decoding algorithms.

MTHE 418: Number Theory & CryptographyTime estimates for arithmetic and elementary number theory algorithms (division algorithm, Euclidean algorithm, congruences), modular arithmetic, finite fields, quadratic residues. Simple cryptographic systems; public key, RSA. Primality and factoring: pseudoprimes, Pollard’s rho-method, index calculus. Elliptic curve cryptography.

MTHE 430: Control TheoryThis course covers core topics in both classical and modern control theory. Overview of classical control theory using frequency methods. Linear and nonlinear controlled differential systems and their solutions. Stabilization and stability methods via Lyapunov analysis or linearization. Controllability, observability, minimal realizations, feedback stabilization, observer design. Optimal control theory, the linear quadratic regulator, dynamic programming.

MTHE 434: Optimization Theory with Applications to Machine LearningTheory of convex sets and functions; separation theorems; primal-dual properties; geometric treatment of optimization problems; algorithmic procedures for solving constrained optimization programs; applications of optimization theory to machine learning.

MTHE 472: Control of Stochastic SystemsThis course concerns the optimization, control, and stabilization of dynamical systems under probabilistic uncertainty with applications in engineering systems and applied mathematics. Topics include: controlled and control-free Markov chains and stochastic stability; martingale methods for stability and stochastic learning; dynamic programming and optimal control for finite horizons, infinite horizons, and average cost problems; partially observed models, non-linear filtering and Kalman Filtering; linear programming and numerical methods; reinforcement learning and stochastic approximation methods; decentralized stochastic control, and continuous-time stochastic control.

MTHE 478: Topics In Communication TheorySubject matter will vary from year to year. Possible subjects include: constrained coding and applications to magnetic and optical recording; data compression; theory and practice of error-control coding; design and performance analysis of communication networks; and other related topics.

MTHE 484: Data NetworksThis course covers performance models for data networking, delay models and loss models; analysis of multiple access systems, routing, and flow control; multiplexing; priority systems; satellite multiple access, wireless networking, wireless sensor networks. Knowledge of networking protocols is not required.

MTHE 454: Statistical Spectrum EstimationMany systems evolve with an inherent amount of randomness in time and/or space. The focus of this course is on developing and analyzing methods for analyzing time series. Because most of the common time–domain methods are unreliable, the emphasis is on frequency–domain methods, i.e. methods that work and expose the bias that plagues most time–domain techniques. Slepian sequences (discrete prolate spheroidal sequences) and multi–taper methods of spectrum estimation are covered in detail.

MTHE 437: Topics In Applied MathematicsTopic: An Introduction to Stochastic Differential Equations (with Applications to Mathematical Finance and Engineering) The aim of this course is to provide a rigorous introduction to the theory of stochastic calculus and stochastic differential equations, and to survey some of its most important applications, especially in Mathematical Finance. The Itô stochastic integral and its associated “Itô Calculus” will be derived in the general framework of continuous semimartingales, leading to a detailed treatment of stochastic differential equations (SDEs) and their properties. The theory thus developed will be applied to selected problems in Mathematical Finance (option pricing and hedging, trading strategies and arbitrage) and Engineering (boundary-value problems, filtering, optimal control). Numerical aspects of SDEs will also be discussed.

MTHE 433: Continuum Mechanics with ApplicationsContinuum mechanics lays the foundations for the study of the mechanical behavior of solids and fluids. After a review of vector and tensor analysis, the kinematics of continua are introduced. Emphasis is given to the concepts of stress, strain and deformation. The fundamental laws of conservation of mass, balances of (linear and angular) momentum and energy are presented together with the constitutive models. Applications of these models are given in the theory of linearized elasticity and fluid dynamics.

MTHE 439: Lagrangian Mechcanics, Dynamics ControlGeometric modelling, including configuration space, tangent bundle, kinetic energy, inertia, and force. Euler-Lagrange equations using affine connections. The last part of the course develops one of the following three applications: mechanical systems with nonholonomic constraints; control theory for mechanical systems; equilibria and stability.

MTHE 457: Statistical LearningIntroduction to the theory and application of statistical algorithms. Topics include classification, smoothing, model selection, optimization, sampling, supervised and unsupervised learning.

### List II

CMPE 434: Distributed SystemsDistributed systems goals, characteristics, and architectures. Processes: models, inter-process communication and coordination. Name services. Consistency and replication. Fault tolerance: design for reliable communication and recovery. Security. Development paradigms based on data types: object, file, and web-based systems.

CMPE 454: Computer GraphicsAn introduction to computer graphics, including a review of current hardware; modelling and transformations in two and three dimensions; visual realism; perspective, hidden surface elimination, and shading; colour models; applications in several fields.

CMPE 457: Image Processing and Computer VisionFundamental concepts and applications in image processing and computer vision. Topics include image acquisition, convolution. Discrete Fourier Transform, image enhancement edge detection, segmentation, image registration, human contrast perception, colour perception and reproduction, and stereo vision.

ELEC 374: Digital Systems EngineeringHigh-performance logic design for arithmetic circuits; memory system designs based on static and dynamic RAMs; computer bus protocols and standard I/O interfaces; mass storage devices; hardware description languages (VHDL, Verilog); fault testing, design for testability, built-in self-test, memory testing, and boundary-scan architectures; asynchronous sequential circuit design; introduction to GPU architectures and GPU computing. The course is supplemented by a CPU design project that allows students to become proficient with Field Programmable Gate Array (FPGA) devices and associated CAD tools, as well as with GPU computing through nVidia CUDA or OpenCL languages.

ELEC 377: Operating SystemsOperating systems for conventional shared memory computers. System services and system calls, concurrent processes and scheduling, synchronization and communication, deadlock. File systems and protection, memory management and virtual memory, device management and drivers. Unix operating system. Real-time and distributed systems. Security.

ELEC 421 : Digital Signal Processing: Filters and System DesignSampling theorem, filter realization structures, quantization errors and finite word length effects, digital signal processor programming, finite and infinite impulse response filter design techniques, discrete and fast Fourier transform.

ELEC 422: Digital Signal Processing: Random Models and ApplicationsRecent DSP topics including: bandpass sampling, oversampling A/D conversion, quantization noise modelling, multi-rate signal processing, filterbanks, quadrature mirror filters, applications to communications systems, speech and image compression; processing of discrete-time random signals.

ELEC 461: Digital CommunicationsRepresentation of signals and noise, Gaussian processes, correlation functions and power spectra. Linear systems and random processes. Performance analysis and design of coherent and noncoherent communication systems, phase-shift-keying, frequency-shift,-keying, and M-ary communication systems. Optimum receivers and signal space concepts. Information and its measure, source encoding, channel capacity and error correcting coding.

ELEC 464: Wireless CommunicationsFundamental principles and practice of current wireless communications systems and technologies. Historical context, the wireless channel including path loss, shadowing, fading, and system modes in use. Capacity limitations on transmission rate, transmission of data by signaling over wireless channels via digital modulation, optimum receivers, countermeasures to fading and interference via diversity and equalization, multiple user systems including multiple access FDMA, TDMA, CDMA, FDMA/TDMA, uplink and downlink; capacity and power control, design of cellular networks. Selected standards and emerging trends are also surveyed.

ELEC 470: Computer System ArchitectureThis course covers advanced topics in computer architecture with a quantitative perspective. Topics include: instruction set design; memory hierarchy design; instruction-level parallelism (ILP), pipelining, superscalar processors, hardware multithreading; thread-level parallelism (TLP), multiprocessors, cache coherency; clusters; introduction to shared-memory and message-passing parallel programming; data-level parallelism (DLP), GPU architectures.

ELEC 373: Computer NetworksNetwork architecture with physical, data link, network, and transport layers for frame transmission and packet switching, standards such as Ethernet and 802.11 for wired and wireless networks, protocols such as TCP/IP, internetworking, routing, and socket programming.

SOFT 437: Performance AnalysisAnalytic and empirical evaluation of the performance of software systems. Performance modeling. Experimental design and statistical techniques for empirical performance analysis.

CMPE 251: Data AnalyticsIntroduction to data analytics; data preparation; assessing performance; prediction methods such as decision trees, random forests, support vector machines, neural networks and rules; ensemble methods such as bagging and boosting; clustering techniques such as expectation-maximization, matrix decompositions, and biclustering; attribute selection.

CMPE 351: Advanced Data AnalyticsDesign and implementation of complex analytics techniques; predictive algorithms at scale; deep learning; clustering at scale; advanced matrix decompositions, analytics in the Web, collaborative filtering; social network analysis; applications in specialized domains.