Skip to main content
  • CPS 101 - Introduction to App Development
    This course introduces programming to non-computer science majors. Students will learn how to program apps for mobile devices using a visual programming. Topics include: basic programming concepts (conditionals, events, variables, loops, procedures), using device sensors and components (camera, accelerometer, gyroscope, GPS, audio, internet connectivity), designing and implementing apps (user interface, texting apps, files I/O, drawing apps, creating interactive games). The programming language used in this course is MIT App Inventor 2.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Antirequisites: Course is not available for credit for students in Computer Science programs (CS001, CS002).
  • CPS 109 - Computer Science I
    An introductory programming course designed to introduce fundamental Computer Science concepts such as abstraction, modelling and algorithm design. Emphasis is placed on producing correct software.
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
  • CPS 118 - Introductory Programming for Scientists
    This course is an introduction to computer science, computers and programming for science students. Topics covered include: algorithmic thinking, computational approaches to solving problems, programming fundamentals such as elementary data structures, arrays, and basic constructs provided by high-level programming languages: sequencing, selection, iteration, and functions. Additional topics may include: numerical computation, GUI interface, and case studies of scientific computing. This course uses MATLAB as its programming language along with a brief introduction to Python.
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
  • CPS 125 - Digital Computation and Programming
    The C programming language is used to develop good programming techniques. Topics covered include: C program form, language statements, pseudo-code algorithmic representation, numeric data types, flow of control with selection and repetition, standard C libraries, functions and call modes, arrays, pointers, sorting, matrix operations, character and string data types, dynamic storage, structures and linked lists, file I/O. Only regular first year students from the Faculty of Engineering, Architecture, and Science may preregister for this course.
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
  • CPS 209 - Computer Science II
    A continuation of CPS 109. Emphasis is placed on code structure, algorithm development, and Object Oriented design principles.
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 109
  • CPS 213 - Computer Organization I
    This course introduces the students to the principles and fundamentals of digital system design. Topics covered include: Binary numbers, base conversions, signed numbers, Boolean algebra, logic gates, K-map method, combinational circuits, decoders/encoders, multiplexers, sequential circuits, flip-flops, state diagram, registers, counters and addressing techniques. (2 hr Lab every other week).
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
  • CPS 270 - Data Access and Management
    This course presents the fundamental concepts of database design and database management. Topics covered include: relational data modeling, databases and DBMSs, relational algebra and SQL, persistent stored modules, and three-tier architecture. This course will also include an overview of data warehousing, XML, NoSQL databases and normal forms.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
  • CPS 305 - Data Structures
    Introduction to data structures and algorithms. Data structures covered will include stacks, queues, lists, trees, and graphs. Algorithm topics will include searching, sorting, hashing, algorithm design, greedy approaches, dynamic programming, recursion and complexity analysis.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 209
  • CPS 310 - Computer Organization II
    A continuation of CPS 213. Memory; CPU architecture and instruction set; the instruction processing sequence; generic assembler level programming illustrated for specific CPUs; I/O essentials including interrupts and DMA; characteristics of major peripherals interfaces; RISC and CISC architectures compared; parallel processing. The laboratory requires using a specific assembler/editor for the creation of programs illustrating some of the principles discussed in lectures.
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 213 or CPS 211
  • CPS 311 - Object Oriented Programming and Design
    This course further explores the Object-Oriented paradigm emphasizing the Object Model and relationships between the various artifacts. The pure Smalltalk language is introduced to reinforce the OO paradigm. The Unified Modeling Language to capture the objects, classes, and their relationships is studied in considerable depth with a major analysis and initial design project done in teams. A reasonably complete coverage of C++ is presented. Time permitting, OO features of other languages will be discussed.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 209 and CPS 393
  • CPS 393 - Introduction to UNIX, C and C++
    The course introduces the UNIX operating system, and the C and C++ languages. UNIX topics include: I/O, redirection, processes, and shell scripts. C and C++ are introduced with an emphasis on differences from previously studied languages. C topics include pointers, structures, memory allocation, and paradigm differences. C++ topics include class formalisms, static and dynamic instantiation, inheritance, constructors and destructors, polymorphism with virtual functions, operator overloading, and time permitting, friends. Stream I/O may be introduced.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS109 and CPS 209
  • CPS 406 - Introduction to Software Engineering
    This course introduces the study of Object-Oriented software engineering. Topics include software project management, requirements gathering, requirements analysis, modeling, design, implementation and testing. UML diagrams and design patterns are also discussed. A major portion of the course is a team project, taking a system from the initial requirements to the final implementation. (2 hr Lab every other week).
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 311 or CPS 209
  • CPS 40A/B - Thesis

    The student will creatively apply the material learned in core courses to a significant problem.

    Weekly Contact: Lab: 3 hrs./3 hrs.
    GPA weight: 2.00
    Billing Units: 1/1
    Count: 2.00
    Consent: Departmental consent required
  • CPS 412 - Social Issues, Ethics and Professionalism
    This course will cover some of fundamental social, legal, and ethical issues inherent in the discipline of computing. Topics include social context, analytical tools, professional ethics, intellectual property, privacy and civil liberties, professional communication and sustainability.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
  • CPS 420 - Discrete Structures
    Introduction to discrete structures and probability as they apply to design and analysis. Review of proof techniques: induction and recursion. Graphs and trees, and their applications in computing. Finite automata and computability. Counting: arithmetic and geometric progressions, permutations and combinations, modular arithmetic. Probability.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: MTH 110
    Antirequisites: MTH 210
  • CPS 501 - Bioinformatics
    Introduction to analysis, management, and visualization of cellular information at the molecular level. The course includes an overview of mathematical modeling and simulation, pattern matching, methods for phylogenetics, gene recognition, distributed and parallel biological computing, designing and managing biological databases (both relational and object-oriented), linking disparate databases and data, data mining, reasoning by analogy, hypothesis formation and testing by machine.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: (CPS 118 or CPS 125 or CPS 109) and BLG 143
    Antirequisites: BME 501
  • CPS 506 - Comparative Programming Languages
    A survey of major programming paradigms, with emphasis on the functional paradigm. Discussion of data typing, program decomposition, scoping rules, control structures parameter passing. Programming languages will likely include commercially important functional languages such as Haskell, Clojure and Erlang, with examples of others as time permits.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 209
  • CPS 510 - Database Systems I
    Advanced file management techniques involving fundamentals of database organization, design and management. Emphasis is given to Relational Database Management Systems including relational algebra, normal Forms, physical Database Structures and their implementation, and Relational Database Languages. Other types of Database Managers are also discussed such as Hierarchical, Network and Inverted Files.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 305
  • CPS 511 - Computer Graphics
    Software and hardware considerations in computer graphics. Mathematical manipulation of graphical objects; interactive graphics and the user interface; representation of 3-D shapes; fundamental implementation of algorithms.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 305 and MTH 108
  • CPS 513 - Introduction to Multimedia Computation
    Introduction to computing and programming for non-computer science majors. This course introduces the student to computers and the mind set of computing how to solve problems by developing algorithms and writing programs. The programming language is Python, and the problems are taken from the domain of multimedia (manipulation of images and sounds).
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
  • CPS 530 - Web Systems Development
    This course presents the concepts and applications of the technologies to design and develop creative and successful web services. It covers design fundamentals and also programming languages for both server-side and client-side environments. Responsive design, search engine optimization and monetization strategies are also introduced.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 209
  • CPS 590 - Operating Systems I
    Introduction to O/S (system calls, interrupts, synchronous and asynchronous traps, O/S structure), using processes (process communication and synchronization), primitive communications (signals and signal management calls), pipes, messages, semaphores, shared memory, memory management, file systems, and (time permitting) remote procedure calls.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 305 and CPS 393
  • CPS 606 - Advanced Computer Organization
    An advanced overview of computer architecture and organization. A study of the relationship between software and hardware and how this affects the design of architectural features: instruction execution, processor internals (including pipelining, parallelism and microcode). Instruction sets, memory and caches, busses, auxiliary storage (disk) controllers and vector processors.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 310
  • CPS 607 - Autonomous Mobile Robotics
    An introductory course in the design and implementation of autonomous vehicles. Topics will include the nature of autonomy and autonomous behaviour. Issues involving sensing and actuation will be discussed. Students will be introduced to the constraints and issues involved in building systems designed to interact with an environment independently. Students will be expected to construct working robots.
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 310
  • CPS 610 - Database Systems II

    This course is a continuation of CPS510. Topics include: embedded DB languages (e.g. JDBC class libraries) and Embedded SQL, Transaction management, Distributed Databases, Transaction Concurrency Control, Concurrency Control through Locking/protocol and time stamps, Object-Oriented and Object-Relational Database Systems, non-structured and NOSQL databases (e.g. Mongo DB). Introduction to big data management, Map-Reduce and Hadoop.

    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 510
  • CPS 613 - Human-Computer Interaction
    This course introduces the concepts of human-computer interaction and usability testing. Topics include: human information processing, usability principles, models of interaction, user interface paradigms, design of user interfaces. Students will also learn how to develop Graphical User Interfaces using a specific User Interface Management system. (2 hr. Lab every other week).
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 209 or Direct Entry
  • CPS 615 - Theory of Computation
    This course introduces students to the theory of computation. Topics include: regular expressions and languages, finite state automata, context-free languages, pushdown automata, Turing machines, computability, and NP-completeness.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 305 and CPS 420
  • CPS 616 - Algorithms
    Complexity analysis and order notations, recurrence equations, brute force, divide-and-conquer techniques and the master theorem, transform-and-conquer and problem reduction, greedy method, dynamic programming, the knapsack and travelling salesman problems, graph algorithms, text processing and pattern matching techniques, P, NP, and NP-complete classes.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: (CPS 305 and MTH 210) or (CPS 305 and CPS 420)
  • CPS 621 - Introduction to Multimedia Systems
    Multimedia data is becoming increasingly important in many scientific and commercial arenas. In this course, students will be introduced to principles and current technologies of multimedia system design. Topics include: multimedia data representation, processing multimedia visual information, video and audio compression, retrieval of multimedia data, such as text, graphics, colour images and video. In addition, issues related to multimedia hardware and software as well as specific applications will be discussed.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: (CPS 109 and CPS 393) or Direct Entry
  • CPS 630 - Web Applications
    This course is a continuation of CPS 530. Students will learn advanced techniques for designing and building (client and server) web applications using modern technologies. Topics include: web application development process, cross browser compatibility issues, responsive design, templating and database connectivity and web security, modular design and various web frameworks. At the end of this course students will be able to design and implement a database application with a commercial grade web interface for desktop and mobile computing platforms. (2 hr. Lab every other week).
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 510 and CPS 530
  • CPS 633 - Computer Security
    History and examples of computer crime. Security policies and mechanisms. Access control models. Implementation and usability issues. Physical security. Authentication technologies. Operating system security. Encryption algorithms and protocols. External and internal firewalls. Software flaws and malware. Ethical issues in computer security. Sample privacy noncompliance litigation cases, Social implications of computing networked communication.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 393
  • CPS 643 - Virtual Reality
    This course describes the underlying concepts and algorithms of Virtual Reality (VR) systems. A review of current VR technology and the fundamental principles of interaction, modelling and simulation for VR are presented. This is a lab-based and project-based course in which students will use VR hardware and a VR software framework to design, model and program an interactive virtual environment for various application areas.
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 511
  • CPS 650 - Computational Thinking in Our World
    This course will discuss why computers and computation are ubiquitous in our world and the implications of that ubiquity, including security, gaming, military, GPS, social-networks, stock-trading, voting, and beyond. Students will learn how these systems work at an appropriate level of detail. To give a deeper understanding of these topics a significant component of the course will be student programming labs to explore simple versions of these systems. No previous programming experience will be required.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Liberal Studies: UL
    Custom Requisites: Not available to students in Computer Science and in the Faculty of Engineering and Architectural Science.
  • CPS 706 - Computer Networks I
    Internet, the network edge, the network core, delay, loss and throughput, protocol layers. Application Layer: principles of network applications, web. Transport Layer -UDP, connection oriented transport TCP, TCP congestion control. Network layer -The internet protocol (IP): Forwarding and addressing in the Internet. Routing algorithms. The link layer and local area networks.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 590
  • CPS 707 - Software Verification and Validation
    This course introduces the topics of verification and validation of computer software. Material covered may include statistical and functional approaches to testing, test data analysis, testability, static analysis techniques, dynamic analysis techniques, selected state-of-the-art results, and real-world applications.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: (CPS 406 and CPS 420) or (CPS 406 and MTH 210)
  • CPS 710 - Compilers and Interpreters
    Introduction to compiler design: theory, techniques, and tools. Students will develop an interpreter or compiler. Assembler and preprocessors will also be briefly discussed.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: (CPS 305 or COE 428) and (CPS 420 or MTH 314)
  • CPS 713 - Applied Cryptography
    The notion of secure communication. Classical cryptography. Pseudo-random number generation. The Data Encryption Standard and Advanced Encryption Standard. Cryptographically secure hash functions. Public key crypto system. Digital signature schemes. E-commerce and digital cash. Secret sharing schemes. Authentication applications. Electronic mail security. IP and Web security.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 209 and CPS 633
  • CPS 714 - Software Project Management
    Introduction to issues involved in managing large, complex software projects. Introduction to industry-standard project management techniques and tools needed to use them, as well as their application to software projects.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 406
    Antirequisites: ITM 750
  • CPS 716 - Computer Networks II
    Advanced Internet routing algorithms (inter-AS routing, broadcast and multicast routing, switch design). Advanced data link layer topics (virtual local area networks, multi-protocol label switching). Multimedia Networking (streaming, real-time transport protocols, content distribution networks, scheduling and policing algorithms, providing quality of service). Wireless/Mobile Networks, (cellular networks, WiFi, mobility management, routing in MANET). Network Management. Special topics in networking.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 706
  • CPS 721 - Artificial Intelligence I
    This course provides introduction to several important AI problems and techniques, including knowledge representation and reasoning, constraints satisfaction, search, natural language understanding, planning, uncertainty, belief networks, learning.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: (CPS 305 and MTH 210 and MTH 304) or (CPS 305 and CPS 420) or Direct Entry
  • CPS 730 - Web Technology and Performance Measurement
    This course focuses on understanding the core technologies underlying the World Wide Web, such as protocols (e.g., HTTP) , software components (i.e., client, server and proxy) and important web applications (e.g., web caching). Another part of this course is introduction to performance measurement and in particular Web Performance Measurement. The course consists of assignments and practical examples (based on Unix/Linux) which helps students to understand the principles of how distributed applications are built.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 393 or CPS 590
  • CPS 731 - Software Engineering I
    Essential methods for the Systematic approach to the development, operation, maintenance, and retirement of Software. Software Life Cycles, process modelling, configuration management, managing Software quality, requirements analysis, specification, verification and validation, Software design, implementation, testing and maintenance. Software Tools, CASE tools and documentation. (2 hr. Lab every other week)
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 406
  • CPS 752 - Parallel Computer Systems
    The topics of this course centre around the concepts of parallel processors and supercomputers with emphasis on processor technology, performance, and software, parallel computer models, program flow control and scheduling, metrics and measures, scalability of parallel algorithms, memory hierarchy technology, pipeline design, multivector and SIMD organizations, scalability and multithreading, software and compliers, case studies of the CRAY Y-MP and CM-5 environments.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 310
  • CPS 801 - Operating Systems II
    This course covers the principal internal functions of operating systems with particular emphasis on UNIX/Linux and systems programming. Topics covered in this course are: OS structure, process management (including concurrency and synchronization), memory management, file systems, input-output and device management, and elements of distributed systems.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 305 and CPS 590
  • CPS 803 - Machine Learning
    Machine learning involves the study of algorithms capable of learning from data or prior experience. This course develops an aptitude for applying machine learning algorithms to different problem domains while at the same time, understanding the theoretical basis for machine learning algorithms. Machine learning has many applications in medicine, autonomous systems, computational biology, finance, computer vision and other domains.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: MTH 108 and MTH 207 and CPS 305
  • CPS 811 - Distributed Systems and Networks
    A continuation of CPS 706. This course deals with the concepts of internetworking as an extension of data communications. Topics will include routing and the TCP/IP suite of protocols. An introduction to X Windows programming allows students to investigate the aspects of distributed systems using Remote Procedure Calling, shared files and directories, NFS and NIS, the Internet, and other Distributed Computing Environments. Case studies will involve NFS, Amoeba, Mach and Grapevine. Concurrency aspects will be considered in the topics of collaborating servers and file replication.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 706
  • CPS 813 - Human Robot Interaction
    From the first time a human picked up a stick and attempted to knock down food from an unreachable branch we have attempted to use technology to extend our influence on the world. This course will examine physical robotic systems designed to extend human presence to remote locations. Topics may include Presence, Situational Awareness, Telerobotics and Agency. The course is designed to provide students with a practical introduction that will involve the design and construction of working robotic systems designed to interact with remote environments.
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 607
  • CPS 815 - Topics in Algorithms
    This course covers advanced methods of algorithmic design and analysis. Topics will be selected from: advanced data structures; amortization; persistence; optimization; approximation; randomization; probabilistic analysis; parallel algorithms.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 616
  • CPS 822 - Artificial Intelligence II
    The course will focus on the theory and implementation of discreet dynamical systems considered from the perspective of artificial intelligence. Modern logical representations of actions and their effects will be discussed in detail. The emphasis will be on the compromises required to ensure computational tractability of reasoning about effects of actions. The course will show how these research issues are relevant to artificial intelligence and to applications beyond the traditional area of artificial intelligence. Topics may include: logical foundations, reasoning about direct and indirect effects of actions, deductive planning, time and concurrency, causality, stochastic actions, modular representations.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 721
  • CPS 824 - Reinforcement Learning
    This course focuses on topics related to reinforcement learning. The course will cover making decisions under uncertainty, Markov decision processes, dynamic programming, temporal-difference learning, eligibility traces, value function approximation methods, Monte Carlo reinforcement learning methods, and the integration of learning and planning.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 305 and CPS 420
  • CPS 831 - Software Engineering II
    This course is a continuation of CPS 731. Topics include: Formal specification, algebraic specification, model oriented Specification, Software reliability, fault-tolerance, Software tools, programming environments, Toolkits, Method based Environments. Software development work benches, Software reliability, Software metrics, software standards, complexity measures, Software quality assurance, automated programming, CASE Tools. (2 hr. Lab every other week).
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 731
  • CPS 832 - Mainframe Systems
    An overview course on mainframe hardware systems and the main operating systems running on these machines. Emphasis is on the internal system software structure of these highly complex systems, and how the hardware supports this. The course provides a comprehensive coverage of the system at several levels. After completing this course the students will have had hands-on experience in running programs and manipulating datasets on a mainframe.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 310 and CPS 590
  • CPS 840 - Selected Topics in Computer Science
    An advanced level course taught by regular faculty members either singly, or in teams. Topics offered are determined by faculty expertise available. Registration may be limited to fourth-year students.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
  • CPS 841 - Advanced Topics in Computer Science
    An in-depth analysis of recent developments and topics of current interest in Computer Science. Topics offered are determined by faculty expertise available. Registration may be limited to 4th year students.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Consent: Departmental consent required
  • CPS 842 - Information Retrieval and Web Search
    This course discusses basic information retrieval models, evaluation methods, state of art of search engines and new trends in web search. Topics covered include basic IR models, indexing, query operation, evaluation, categorization and clustering, web search, link analysis, web crawling, web mining, etc. After completing this course, students will have acquired the core techniques in building text retrieval systems, hands-on experience in building the core parts of a web-based search engine, and knowledge of IR applications on the world wide web.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: (CPS 311 and CPS 305) or (CPS 209 and CPS 305)
  • CPS 843 - Introduction to Computer Vision
    This course describes foundational concepts of computer vision. In particular, the course covers the image formation process, image representation, feature extraction, model fitting, motion analysis, 3D parameter estimation and applications.
    Weekly Contact: Lecture: 3 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: (CPS 305 and (CPS 420 or MTH 210) and MTH 108 and MTH 207) or ELE 632
    Antirequisites: MTH 820
  • CPS 844 - Data Mining
    This course introduces the basic data mining concepts, methods, implementations, as well as applications in different areas, especially on the world wide web. Topics covered include the basic data mining techniques, data preprocessing, association rule mining, classification, clustering, web mining, and data mining application (e.g. in web personalization, recommender system, security). At the end of this course, students should be able to implement and use some of important data mining algorithms in practical applications.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 305
  • CPS 845 - Extreme Programming and Agile Processes
    This course presents the main principles of Extreme Programming (XP) development, including: development methodology; rules and practices; application domains; public resources, such as forums, literature, and supportive tools. Other agile methods are covered as appropriate.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 406
  • CPS 847 - Software Tools for Startups
    This course will discuss core tools, frameworks, and packages used by modern startups. These areas include but are not limited to source code management, project management, databases, middleware and front-end libraries. The labs and assignments will offer hands-on experience with the software. Sample tools may include: git, ZenHub, Ethereum, Django, Node.js, MongoDb, Angular and Ionic.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 209
  • CPS 853 - Creating Big Data Systems
    This course will discuss how to build Big Data analytic and transactional systems. The course will provide introduction to the theory and practice of large-scale software systems. We will focus on defining Big Data properties and architecting the systems to accommodate these properties. In addition, we will cover quality assurance of such systems, as well as management (risk estimation, planning, team management, etc.)
    Weekly Contact: Lecture: 3 hrs. Lab: 2 hrs.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Prerequisites: CPS 406 and CPS 420 and CPS 510
  • CPS 888 - Software Engineering
    Topics include: Issues in software engineering; software specification; system modelling; requirements specification; validation and prototyping; formal specification; object-oriented design; function-oriented design; user-interface design; CASE; quality assurance.
    Weekly Contact: Lecture: 3 hrs. Lab: 1 hr.
    GPA weight: 1.00
    Billing Units: 1
    Count: 1.00
    Consent: Departmental consent required