Courses

COMP 106 / DISCRETE MATHEMATICS FOR COMPUTER SCIENCE AND ENGINEERING

An introductory course covering: Logic, formal reasoning, propositional ?logic, sets, growth of functions, algorithmic complexity, number theory, mathematical induction, ?combinatorics, recurrence, generating functions, relations, graphs, and models of computation.
Credits: 3

COMP 110 / INTRODUCTION TO COMPUTER PROGRAMMING WITH MATLAB

COMP 110 is a first course in computer programming. The objective is to introduce the principles of computer programming and algorithm development using Matlab, with particular emphasise on scientific computation and data processing. Topics covered include basic computer literacy and organization; variables, operators, expressions, data types, arrays, matrices; conditional and repetition control statements; modular programming, built-in and user-defined functions; string manipulation; text and binary file processing; structures; debugging; data plotting and visualization; graphical user interfaces.
Credits: 3

COMP 130 / INTRODUCTION TO PROGRAMMING (JAVA)

This course is a general introduction to programming using the Java programming language. It emphasizes the structured programming language aspects of Java and de-emphasizes its object-oriented aspects. The latter are covered only to the extent that enables students to use standard Java libraries for common tasks. Students who complete this course successfully should gain a solid foundation in algorithmic thinking and structured programming, and should be able to perform basic, common computational tasks easily and efficiently.
Credits: 3

COMP 131 / INTRODUCTION TO PROGRAMMING

Introduction to imperative programming. Compiling and executing programs. Control statements: Conditional, branching and looping constructs. Methods and functions. Recursion. Basic algorithmic techniques. Arrays. Abstract Data Types, Classes, Objects. Inheritance. Strings and Characters. Iteration. Packages. Access and Visibility Control. Exceptions and Exception Handling. Files and Streams. Selected standard packages and utilities. Introduction to Graphical User Interfaces.
Credits: 3

COMP 132 / ADVANCED PROGRAMMING

Advanced programming techniques and large scale programming. Inheritance and Type Hierarchies. Polymorphism. Object-oriented Programming. Code reuse. Graphical User Interfaces. Advanced class and template libraries. Introduction to low-level languages. Pointers and references. Resource management: Dynamic storage allocation, memory management. Virtual functions.
Credits: 3
Prerequisites: COMP. 131 or Comp 130 or consent of the instructor

COMP 200 / STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS

Introduction to core software engineering concepts. Control of complexity in large programming systems. Building abstractions with procedures and data. Modularity, objects and state. Machine models, compilers and interpreters. Concurrency.
Credits: 3
Prerequisites: COMP. 106 or consent of the instructor

COMP 202 / DATA STRUCTURES&ALGORITHMS

Basic data structures, algorithms, and their computational complexity. List, stack, queue, priority queue, map, tree, balanced tree, hash table, heap, skip list, trie, graph. Basic search, selection, sorting, and graph algorithms. Recursion.
Credits: 3
Prerequisites: (COMP. 106 or COMP. 201) and (COMP. 130 or COMP. 131)

COMP 230 / C PROGRAMMING FOR SOLVING ENGINEERING PROBLEMS

Engineering problem solving and design using C programming language. The course will cover basic syntax/grammar and concepts of C programming language, including control flow, functions and modular programming, static and global variables, pointers and memory addressing, arrays and pointer arithmetic, strings and searching and sorting, followed by example engineering analysis and design problems, including electric circuit analysis, digital signal processing, machine learning, finance, and data analysis.
Credits: 3

COMP 291 / SUMMER PRACTICE I

A minimum of 20 working days of training in an industrial summer practice program after the completion of second year. The training is based on the contents of the "Summer Practice Guide Booklet" prepared by each engineering department. Students receive practical knowledge and hands-on experience in an industrial setting.
Credits: 0

COMP 301 / PROGRAMMING LANGUAGE CONCEPTS

Programming languages (i.e. C++, Java, Ada, Lisp, ML, Prolog), concepts and paradigms. Syntax, semantics. Abstraction, encapsulation, type systems, binding, run-time storage, sequencers, concurrency, control. Providing examples from functional, object-oriented and logic programming paradigms.
Credits: 3
Prerequisite: COMP. 200

COMP 302 / SOFTWARE ENGINEERING

Review of methods and tools used in software development. Object oriented design and open software architectures. Requirements analysis, design, implementation, testing, maintenance and management. Engineering applications.
Credits: 3
Prerequisite: COMP 132, COMP. 202 or consent of the instructor

COMP 303 / COMPUTER ARCHITECTURE

Hardware organization of computers. Computer components and their functions. Instruction sets, instruction formats and addressing modes. Pipelining and pipeline hazards. Instruction level parallelism. Assembly and machine language. Data and control paths. Computer arithmetic. Floating point representation. Memory hierarchy, cache organization and virtual memory. Parallel architectures.
Credits: 3
Prerequisite: ELEC. 204 or consent of the instructor

COMP 304 / OPERATING SYSTEMS

Introduction to operating systems concepts, process management, memory management, virtual memory, input-output and device management, file systems, job scheduling, threads, process synchronization, deadlocks, interrupt structures, case studies of operating systems.
Credits: 3
Prerequisite: (COMP. 132 and COMP. 303) or consent of the instructor

COMP 305 / ALGORITHMS&COMPLEXITY

Time response, steady-state analysis and stability of LTI systems. Linear feedback systems. Applications and consequences of feedback. Root-locus analysis of linear feedback systems. PID controller design via root locus. Telecommunication fundamentals. Amplitude Modulation. Demodulation for Sinusoidal AM. Frequency-division multiplexing. Phase and Frequency Modulation. Introduction to digital communications. Pulse amplitude modulation. Time-division multiplexing.
Credits: 3
COMP 202

COMP 306 / DATABASE MANAGEMENT SYSTEMS

Introduction to database management systems, file structure, organization and processing, sequential files, direct files, sort/merge, indexed and hash files, relational data model, logical database design, entity-relationship data model, data description and query languages.
Credits: 3
Prerequisite: COMP. 202 or consent of the instructor

COMP 317 / EMBEDDED SYSTEMS

Microcomputer fundamentals including architecture and operation of a typical microprocessor; bus organization; instruction set; addressing modes; analysis of clocks and timing; interrupt handling; memory (RAM and ROM); DMA, serial and parallel input/output; assembly language programming.
Credits: 3
Prerequisite: ELEC. 204 or consent of the instructor

COMP 319 / MOBILE DEVICE PROGRAMMING

This course covers programming environments and languages over mobile devices. Mobile device architectures and environments, MIDP Application Model, User Interface Libraries, High Level User Interface Components, Low Level User Interface Libraries, MIDP Persistance Libraries. Mobile device operating system environments. Operating Systems such as Symbian, Android, Mobile Windows, iPhone OS.
Credits: 3
Prerequisite: COMP. 202 or COMP. 132 or consent of the instructor

COMP 341 / INTRODUCTION TO ARTIFICIAL INTELLIGENCE

A graduate-level introduction to artificial intelligence with the goals of understanding human intelligence from a computational point of view and building applied systems that can reason, learn, and adapt. Review of seminal work on language, vision, robotics, game playing with an emphasis on machine learning techniques.
Credits: 3
Prerequisite: COMP. 202 or consent of the instructor

COMP 350 / SELECTED TOPICS IN COMPUTER ENGINEERING


Credits: 3

COMP 351 / SELECTED TOPICS IN COMPUTER ENGINEERING


Credits: 3

COMP 390 / INDEPENDENT STUDY

Investigation of one or more topics of interest with the guidance of an instructor. Presentation of a research proposal at the end of the term.
Credits: 3

COMP 391 / SUMMER PRACTICE II

A minimum of 20 working days of training in an industrial summer practice program after the completion of third year. The training is based on the contents of the "Summer Practice Guide Booklet" prepared by each engineering department. Students receive practical knowledge and hands-on experience in an industrial setting.
Credits: 0

COMP 404 / DIGITAL SPEECH AND AUDIO PROCESSING

Sound and human speech systems, phonetics and phonology, speech signal representations, role of pitch and formants, pitch-scale and time-scale modifications, basics of speech coding and VoIP systems, fundamentals of pattern and speech recognition, search algorithms for speech recognition.
Credits: 3
Prerequisite: ELEC. 201 or consent of the instructor

COMP 408 / COMPUTER VISION AND PATTERN RECOGNITION

Study of computational models of visual perception and their implementation in computer systems. Topics include: image formation; edge, corner and boundary extraction, segmentation, matching, pattern recognition and classification techniques; 3-D Vision: projection geometry, camera calibration, shape from stereo/silhouette/shading, model-based 3D object recognition; color texture, radiometry and BDRF; motion analysis.
Credits: 3
Prerequisite: ELEC. 201 or consent of the instructor

COMP 410 / COMPUTER GRAPHICS

Theory and practice of 3D computer graphics. Topics covered include graphics systems and models; geometric representations and transformations; graphics programming; input and interaction; viewing and projections; compositing and blending; illumination and color models; shading; texture mapping; animation; rendering and implementation; hierarchical and object-oriented modeling; scene graphs; 3D reconstruction and modeling.
Credits: 3
Prerequisite: COMP. 202 or consent of the instructor

COMP 415 / DISTRIBUTED COMPUTING SYSTEMS

Introduction to distributed computing, overview of operating systems, process synchronization and deadlocks, threads and thread synchronization, communication protocols, synchronization in distributed systems, management of time, causality, logical clocks, consistent global states, distributed mutual exclusion, distributed deadlock detection, election algorithms, agreement protocols, consensus, multicast communication, distributed transactions, replication, shared memory model, scheduling, distributed file systems, fault tolerance in distributed systems, distributed real-time systems.
Credits: 3
Prerequisite: COMP. 304 or consent of the instructor

COMP 416 / COMPUTER NETWORKS

Principles of data communications and computer networks; ISO/OSI reference model with emphasis on data link, network and transport layers; TCP/IP protocol suite; asynchronous and synchronous transmission; data link control; multiplexing; wide area networks; routing; congestion control; local area networks; communications architecture and transport protocols; distributed applications.
Credits: 3
Prerequisite: COMP. 132 or consent of the instructor

COMP 428 / WIRELESS NETWORKS

Wireless network applications, wireless channel and communication fundamentals, medium access control protocol, routing protocol, topology control, time synchronization, data-centric networking, wireless communication standards.
Credits: 3

COMP 429 / PARALLEL PROGRAMMING

Fundamental concepts of parallelism. Overview of parallel architectures, multicores, heterogeneous systems, shared memory and distributed memory systems. Parallel programming models and languages. Multithreaded, message passing, data driven, task parallel and data parallel programming. Design of parallel programs, decomposition, granularity, locality, communication, load balancing, and asynchrony. Performance modeling of parallel programs, sources of parallel overheads.
Credits: 3
Prerequisite: COMP. 132

COMP 434 / COMPUTER AND NETWORK SECURITY

Overview of Computer Security Techniques, Conventional Encryption, Public-Key Cryptography, Key Management, Message Authentication, Hash Functions and Algorithms, Digital Signatures, Authentication Protocols, Access Control Mechanisms, Network Security Practice, TCP/IP Security, Web Security, SSL (Secure Socket Layer), Denial-of-Service Attacks, Intrusion Detection, Viruses.
Credits: 3

COMP 437 / INTELLIGENT USER INTERFACES

Applications of artificial intelligence in user interfaces. Design, implementation, and evaluation of user interfaces that use machine learning, computer vision and pattern recognition technologies. Supporting tools for classification, regression, multi-modal information fusion. Gaze-tracking, gesture recognition, object detection, tracking, haptic devices, speech-based and pen-based interfaces.
Credits: 3
Prerequisite: (COMP. 130 or COMP. 131) or consent of the instructor

COMP 441 / MACHINE LEARNING

An introduction to the fields of machine learning and data mining from a statistical perspective. Machine learning is the study of computer algorithms that improve automatically through experience. Vast amounts of data generated in many fields from biology to finance to linguistics makes a good understanding of the tools and techniques of machine learning indispensable. Topics covered include regression, classification, kernel methods, model assessment and selection, boosting, neural networks, support vector machines, nearest neighbors, and unsupervised learning.
Credits: 3

COMP 442 / NATURAL LANGUAGE PROCESSING

Fundamental concepts and current research in natural language processing. Algorithms for processing linguistic information. Computational properties of human languages. Analysis at the level of morphology, syntax, and semantics. Modern quantitative techniques of using large corpora, statistical models, and machine learning applied to problems of acquisition, disambiguation and parsing. Applications such as machine translation and question answering.
Credits: 3
Prerequisite: COMP. 341 or consent of the instructor

COMP 443 / MODERN CRYPTOGRAPHY

Introduction to cryptographic concepts. Symmetric encryption, the public-key breakthrough, one-way functions, hash functions, random numbers, digital signatures, zero-knowledge proofs, modern cryptographic protocols, multi-party computation. Everyday use examples including online commerce, BitTorrent peer-to-peer file sharing, and hacking some old encryption schemes.
Credits: 3
Prerequisite: COMP. 106 or consent of the instructor

COMP 446 / ALGORITHM DESIGN AND ANALYSIS

Advanced topics in data structures, algorithms, and their computational complexity. Asymptotic complexity measures. Graph representations, topological order and algorithms. Forests and trees. Minimum spanning trees. Bipartite matching. Union-find data structure. Heaps. Hashing. Amortized complexity analysis. Randomized algorithms. Introduction to NP-completeness and approximation algorithms. The shortest path methods. Network flow problems.
Credits: 3
Prerequisite: COMP. 202 or consent of the instructor

COMP 450 / SELECTED TOPICS IN COMPUTER ENGINEERING


Credits: 3
Prerequisite: COMP. 303 or consent of the instructor

COMP 451 / SELECTED TOPICS IN COMPUTER ENGINEERING


Credits: 3

COMP 470 / BIOINFORMATICS AND ALGORITHMS IN COMPUTATIONAL BIOLOGY

Algorithms, models, representations, and databases for collecting and analyzing biological data to draw inferences. Overview of available molecular biological databases. Sequence analysis, alignment, database similarity searches. Phylogenetic trees. Discovering patterns in protein sequences and structures. Protein 3D structure prediction: homology modeling, protein folding, representation for macromolecules, simulation methods. Protein-protein interaction networks, regulatory networks, models and databases for signaling networks, data mining for signaling networks.
Credits: 3

COMP 489 / SOFTWARE RELIABILITY: SPECIFICATION, TESTING AND VERIFICATION

Tools and techniques for ensuring software reliability. Specification formalisms and languages. Modeling tools and languages. Unit and integration testing. Automated testing and verification tools and algorithms. Mathematical representations for programs and executions. Hoare logic. Specification using modular contracts: Preconditions, postconditions, loop and object invariants. Ownership systems. Automated test generation. Model-based testing. Coverage metrics for testing adequacy. Type and effect systems for reliable software. Software model checkers. Static analysis. Concurrent/multi-threaded programs. Correctness criteria for concurrent programs: race-freedom, atomicity, linearizability and serializability. Testing, verification and debugging tools for concurrent programs.
Credits: 3

COMP 491 / COMPUTER ENGINEERING DESIGN I

A capstone design course where students apply engineering and science knowledge in a computer engineering design project. Development, design, implementation and management of a project in teams under realistic constraints and conditions. Emphasis on communication, teamwork and presentation skills.
Credits: 4
Prerequisite: (COMP. 202 and COMP. 302) or consent of the instructor

COMP 492 / COMPUTER ENGINEERING DESIGN II

A capstone design project on an industrially relevant problem. Students work on teams in consultation with faculty and industrial members.
Credits: 3

COMP 504 / DIGITAL SPEECH AND AUDIO PROCESSING

Sound and human speech systems, phonetics and phonology, speech signal representations, role of pitch and formants, pitch-scale and time-scale modifications, basics of speech coding and VoIP systems, fundamentals of pattern and speech recognition, search algorithms for speech recognition.
Credits: 3
Prerequisite: ELEC. 201 or consent of the instructor

COMP 506 / DIGITAL IMAGE AND VIDEO PROCESSING

Review of multi-dimensional sampling theory, aliasing, and quantization, fundamentals of color, human visual system, 2-D Block transforms, DFT, DCT and wavelets. Image filtering, edge detection, enhancement, and restoration. Basic video file formats, resolutions, and bit rates for various digital video applications. Motion analysis and estimation using 2D and 3D models. Motion-compensated filtering methods for noise removal, de-interlacing, and resolution enhancement. Digital image and video compression methods and standards, including JPEG/JPEG2000 and MPEG-1/2 and 4. Content-based image and video indexing and MPEG-7.
Credits: 3
Prerequisite: ELEC. 303 or consent of the instructor

COMP 508 / COMPUTER VISION AND PATTERN RECOGNITION

Study of computational models of visual perception and their implementation in computer systems. Topics include: image formation; edge, corner and boundary extraction, segmentation, matching, pattern recognition and classification techniques; 3-D Vision: projection geometry, camera calibration, shape from stereo/silhouette/shading, model-based 3D object recognition; color texture, radiometry and BDRF; motion analysis.
Credits: 3

COMP 510 / COMPUTER GRAPHICS

Theory and practice of 3D computer graphics. Topics covered include graphics systems and models; geometric representations and transformations; graphics programming; input and interaction; viewing and projections; compositing and blending; illumination and color models; shading; texture mapping; animation; rendering and implementation; hierarchical and object-oriented modeling; scene graphs; 3D reconstruction and modeling.
Credits: 3
Prerequisite: COMP. 202 or consent of the instructor

COMP 513 / INFORMATION THEORY

Entropy, Relative Entropy and Mutual Information; Asymptotic Equipartition Theory; Entropy Rates of a Stochastic Process; Data Compression; Kolmogorov Complexity; Channel Capacity; Differential Entropy; The Gaussian Channel; Maximum Entropy and Spectral Estimation; Rate Distortion Theory, Network Information Theory.
Credits: 3

COMP 515 / DISTRIBUTED COMPUTING SYSTEMS

Introduction to distributed computing, overview of operating systems, process synchronization and deadlocks, threads and thread synchronization, communication protocols, synchronization in distributed systems, management of time, causality, logical clocks, consistent global states, distributed mutual exclusion, distributed deadlock detection, election algorithms, agreement protocols, consensus, multicast communication, distributed transactions, replication, shared memory model, scheduling, distributed file systems, fault tolerance in distributed systems, distributed real-time systems.
Credits: 3
Prerequisite: COMP. 304 or consent of the instructor

COMP 528 / WIRELESS NETWORKS

Wireless network applications, wireless channel and communication fundamentals, medium access control protocol, routing protocol, topology control, time synchronization, data-centric networking, wireless communication standards.
Credits: 3

COMP 529 / PARALLEL PROGRAMMING

Fundamental concepts of concurrency, non-determinism, atomicity, race-conditions, synchronization, mutual exclusion. Overview of parallel architectures, multicores, distributed memory. Parallel programming models and languages, multithreaded, message passing, data driven, and data parallel programming. Design of parallel programs, decomposition, granularity, locality, communication, load balancing. Patterns for parallel programming, structural, computational, algorithm strategy, concurrent execution patterns. Performance modeling of parallel programs, sources of parallel overheads.
Credits: 3

COMP 532 / MULTIMEDIA COMMUNICATIONS

Review of multimedia (image, video and audio) source coding/compression techniques and standards (JPEG, MPEG, H26x); Review of communication and networking architectures and IP networks; QoS, delay, jitter, rate control, scheduling, and traffic engineering for real-time multimedia delivery; Reliability, error control, error concealment and resilience techniques; Streaming media and real-time communication techniques and protocols, RTP/RTCP, IntServ, DiffServ, MPLS; Transmission of multimedia over Internet, wireless channels, mobile cellular networks, GSM, 3G, 4G wireless systems, and satellite networks; Current and future applications of multimedia communications, e.g., voice-over-IP (VoIP), Internet Video conferencing, SIP, IMS, video-on-demand, digital video broadcasting systems, real-time delivery of 3DTV; Current state-of-the-art and future visions in multimedia communications research.
Credits: 3
Prerequisite: ELEC. 406 or consent of the instructor

COMP 534 / COMPUTER AND NETWORK SECURITY

Overview of Computer Security Techniques, Conventional Encryption, Public-Key Cryptography, Key Management, Message Authentication, Hash Functions and Algorithms, Digital Signatures, Authentication Protocols, Access Control Mechanisms, Network Security Practice, TCP/IP Security, Web Security, SSL (Secure Socket Layer), Denial-of-Service Attacks, Intrusion Detection, Viruses.
Credits: 3

COMP 537 / INTELLIGENT USER INTERFACES

Applications of artificial intelligence in user interfaces. Design, implementation, and evaluation of user interfaces that use machine learning, computer vision and pattern recognition technologies. Supporting tools for classification, regression, multi-modal information fusion. Gaze-tracking, gesture recognition, object detection, tracking, haptic devices, speech-based and pen-based interfaces.
Credits: 3
Prerequisite: (COMP. 130 or COMP. 131) or consent of the instructor

COMP 540 / INFORMATION RETRIEVAL

Basic and advanced topics in information retrieval. Processing, indexing, querying and retrieval of textual documents. Modern search engines and their principles. Implementation of search engine systems for real-world applications.
Credits: 3

COMP 541 / MACHINE LEARNING

An introduction to the fields of machine learning and data mining from a statistical perspective. Machine learning is the study of computer algorithms that improve automatically through experience. Vast amounts of data generated in many fields from biology to finance to linguistics makes a good understanding of the tools and techniques of machine learning indispensable. Topics covered include regression, classification, kernel methods, model assessment and selection, boosting, neural networks, support vector machines, nearest neighbors, and unsupervised learning.
Credits: 3

COMP 542 / NATURAL LANGUAGE PROCESSING

Fundamental concepts and current research in natural language processing. Algorithms for processing linguistic information. Computational properties of human languages. Analysis at the level of morphology, syntax, and semantics. Modern quantitative techniques of using large corpora, statistical models, and machine learning applied to problems of acquisition, disambiguation and parsing. Applications such as machine translation and question answering.
Credits: 3
Prerequisite: COMP. 341 or consent of the instructor

COMP 543 / MODERN CRYPTOGRAPHY

Introduction to cryptographic concepts. Symmetric encryption, the public-key breakthrough, one-way functions, hash functions, random numbers, digital signatures, zero-knowledge proofs, modern cryptographic protocols, multi-party computation. Everyday use examples including online commerce, BitTorrent peer-to-peer file sharing, and hacking some old encryption schemes.
Credits: 3
Prerequisite: COMP. 106 or consent of the instructor

COMP 546 / ALGORITHM DESIGN AND ANALYSIS

Advanced topics in data structures, algorithms, and their computational complexity. Asymptotic complexity measures. Graph representations, topological order and algorithms. Forests and trees. Minimum spanning trees. Bipartite matching. Union-find data structure. Heaps. Hashing. Amortized complexity analysis. Randomized algorithms. Introduction to NP-completeness and approximation algorithms. The shortest path methods. Network flow problems.
Credits: 3
Prerequisite: COMP. 202 or consent of the instructor

COMP 570 / BIOINFORMATICS AND ALGORITHMS IN COMPUTATIONAL BIOLOGY

Algorithms, models, representations, and databases for collecting and analyzing biological data to draw inferences. Overview of available molecular biological databases. Sequence analysis, alignment, database similarity searches. Phylogenetic trees. Discovering patterns in protein sequences and structures. Protein 3D structure prediction: homology modeling, protein folding, representation for macromolecules, simulation methods. Protein-protein interaction networks, regulatory networks, models and databases for signaling networks, data mining for signaling networks.
Credits: 3

COMP 589 / SOFTWARE RELIABILITY: SPECIFICATION, TESTING AND VERIFICATION

Tools and techniques for ensuring software reliability. Specification formalisms and languages. Modeling tools and languages. Unit and integration testing. Automated testing and verification tools and algorithms. Mathematical representations for programs and executions. Hoare logic. Specification using modular contracts: Preconditions, postconditions, loop and object invariants. Ownership systems. Automated test generation. Model-based testing. Coverage metrics for testing adequacy. Type and effect systems for reliable software. Software model checkers. Static analysis. Concurrent/multi-threaded programs. Correctness criteria for concurrent programs: race-freedom, atomicity, linearizability and serializability. Testing, verification and debugging tools for concurrent programs.
Credits: 3