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.
| CS1023 | Data Structures and Algorithms for Engineers | 4 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. | ||
| CS1073 | Introduction 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. | ||
| CS1083 | Introduction 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. | ||
| CS1093 | Programming for Engineers | 4 ch (3C 1.5L) |
|---|---|---|
| CS1543 | Introduction to Databases | 4 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. | ||
| CS1203 | Overview of Computer Science | 3 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. | ||
| CS1303 | Discrete Structures | 4 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. | ||
| CS2043 | Introduction 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. | ||
| CS2053 | Introduction to Game Development | 4 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. | ||
| CS2063 | Introduction to Mobile Application Development | 4 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. | ||
| CS2213 | Introduction to Applied Internet of Things | 3 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. | ||
| CS2253 | Machine Level Programming | 4 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. | ||
| CS2263 | Systems Software Development | 4 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. | ||
| CS2333 | Computability and Formal Languages | 4 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. | ||
| CS2383 | Data Structures and Algorithms | 4 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). | ||
| CS2413 | Information Security | 4 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. | ||
| CS2545 | Data Science Fundamentals | 3 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. | ||
| CS2613 | Programming Languages Laboratory | 4 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. Prerequisite: CS 1083. | ||
| CS2999 | Problem Solving for Programmers | 3 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. | ||
| CS3025 | Human-Computer Interaction | 3 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. | ||
| CS3035 | Building User Interfaces | 3 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. | ||
| CS3103 | Programming on the Web | 3 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. | ||
| CS3113 | Introduction to Numerical Methods | 3 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). | ||
| CS3383 | Algorithm Design and Analysis | 4 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. Prerequisites: CS 2333, CS 2383 and (STAT 2593 or STAT 3083). | ||
| CS3413 | Operating Systems I | 4 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. | ||
| CS3543 | Database Systems and Administration | 3 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. | ||
| CS3703 | Multimedia Design | 3 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. | ||
| CS3735 | Introduction to Machine Learning | 3 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. | ||
| CS3853 | Computer Architecture and Organization | 4 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. | ||
| CS3873 | Net-centric Computing | 4 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. | ||
| 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 3413, ADM 1192. | ||
| CS3997 | Professional Practice | 3 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. | ||
| CS4015 | Software 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. Prerequisite: CS 2043. | ||
| CS4065 | Interactive 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. | ||
| CS4355 | Cryptanalysis and Database Security | 4 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. | ||
| CS4405 | Operating Systems II | 4 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. | ||
| CS4411 | Cybersecurity Essentials | 4 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. | ||
| CS4413 | Foundations of Privacy | 4 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. | ||
| CS4415 | Network Security | 3 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. | ||
| CS4417 | Software Security | 4 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. | ||
| CS4419 | Digital Forensics | 4 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. | ||
| CS4495 | Cybersecurity Capstone Project | 6 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. | ||
| CS4545 | Big Data Systems | 3 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) | ||
| CS4613 | Programming Language Interpretation | 4 ch (3C 1L) (P) |
|---|---|---|
Prerequisites: CS 2263, CS 2333, and CS 2613. | ||
| CS4725 | Introduction to Artificial Intelligence | 3 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. | ||
| CS4735 | Computer Graphics | 4 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). | ||
| CS4745 | Introduction to Parallel Processing | 4 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. | ||
| CS4755 | Adversarial 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. | ||
| CS4765 | Natural Language Processing | 3 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) | ||
| CS4805 | Embedded Systems | 4 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. | ||
| CS4865 | Principles of Data Communications and Networks Modeling | 4 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. | ||
| CS4905 | Introduction to Compiler Construction | 4 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. | ||
| CS4935 | Advanced Algorithmic Techniques | 4 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. | ||
| CS4972 | Entrepreneurship 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. | ||
| CS4983 | Senior Technical Report | 2 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. | ||
| CS4995 | Topics in Computing | 4 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. | ||
| CS4997 | Honours Thesis | 4 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 | ||
| CS4998 | Open Source Project | 4 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. | ||
| CS4999 | Directed Studies in Computer Science | 4 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. | ||