Computer Science 

NOTE: A minimum grade of C or CR is required for all prerequisites for CS courses. 

The L* notation indicates that labs are held on alternate weeks. 

The [P] designation is used to identify courses that involve significant programming work assigned to each individual student. The programming component involves substantive feedback and guidance to develop and improve programming skills. For elective courses, the programming component goes beyond the skills a BCS student can be expected to achieve as part of their core courses. Please see the Bachelor of Computer Science degree regulations for further details.

The Course Catalogue should be used to check the term and time a course is offered. Some courses may not be offered every year. 

NOTE: See the beginning of Section H for abbreviations, course numbers and coding.

CS1023Data Structures and Algorithms for Engineers4 ch (3C 1.5L)

Explore the ideas of abstraction of procedures and data. Learn to Implement and work with the fundamental data types: lists, stacks, queues, and graphs using the C programming language. Gain exposure to the basic concepts of discrete mathematics, elements of combinatorics, aspects of complexity and recursion and algorithm development, including estimation of program resource utilization. NOTE: This course may not be taken for credit by BCS or BScSwE students.

Prerequisite: CS 1093

CS1073Introduction to Computer Programming I (in Java)4 ch (3C 1.5L 1T) (P)

Explore fundamental programming concepts such as classes, methods, decisions, loops, inheritance, and arrays. Gain skills in problem analysis and algorithm design. Learn about program structure and readability. Examine the Java API libraries. 

CS1083Introduction to Computer Programming II (in Java)4 ch (3C 1.5L 1T) (P)

Build on skills from CS 1073 in problem analysis and algorithm design. Learn more about program structure and readability. Explore testing and debugging, data abstraction, encapsulation, inheritance, polymorphism, sorting and searching, exceptions, files, recursion, and, simple data structures. 

 Prerequisite: CS 1073

CS1093Programming for Engineers 4 ch (3C 1.5L)
Explore programming fundamentals including data types, conditionals, and loops. Learn procedural programming in the Python language, with the objective of writing programs to automate typical engineering tasks such as file management, data extraction, processing, analysis, and plotting. NOTE: This course may not be taken for credit by BScSwE students beyond first year or by BCS students.  Credit cannot be counted for both CS 1003 and CS 1093. 
CS1543Introduction to Databases4 ch (3C 2L)

Learn about the motivation for and capabilities of database management systems; the role of databases in a three-tier application architecture; relational data model; relational algebra; functional dependencies and normalization; SQL language, including creating, loading, updating, modifying, and querying database tables; data integrity, security and privacy; entity relationship data modeling; CRUD analysis; stored procedures; accessing a database using an API such as JDBC. Gain exposure to selected advanced topics such as data warehouses, big data, and XML. NOTE: Credit can only be obtained for one of CS 1543, CS 1103, INFO 1103. 

Prerequisites: CS 1073.
CS1203Overview of Computer Science3 ch (3C 1T)

Explore many of the fundamental concepts and theories used throughout computer science. Learn about the history of computers, computer hardware, system software, programming languages, networking, theory of computation, social issues, and other topics within computer science. Examine topics relevant to various areas of study within the BCS program. NOTE: This course may not be taken for credit by BCS students beyond first year or by BScSwE students beyond first year.

CS1303Discrete Structures4 ch (3C 1T)

Learn about topics in discrete mathematics important in computer science, including: propositional logic, predicate logic using quantifiers, direct and indirect proofs, summation and product notation, mathematical induction, elementary set theory and counting. Gain experience writing mathematical proofs. NOTE: Credit cannot be counted for both CS 1303 and MATH 2203.

CS2043Introduction to Software Engineering 4 ch (3C 2L)

Explore the fundamentals of the discipline of software engineering with focus on the software development life cycle. Learn about software development methodologies and processes, requirements analysis, modeling, architecture, design, implementation, testing, and maintenance. Examine basic principles of software management. NOTE: Credit can only be obtained for one of CS 2033, CS 2043, ECE 4403

Prerequisite: CS 1083. 

CS2053Introduction to Game Development4 ch (3C 1.5L) (P) (EL)

Learn basic concepts and technologies for computer and video game development, including math and physics foundations for games. Examine core technologies and algorithms in game development, game design and implementation, and game development environments and programming. Understand various elements and phases of game development. Develop a small but complete game and reflect upon the process. 

Prerequisite:CS 2043 or CS 2263 or ECE 4403

CS2063Introduction to Mobile Application Development4 ch (1.5C 3L) (P) (EL)

Learn about the development of application software for mobile computing platforms.  Examine characteristics of mobile computing platforms versus non-mobile platforms. Explore mobile application design principles, including design of effective user interaction and factors that affect application performance. Program common mobile application functionality such as location, orientation, and motion awareness, as well as touch, gesture, and camera input. Interact with remote APIs. Create and test a small but complete mobile application for a selected currently prominent platform and reflect upon the process.

Prerequisite:CS 2043 or CS 2263 or ECE 4403.

CS2213Introduction to Applied Internet of Things3 ch (1C 2T) (EL)

Explore the Internet of things, circuits, and programming using MicroPython to build an IoT device using commodity censors connected to a microcontroller. Learn about IoT wireless protocols (e.g., LoRa), data visualization, data management using a database, and if time permits, basics of 3D printing. Build a smart device connected to the internet and reflect upon the process. NOTE: As the core materials for the course, students will need to purchase their own sensors and microcontroller. 

Prerequisites: CS 1073 or CS 1093

CS2253Machine Level Programming4 ch (3C 2L) (P)

Learn about lower-level computer operations and the association with higher-level procedural programming constructs. Explore binary representation of data, instruction formats and execution, assembler programming, scope, functions, user-defined data types using both low- and high-level programming languages. 

Co-requisiteCS 2263
CS2263Systems Software Development4 ch (3C 2L) (P)

Learn about procedural program development and supporting tools, using the C language. Explore the implementation of data structures and algorithms, memory management, and performance techniques. Use software tools for program development such as compilation/linking, building, debugging, and version control.

Prerequisite: CS 1023 or CS 1083. 

CS2333Computability and Formal Languages4 ch (3C 1T)

Learn about fundamental ideas in theoretical computer science: functions and relations, formal languages, finite automata, regular languages, context-free grammars, context-free languages, push-down automata, pumping lemmas, Turing machines, the Church-Turing thesis, recursive and recursively enumerable languages, the Chomsky hierarchy, the halting problem and other unsolvable decision problems, problem reducibility, and fundamental computational complexity classes.

Prerequisites: CS 1073, (CS 1303 or MATH 2203), and 30 ch. 

CS2383Data Structures and Algorithms4 ch (3C 1T) (P)

Learn about formal specifications of abstract data types and their data structure representations, operations, and algorithms. Explore priority queues, dictionaries, graphs, heaps, hash tables, binary search trees, balanced trees,and graph adjacency representations. Examine sorting, searching, dynamic storage handling, and fundamental graph algorithms. Learn about asymptotic analysis of time and space complexity and use it throughout the course. Implement a variety of data structures and graph algorithms. 

Prerequisites: (CS 1083 or ECE 4403) and (CS 1303 or MATH 2203). 

CS2413Information Security4 ch (3C 1L)

Learn the fundaments of information security focusing on understanding the modern threat landscape. Explore key topics, including malicious software (malware) threats, attacks and vulnerabilities such as denial-of-service(DoS) attacks. Learn core security defence mechanisms including intrusion detection, cryptography, authentication, and access control. Gain an understanding of introductory security planning practices, including risk assessment and incident response. 

Prerequisites: CS 1083, CS 1543 and (CS 1303 or MATH 2203).
CS2545Data Science Fundamentals3 ch (3C)

Learn fundamental concepts of data science in preparation for dealing with the challenges of data analytics Gain knowledge of Python programming basics and Python libraries for data analysis Learn data wrangling techniques, such as data preparation, cleaning, reshaping, and manipulating data Develop knowledge of data visualization techniques, and incorporating statistical data analysis methods, including probability distributions, sampling, estimation, and hypothesis testing Explore machine learning and other special topics, such as geospatial data analystics and causal inference. NOTE: Credit can be obtained for only one of CS 2545, STAT 1001, DATA 1003. 

Prerequisite: CS 1073 or CS 1093.

CS2613Programming Languages Laboratory4 ch (4L) (P)

Explore several programming paradigms in a hands-on setting to prepare for advanced courses and/or workplace projects. Carry out supervised laboratory exercises and independent work designed to improve programming skills, boost confidence and competence in acquiring new languages, and help choose implementation languages for future projects. Learn programming languages such as Python, JavaScript, Octave/Matlab, and Racket.

PrerequisiteCS 1083.

CS2999Problem Solving for Programmers3 ch (3L) (P)

Learn using a hands-on approach to problem solving for computer programmers. Work under instructional guidance on programming problems that represent basic classes of problems found in computer science. Explore concepts in data structures, algorithms, geometry, and software development and testing. NOTE: Experience in programming competition is required.

Prerequisites: Permission of the instructor.

Co-requisites: CS 2263, CS 2383.

CS3025Human-Computer Interaction3 ch (3C)

Gain knowledge of software design for interactive computing. Learn human-computer interaction principles, interface design guidelines, and about the design and execution of usability studies. The characteristics of various styles of interaction are explored. Emphasis is on user-oriented interfaces. Design, implement, and perform a usability study on an interactive software application. 

Prerequisites: 60 ch and (CS 2043 or MAAC 3102). 

CS3035Building User Interfaces3 ch (3C) (P)

Explore basic approaches and techniques for implementing human-computer interfaces. Learn basic user interface concepts, common interaction techniques and architectural approaches for constructing user interfaces. Learn a variety of topics including 2D graphics, physics of virtual objects, event-driven programming, interface widgets, design patterns for user-interface development, the use and design of layout managers, user interface builders, programming hardware for physical devices, gesture and shape recognition, internationalization, and networked interactions.

Prerequisite: CS 2043 or (CS 1083 and MAAC 3102).

CS3103Programming on the Web3 ch (2C 1L) (P)

Learn modern web techniques and technologies with exposure to traditional web page technologies. Gain in-depth knowledge of the dynamic web, including structure and communication between server and client, whether it be machine-to-human, machine-to-app or machine-to-machine, using web services. Learn about transport protocols and data representation for mobile computing and machine-to-machine communication, as well as client technologies to support dynamic web pages. NOTE: CS 2613 is recommended. 

Prerequisites: CS 1543 and (CS 2043 or ECE 4403).
CS3113Introduction to Numerical Methods3 ch (3C)

Learn error analysis, convergence and stability. Explore approximation of functions by polynomials. Investigate numerical quadrature and differentiation. Learn the solution of linear and non-linear equations and the solution of ordinary differential equations. Gain in-depth understanding of numerical algorithms and stress applications in the applied sciences, as well as the influence of finite precision and arithmetic on computational results. NOTE: Intended for Computer Science and Engineering students.  Credit can only be obtained for one of CS 3113, MATH 3413 or ECE 2412. 

 Prerequisites: (CS 1003 or CS 1073) and (MATH 2213 or MATH 1503)

CS3383Algorithm Design and Analysis4 ch (3C 1T)

Learn the characteristics of algorithms that lead to efficient computer solutions for discrete problems. Explore a variety of different algorithm classes and design techniques, including divide and conquer, greedy, dynamic programming, and backtracking, are introduced and compared. Gain an understanding of design and analysis of randomized algorithms is introduced, along with strategies for dealing with computationally hard problems. Normally, discuss one or more models of parallel algorithms.

PrerequisitesCS 2333CS 2383 and (STAT 2593 or STAT 3083). 

CS3413Operating Systems I4 ch (3C 1.5L) (P)

Examine the fundamental role of an operating system in relation to the operation of applications. Learn essential theory of operating systems, including processes, process synchronization, interprocess communications, process scheduling, storage (primary and secondary) management, resource sharing, security, I/O, and user interfaces. Explore at least one of the major Unix shell languages.

Prerequisite: CS 2263 or (CS 1023 and ECE 3221)

CS3543Database Systems and Administration3 ch (3C)

Learn about key aspects of database systems and their administration including: database system internals: query evaluation and optimization; transaction management and concurrency control; database recovery; physical database design; storage and indexing; performance tuning; database administration; advanced data analytics with SQL

Prerequisites: CS 1543 and (CS 2043 or CS 2263 or CS 2383).
CS3703Multimedia Design3 ch (3C)

Explore the design and production of multimedia applications. Examine issues in capture, storage, and effective use of images, sound, and video. Learn about animation and multimedia and hypermedia design principles. Try out authoring tools.

Prerequisites: CS 1073 and 60 ch. 

CS3735Introduction to Machine Learning3 ch (3C) (P)

Explore the principles and algorithms of machine learning. Learn about (1) traditional machine learning, such as regressions, decision trees and ensemble learning, artificial neural networks, Bayesian learning, support vector machines, instance-based learning, unsupervised learning; (2) deep learning: such as recurrent networks, convoluntional neural networks, deep belief networks, deep generative models. Implement various machine learning models and conduct experiments on real worked datasets.

Prerequisites: CS 2383, and (STAT 2593 or STAT 3083).
CS3853Computer Architecture and Organization4 ch (3C 2L)

Learn computer organization and architecture, digital logic, interfacing and I/O strategies, memory architecture, functional organization, multiprocessing, and performance enhancements.

Prerequisite: CS 2253.

CS3873Net-centric Computing4 ch (3C 2L*)

Learn the fundamentals of data communication and application programming in a networked environment. Gain exposure to data transmission, data link concepts, networking concepts, network security, application protocols, net-centric computing and web programming. NOTE: CS 2263 is recommended.

 Prerequisite: CS 2253 or CS 2263.

CS3971 Entrepreneurship for Digital Transformation I 3 ch (3C) (EL)

Learn the fundamentals of validating and designing an IT based product through hands-on learning. Explore the basics of forming an idea for a business venture, good team dynamics, validating product value proposition, market research, financial considerations and pitching business ideas. Create a business plan for an IT product that can be developed for commercialization. NOTE: Credit can only be counted for one of CS 3971, TME 3413ADM 1192. 

Prerequisite: CS 3997. 
CS3997Professional Practice3 ch (3C) (W)

Explore the social context of computing, professional and ethical responsibilities, risks and liabilities of computer-based systems, intellectual property, privacy and civil liberties, and professional certification. Learn to write technical reports in Computer Science. Complete an independent study component resulting in a technical report, typically a survey paper. Develop technical writing, oral presentation and library skills.

Prerequisites: Enrolment in the BCS program and 40 ch completed.

CS4015Software Architecture and Design Patterns (Cross-Listed: SWE 4403)4 ch (3C 2L) (P)

Develop a deep understanding of software architecture and design patterns and strengthen skills to design, evaluate, and improve software architectures using industry best practices. Apply object-oriented programming principles to create reusable and maintainable software. Practice using creational, structural, and behavioral design patterns to design flexible, scalable, and maintainable software solutions. Analyze architectural quality attributes and design tactics to balance trade-offs between performance, scalability, maintainability, security, and other key system properties. Assess and reconstruct software architectures, evaluate software product lines, and develop effective documentation to communicate architectural decisions.

PrerequisiteCS 2043

CS4065Interactive Human-Centered Systems 3 ch (3C) (EL)

Investigate current topics in the field of Human-Computer Interaction to gain a deeper understanding of human needs and capabilities in the context of designing and evaluating new people-centered technologies. Explore foundational concepts, important challenges and technologies from several application domains, such as: collaborative technology, information visualization, games, and input and output techniques and devices. Develop and evaluate an interactive system and reflect on the process using concepts learned in class. NOTE: CS 3025 is recommended.

Prerequisites: CS2043 and 75 ch.

CS4355Cryptanalysis and Database Security4 ch (3C 1T) (P)

Survey the principles and practice of information security. Become familiar with conventional encryption, asymmetric and symmetric cryptology, digital signatures, key exchange, authentication, electronic mail security, network management security, the common criteria, and threat risk management.

Prerequisite: CS 2413.
CS4405Operating Systems II4 ch (3C 1L) (P)

Investigate the structure and design of operating systems Including processor management, storage management, input/output, interprocess communication, interrupt handling, real-time systems, centralized systems, as well as multiprocessor and distributed systems.

Prerequisites: CS 3413 and (CS 3853 or ECE 3221). 

CS4411Cybersecurity Essentials4 ch (3C 1T)

Explore the rudiments of information assurance, including IT infrastructure vulnerabilities, enterprise security threats, legal and ethical security issues, zero trust concepts, and risk management. Gain the ability to review and develop security-related employment practices and policies, guidelines, awareness programs, and IT security audits. Review contemporary issues in computer security, sources of computer security threats, ethical hacking, database security issues and solutions, and security administration.

Prerequisite: CS 3873.
CS4413Foundations of Privacy4 ch (3C, 1T)

Explore diverse topics related to privacy preservation including basic cryptographic techniques for privacy, homomorphic encryption techniques for privacy, database privacy, big data privacy, privacy in cloud platforms, privacy in crowdsourced platforms, privacy in healthcare, privacy in vehicular ad hoc networks, privacy in social network, location privacy, as well as privacy laws and regulations. Become familiar with both theoretical aspects and practical applications of privacy enhancing techniques.

Prerequisite: CS 2413.
CS4415Network Security3 ch (3C) (P)

Examines advanced topics in network security, including: security risks and threats, security mechanisms across OSI model layers and wireless network security. Learn to analyze systems for vulnerabilities, implement security procedures and monitor systems for security breaches. 

Prerequisites: CS 2413 and CS 3873.

CS4417Software Security4 ch (3C, 1T) (P)

Explore the intersection of computer security and software engineering, emphasizing the correctness and robustness of software, as well as security as part of the software engineering process. Gain practical experience with building a software system and securing it. Become familiar with tools, guidelines, rules, principles, and other resources for addressing security issues in every phase of the software development life cycle (SDLC). Engage in a significant group-programming project to develop a novel piece of software. 

Prerequisites: CS 2413 and CS 2043.

CS4419Digital Forensics4 ch (3C 1T)

Explore digital forensics notions and methods. Gain a basic understanding and legal awareness of computer security and forensics, techniques used in the evidentiary process, various methodologies intrinsic to computer forensics with emphasis on computer incident response, and IT systems protection.

Prerequisite: CS 2413.
CS4495Cybersecurity Capstone Project6 ch (W) (EL)

Conduct a real-world cybersecurity project, from defining a realistic problem to applying a suitable methodology for the design, development, and evaluation of an appropriate solution. The problem statement and the datasets are from the cybersecurity industry. Conduct a literature review to develop a set of hypotheses/methodologies. Write a proposal outlining alternative remedies to the problem and the hypotheses/methodologies, and a final report. The capstone project is normally completed with an industry partner.

Prerequisites: CS 4415 and CS 4419.
CS4545Big Data Systems3 ch (3C) (P)

Learn about the challenges of big data processing and a new breed of data systems that can handle data at massive scale including the foundations and principles of query processing, relational vs. NoSQL data models, index-based access and join processing, principles of parallel databases, batch and iterative processing frameworks, SQL interfaces over these frameworks, update-intensive systems and graph data stores, and data systems for large scale machine learning. NOTE: CS 3543 is recommended. 

Prerequisites: (CS 1543 or CS 2545) and (CS 3383 or CS 3413 or CS 3543 or CS 3853)

CS4613Programming Language Interpretation4 ch (3C 1L) (P)
Learn core programming language concepts including scope, lazy and eager evaluation, mutation, recursion, dynamic and static types and memory management. Study a statically typed functional language and use it to write interpreters and demonstrating these core concepts. Learn the main techniques of memory management including allocation, liveness detection, reference counting, compaction, and generational collectors.

Prerequisites:
CS 2263, CS 2333, and CS 2613.
CS4725Introduction to Artificial Intelligence3 ch (3C)

Learn intelligent agent design, problem solving using search techniques, the use of mathematical logic for knowledge representation and reasoning, decision making under uncertainty.

Prerequisites: CS 2333 and CS 2383

CS4735Computer Graphics4 ch (3C 1L) (P)

Learn interactive 3-dimensional computer graphics program development using object-oriented tools including keyboard and mouse interaction, callback functions, windows and viewports, drawing parametric curves and surfaces, affine transformations, the camera model and graphics pipeline, geometric modeling using polyhedral meshes, flying a camera, arcball scene interaction, perspective projection, and visual realism via colour, lighting and texture. 

Prerequisites: CS 2263, CS 2613, and (MATH 1503 or MATH 2213).

CS4745Introduction to Parallel Processing4 ch (3C 1L)

Explore parallel computer architectures, design and analysis of parallel algorithms, parallel programming languages, case studies, selected numerical and non-numerical applications.

Prerequisite: CS 3853

CS4755Adversarial Machine Learning and Secure AI 3 ch (3C)

Explores the intersection of machine learning and security, focusing on adversarial techniques and defenses. Learn about adversarial attacks on machine learning models, the theoretical foundations of adversarial machine learning and secure AI, and practical strategies for defending against these attacks. Through a combination of lectures, hands-on projects, and case studies, gain a comprehensive understanding of the security vulnerabilities in machine learning models and AI systems and how to mitigate them. 

Prerequisite: CS 3735 
CS4765Natural Language Processing3 ch (3C)

Learn methods for intelligently processing human language data in text form, as well as relevant linguistic background including fundamental topics in natural language processing such as vector semantics, transformers, and large language models as well as applications such as document classification, chatbots, and machine translation. Implement and evaluate a variety of natural language processing methods, and write reports describing their implementations and their performance.

Prerequisites: CS 2383 and (CS 3383 or CS 3413 or CS 3853 or CS 3873) and (STAT 2593 or STAT 3083)

CS4805Embedded Systems4 ch (3C 1T)

Learn the characteristics and design of embedded systems including formal models and specification languages for capturing embedded system behaviour; techniques for specification, exploration and refinement; tools for validation, verification, and simulation; and quality and performance metrics.

Prerequisites: CS 3413 and CS 3853

CS4865Principles of Data Communications and Networks Modeling4 ch (3C 2L*)

Explore advanced concepts of data communications systems design including architecture, media, communication channel, routing, protocols, protocol architecture. Focus on modeling and performance analysis and introduce network simulation using tools such as in ns2 and OpNet.

Prerequisite: CS 3873.

CS4905Introduction to Compiler Construction4 ch (3C 1.5L*) (P)

Explore the primary concepts and methodologies in compiler construction. Examine lexical analysis, predictive and LR parsing, compiler compilers and error handling. Learn syntax-directed translation using abstract parse trees, visitors, symbol tables and type checking. Study object code generation including the activation record stack, parameter passing, intermediate representation trees, instruction selection, tree tiling and register allocation.

Prerequisite: CS 2333

CS4935Advanced Algorithmic Techniques4 ch (3C 1T)

Learn advanced algorithmic techniques for analyzing and handling intractable and complicated tractable problems including NP-completeness and problem reductions, randomization, approximability, special case analysis, and network flow algorithms.

Prerequisite: CS 3383. 

CS4972Entrepreneurship for Digital Transformation II 3 ch (3C) (EL)

Guides students in taking their validated innovative technology to a product for initial commercialization through hands-on learning. Using software engineering practices, you will work to iterate a product from idea to market while balancing technology innovation and customer needs. Culminates with the refinement of a venture development plan, the delivery of a final pitch, and the demonstration of a tangible working prototype to a group of industry professionals. Prepares students for future entrepreneurial endeavors and provides the necessary skills to successfully commercialize new products into the market. 

Prerequisite: CS 2043 and CS 3971
CS4983Senior Technical Report2 ch (2C) (W)

Enhance technical writing and analytical skills by preparing and presenting a comprehensive technical report, which is typically a critical analysis paper.

Prerequisite: CS 3997

CS4995Topics in Computing4 ch

Explore a selected area of computing at an advanced level. Offered occasionally, and the course topics will be determined by the instructor and the Faculty of Computer Science.

Prerequisites: Normally, enrolment in the BCS or BScSwE program, at least 90 ch completed, and permission of the instructor.
CS4997Honours Thesis4 ch (W) (EL)

Undertake a project at a depth not provided elsewhere in the curriculum.  Plan the thesis during the preceding term, with the topic approved by a faculty member acting as a supervisor before term starts. Submit a detailed proposal, schedule, progress reports, and final thesis report to the coordinator with supervisor approval, and present a seminar. Detailed guidelines available from coordinator in the preceding term. Normally offered as an eight month course over fall and winter terms, and available over the summer term as a four month course. NOTE: Open to all CS students in their final year with a B average in the previous assessment year or a B CGPA. To receive an Honours designation please refer to the CS Curriculum regulations in the program Section of the Calendar.

Prerequisite: CS 3997

CS4998Open Source Project4 ch (P)

Undertake an Undergraduate Capstone Open Source Project (UCOSP). Gain hands-on experience with real-world development practices, and apply core concepts of Computer Science in a realistic environment. Collaborate as part of a national initiative, with senior undergraduate students from across Canada on open-source software projects working in distributed teams with individuals from other Canadian universities. 

Prerequisites: Instructor approval and at least 90 ch completed. 

CS4999Directed Studies in Computer Science4 ch

Pursue directed studies in specific areas and topics related to Computer Science. The content and process of the directed study is tailored to the student’s study path in collaboration with supervising faculty member(s). 

Prerequisites: Normally, Faculty approval and at least 90 ch.