**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 Computer 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 351: Probability I Probability theory: probability models; random variables; jointly distributed random variables; transformations and generating functions. Inequalities and limit laws. Distributions: binomial, Poisson, exponential, gamma, normal. Applications: elementary stochastic processes, time-to-failure models, binary communication channels with Gaussian noise.

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 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.

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.

**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 430: Modern Control TheoryThis course covers core topics in modern control theory: Linearization, existence and uniqueness of trajectories for nonlinear and linear systems, the transition matrix, controllability, observabiity, minimal realizations, feedback stabilization, linear state observers, optimal control theory, the linear quadratic regulator, dynamic programming.

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.

### List II

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 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 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.

CMPE 320: Fundamentals of Software DevelopmentIntroduction to management of small and medium-scale software projects. Advanced programming methodology using the programming language C++. Includes a significant programming project.

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.