Knowledge and skills to navigate the digital society. Digital participation, digital access, skills and utilization. Digital literacy, computer applications, converging technologies, and online resources. This course does not assume students have any Computer Science background. [3-2-0]
COSC_O 111 (3) Computer Programming I
Introduction to the design, implementation, and understanding of computer programs. Topics include problem solving, algorithm design, and data and procedural abstraction, with emphasis on the development of working programs. This course should be followed by COSC 121. [3-2-0] Prerequisite: A score of 70% or higher in one of PREC 12, MATH 12, MATH 125, MATH 126.
COSC_O 114 (3) Vector Graphics and Animations
Foundation and applications of 2D /3D Euclidean geometry necessary for the computer manipulation of curves and surfaces; decomposition of a picture into basic objects; planar and spatial linear transformations; automatic picture generation and introduction to algorithmic art. [3-2-0] Prerequisite: One of MATH 12, PREC 12, CALC 12.
COSC_O 121 (3) Computer Programming II
Advanced programming in the application of software engineering techniques to the design and implementation of programs manipulating complex data structures. [3-2-0] Prerequisite: A score of 60% or higher in one of COSC 111, COSC 123, APSC 177.
COSC_O 122 (3) Computer Fluency
Introduction to computer skills (electronic communication, websites, Internet, document editing, programming, data analysis using spreadsheets/databases) and concepts (information representation, abstraction, algorithmic thinking). Course objectives are lifelong productivity and understanding of technology in society. [3-2-0]
COSC_O 123 (3) Computer Creativity
A hands-on introduction to programming and computer-based problem solving and creativity. Experience with application development including storytelling, graphics, games, and networking. [3-0-2] Prerequisite: One of COSC 111, COSC 122.
COSC_O 150 (3) Physical Computing
Physical computing is the design and building of hardware and software systems for sensing, processing, and affecting the analog world. Principles of physical computing, including basic electricity, digital logic, and analogue and digital electronics. Systems design for interfacing with microprocessors, sensors, and actuators using analogue and digital elements and signals. Programming for embedded systems. [3-2-0] Corequisite: One of COSC 111, COSC 122, APSC 177.
COSC_O 210 (4) Software Construction
Design, and implementation of software components. Data structures, object-oriented design, debugging, testing. Credits will only be granted for one of COSC 210 or COSC 222. [3-2-0] Prerequisite: One of APSC 177, COSC 111.
COSC_O 211 (3) Machine Architecture
Organization and design of computer systems and their impact on the practice of software development. Instruction set architecture and assembly programming languages, design of central processing units (CPU), memory hierarchy and cache organization, input and output programming. [3-0-0] Prerequisite: COSC 121.
COSC_O 221 (3) Discrete Structures in Computing
Discrete structures in computing and relevant mathematical techniques. Logic and applications in automated reasoning and programming; proof techniques and analysis of algorithms and computation models; graph theory and graph models in computing; counting principles and discrete probability. [3-0-1] Prerequisite: One of MATH 101, MATH 103, MATH 142, APSC 173. Corequisite: COSC 121.
COSC_O 222 (3) Data Structures
Introduction to the design, implementation and analysis of data structures. Topics will include lists, stacks, queues, trees, and graphs. Credit will only be granted for one of COSC 210 or COSC 222. [3-2-0] Prerequisite: A score of 60% or higher in COSC 121.
COSC_O 223 (3) Principle of Computing: Logic, Discrete Structure, and Data Structure
Propositional logic and logic inference, problem-solving techniques (recursion, induction, and mathematical proof), models of computation (theory of finite automata), graph theory, data structures (linear data structures, dictionaries, and graphs), basic algorithmic techniques. [3-2-0] Prerequisite: One of COSC 114, APSC 171 and one of COSC 123, COSC 111.
COSC_O 247 (3) Networks and Social Media
Online social networks and digital social media. Social media platforms, channels, and software tools. Graph-theoretic and game-theoretic foundation of network analysis and network science. Network metrics and evaluation. Computational, economic, and social aspects of social media. [3-2-0] Prerequisite: COSC 223.
COSC_O 264 (3) Introduction to Web Development and Databases
Construction of simple database-driven websites. Introduction to web programming: client-side, server-side; database design, implementation, and query. [3-2-0] Prerequisite: One of COSC 121, COSC 223.
COSC_O 301 (3) Introduction to Data Analytics
Software development and techniques for computation, analysis, and visualization of data. Manipulation of small and large data sets. Automation using scripting. Credit will be granted for only one of COSC 301, DATA 301 or DATA 501. [3-2-0] Prerequisite: Third-year standing. Corequisite: COSC 304.
COSC_O 303 (3) Numerical Analysis
Numerical techniques for basic mathematical processes and their analysis. Taylor polynomials, root-finding, linear systems, eigenvalues, approximating derivatives, locating minimizers, approximating integrals, solving differential equations. Credit will be granted for only one of COSC 303 or MATH 303. [3-1-0] Prerequisite: All of MATH 200, MATH 221 and either (a) COSC 111 or (b) DATA 301. Equivalency: MATH303
COSC_O 304 (3) Introduction to Databases
Databases from a user's perspective: querying with SQL, designing with UML, and using programs to analyze data. Construction of database-driven applications and websites and experience with current database technologies. Completion of COSC 121 is recommended. [3-0-0] Prerequisite: One of COSC 111, COSC 123, COSC 210. Third-year standing.
COSC_O 305 (3) Project Management
Examine tools and techniques to complete projects successfully, and within budget. Topics include Program Evaluation and Review Technique (PERT) and Critical Path Methods (CPM), and project management software. [3-2-0] Corequisite: COSC 310.
COSC_O 310 (3) Software Engineering
Techniques to construct large systems using fundamental activities of specification, design, implementation, testing, and maintenance. Various life cycle models, exposure to software development tools, modelling techniques, good development practices, and project management. [3-2-0] Prerequisite: One of COSC 210, COSC 222, COSC 223. and third-year standing.
COSC_O 315 (3) Introduction to Operating Systems
Introduction to batch, multiprogramming, and time-sharing systems. Process synchronization and communication. Main memory allocation techniques including virtual memory; process scheduling; deadlock avoidance and prevention; file organization and device management. [3-2-0] Prerequisite: All of COSC 221, COSC 222.
COSC_O 320 (3) Analysis of Algorithms
Design and analysis of algorithms, illustrated from various problem areas. Models of computation, choice of data structures, space and time efficiency, computation complexity, algorithms for searching, sorting and graph-theoretic problems, NP-complete problems. [3-0-0] Prerequisite: All of COSC 221, COSC 222 and one of MATH 221, APSC 179.
COSC_O 322 (3) Introduction to Artificial Intelligence
AI and intelligent agents; state space search; game playing agents; logic and knowledge-based agents; constraint programming; planning; reasoning and decision making under uncertainty; machine learning; natural language understanding. Credit will be granted for only one of COSC 322 or COSC 522. [3-2-0] Prerequisite: All of COSC 221, COSC 222.
COSC_O 328 (3) Introduction to Networks
The five-layer Internet architecture using TCP/IP: application, transport, network, link, and physical. Topics include web protocols, network programming, routing, addressing, congestion control, error handling, Ethernet, wireless networks, security, multimedia transmission, and network management. [3-0-0] Prerequisite: All of COSC 211, COSC 222.
COSC_O 329 (3) Learning Analytics
Introduction to data analytics and machine learning techniques in the context of educational data. Focuses on user profiling, collaborative filtering, clustering, Bayesian user modeling, preference elicitation, and plagiarism detection. Credit will be granted for only one of COSC 329, COSC 419C, or COSC 519C. [3-0-0] Prerequisite: COSC 222 and one of STAT 121, STAT 124, STAT 205, STAT 230.
COSC_O 335 (3) Introduction to Medical Imaging and Imaging Informatics
Fundamental image analysis techniques. Image creation, manipulation, optimization, and analysis to aid in the diagnosis and treatment of human health conditions. Generation and display of X-ray, CT, MRI, Ultrasound and Nuclear Medicine images. Imaging Informatics and its place in the Electronic Medical Record. Credit will be granted for only one of COSC 335 or PHYS 336. [3-2-0] Prerequisite: A score more than 60% in COSC 222 and a score more than 60% in one of PHYS 121, PHYS 122. PHYS 121 preferred.
COSC_O 341 (3) Human Computer Interaction
History of human-computer interaction. Basic design principles, user-centered design, user task analysis, interaction models, input and output devices, graphical interface design, prototyping, and evaluation. [3-0-0] Prerequisite: One of COSC 111, COSC 121, COSC 123, DATA 301. and Third-year standing.
COSC_O 344 (3) Image Processing and Applications
Fundamental theoretical and practical concepts for processing and analyzing real-world digital images and videos, image enhancement and filtering, frequency domain and other transform analysis, morphological image operations, image segmentation, and object recognition. Credit will be granted for only one of COSC 344, COSC 435, or COSC 445. [3-0-0] Prerequisite: One of COSC 210, COSC 222 and one of MATH 200, APSC 248 and one of MATH 221, APSC 179.
COSC_O 360 (3) Web Programming
Design and implementation of web-based information systems and app development. Rich user interfaces, asynchronous updates, client-side and server-side scripting using standard technologies such as HTML, CSS, SVG, JavaScript, PHP. Data manipulation with SQL, JSON, XML. Modern scripting frameworks and libraries. [3-2-0] Prerequisite: All of COSC 121, COSC 304. and third-year standing.
COSC_O 404 (3) Database System Implementation
Fundamental concepts in constructing database systems including file organizations, storage management, system architectures, query processing/optimization, transaction management, recovery, and concurrency control. Additional topics may include distributed databases, mobile databases, and integration. Credit will be granted for only one of COSC 404 or COSC 504. [3-0-0] Prerequisite: COSC 304. and third-year standing.
COSC_O 405 (3) Modelling and Simulation
Numeric dynamic systems models and emphasis on discrete stochastic systems. State description of models, common model components, entities. Common simulation language. Simulation using algebraic languages. Simulation methodology: data collection, model design, output analysis, optimization, validation. Elements of queuing theory, relationship to simulation. Applications to computer systems models. Credit will be granted for only one of COSC 405, DATA 405, COSC 505, or DATA 505. [3-2-0] Prerequisite: All of COSC 221, COSC 222.
COSC_O 406 (3) Numerical Optimization
Formulation and analysis of algorithms for continuous optimization problems; linear, quadratic, semi-definite, nonlinear (constrained and unconstrained), convex (smooth and non-smooth) optimization; large-scale problems; software packages and their implementation; elements of duality theory. Credit will not be granted for both COSC 406 and COSC 506. [3-0-0] Prerequisite: One of MATH 200, APSC 248 and one of MATH 221, APSC 179.
COSC_O 407 (3) Introduction to Parallel Computing
Design and implementation of parallel programs including theoretical computer models, parallel architectures (distributed, multicore, GPU), and standard parallel libraries. Credit will be granted for only one of COSC 407 or COSC 507. [3-2-0] Prerequisite: One of COSC 222, COSC 210.
COSC_O 414 (3) Computer Graphics
Human vision and colour, modelling, geometric transformations, algorithms for 2-D and 3-D graphics, hardware and system architectures, shading and lighting, animation. [3-0-0] Prerequisite: All of COSC 221, COSC 222 and one of MATH 221, APSC 179.
COSC_O 416 (3-9) Special Topics in Databases
Advanced or specialized topics in database design, modelling, and implementation. This course may be taken more than once for credit. Credit will be granted for only one of COSC 416 or COSC 516 when the subject matter is of the same nature. Prerequisite: COSC 304. and third-year standing.
COSC_O 417 (3-6) Topics in Computer Networks
Advanced or specialized topics in emerging network technologies. With different topics, this course may be taken twice for credit. [3-2-0] Prerequisite: All of COSC 315, COSC 328.
COSC_O 419 (3-9) Topics in Computer Science
Advanced or specialized topics in computer science. Consult the department for the specific topic to be offered in any given year. Credit will be granted for only one of COSC 419 or COSC 519 when the subject matter is of the same nature. Prerequisite: Fourth-year standing.
COSC_O 421 (3) Network Science
Graphs and complex networks in scientific research. Probabilistic and statistical models. Structures, patterns, and behaviors in networks. Algorithmic and statistical methods (online/mobile), social networks, and social media platforms. Social influence, information diffusion, and viral marketing. Sentiment analysis and opinion mining. Data privacy. Search engines and recommendation systems. Credit will be granted for only one of COSC 421, COSC 521, DATA 421 or DATA 521. [3-2-0] Prerequisite: All of COSC 221, COSC 222 and one of STAT 230, STAT 205.
COSC_O 431 (3-9) Special Topics in Databases, Lecture Format
Advanced or specialized topics in database design, modelling, and implementation. This course may be taken more than once for credit. Credit will be granted for only one of COSC 416, 431, 432, 516, 531, 532 when the subject matter is of the same nature. Prerequisite: COSC 304. and third-year standing.
COSC_O 432 (3-9) Special Topics in Databases, Lecture and Laboratory Format
Advanced or specialized topics in database design, modelling, and implementation. This course may be taken more than once for credit. Credit will be granted for only one of COSC 416, 431, 432, 516, 531, 532 when the subject matter is of the same nature. Prerequisite: COSC 304 and third-year standing.
COSC_O 433 (3-6) Topics in Computer Networks, Lecture Format
Advanced or specialized topics in emerging network technologies. With different topics, this course may be taken twice for credit. Credit will be granted for only one of COSC 417, 433, 434 when the subject matter is of the same nature. Prerequisite: All of COSC 315, COSC 328.
COSC_O 434 (3-6) Topics in Computer Networks, Lecture and Laboratory Format
Advanced or specialized topics in emerging network technologies. With different topics, this course may be taken twice for credit. Credit will be granted for only one of COSC 417, 433, 434 when the subject matter is of the same nature. Prerequisite: All of COSC 315, COSC 328.
COSC_O 436 (3-9) Topics in Computer Science, Lecture Format
Advanced or specialized topics in computer science. Consult the department for the specific topic to be offered in any given year. Credit will be granted for only one of COSC 419, 436, 437, 519, 536, 537 when the subject matter is of the same nature. Prerequisite: Fourth-year standing.
COSC_O 437 (3-9) Topics in Computer Science, Lecture and Laboratory Format
Advanced or specialized topics in computer science. Consult the department for the specific topic to be offered in any given year. Credit will be granted for only one of COSC 419, 436, 437, 519, 536, 537 when the subject matter is of the same nature. Prerequisite: Fourth-year standing.
COSC_O 441 (3) Advanced Human Computer Interaction
Computer interaction design principles, advanced methodologies and theories; novel interfaces and platforms, conceptualization from ideation to implementation, advanced techniques for evaluation including controlled quantitative evaluation, field evaluation, quantitative analysis; introduction to HCI research. Credit will be granted for only one of COSC 441 or COSC 541. [3-2-0] Prerequisite: COSC 341. and Fourth-year standing.
COSC_O 442 (3) Mobile Educational Game Development
Game design and development on a mobile platform with special attention to educational games. Topics may include: educational frameworks, storytelling techniques, game design, iterative prototyping, evaluation methodology, learner modelling, and learning analytics. Credit will be granted for only one of COSC 442 or COSC 542. [3-0-0] Prerequisite: All of COSC 341, COSC 310.
COSC_O 444 (3) Computer Vision
Advanced vision methods that enable machines to analyze and understand images. Fundamental problems in computer vision and the state-of-the-art approaches that address them. Feature detection and matching, geometric and multi-view vision, structure from X, segmentation, object tracking and visual recognition, and deep learning methods. Credit will be granted for only one of COSC 444, COSC 544 or COSC 545. [3-0-0] Prerequisite: COSC 344.
COSC_O 447 (3) Directed Studies in Software Maintenance
Maintenance of a large software system including prioritizing requests, modifying the design, implementing new features, fixing bugs, and regression testing. The student will undertake the maintenance of an existing project. Prerequisite: Third-year standing and permission of the department head.
COSC_O 448 (3-6) Directed Studies in Computer Science
Supervised reading, participation in a seminar, and one or more programming projects. With different topics, this course may be taken twice for credit. Prerequisite: Third-year standing and permission of the department head.
COSC_O 449 (6) Honours Thesis
Students will undertake a research project as agreed upon by the student, supervising faculty member, and department head. A written thesis and a public presentation (poster or seminar) are required. Prerequisite: Fourth-year standing; admission to the B.A. or B.Sc. Computer Science Honours Program; and permission of the department head.
COSC_O 490 (3) Student-Directed Seminar
Self-directed, collaborative studies, in a group-learning environment, initiated and coordinated by senior undergraduate or graduate students with the supervision of a faculty advisor. Course structure, enrolment and delivery methods will comply with the Handbook for Student-Directed Seminars. Prerequisite: Third-year standing and permission of the Department Head.
A capstone project requiring team software development for an actual client. Students must produce a comprehensive report and deliver a formal presentation. [0-3-0; 0-3-0] Prerequisite: All of COSC 304, COSC 310, COSC 341.
COSC_O 504 (3) Database System Implementation
Constructing database systems: file organizations, storage management, system architectures, query processing/optimization, transaction management, recovery, and concurrency control. Credit will be granted for only one of COSC 404 or COSC 504.
COSC_O 505 (3) Modelling and Simulation
Simulation methodology: data collection, model design, output analysis, optimization, validation. Credit will be granted for only one of COSC 405, DATA 405, COSC 505, or DATA 505.
COSC_O 506 (3) Numerical Optimization
Formulation and analysis of algorithms for continuous optimization problems; linear, quadratic, semi-definite, nonlinear (constrained and unconstrained); large-scale problems. Credit will be granted for only one of COSC 406 or COSC 506.
COSC_O 507 (3) Parallel Computing
Design, implementation and performance analysis of parallel programs. Theoretical computer models, parallel architectures, and standard parallel libraries. Credit will be granted for only one of COSC 407 or COSC 507.
COSC_O 516 (3-6) Special Topics in Databases
Specialized topics in database design, modelling, and implementation. This course may be taken more than once for credit. Credit will be granted for only one of COSC 416 or COSC 516 when the subject matter is of the same nature.
COSC_O 519 (3-6) Topics in Computer Science
Specialized topics in computer science. Credit will be granted for only one of COSC 419 or COSC 519 when the subject matter is of the same nature.
COSC_O 520 (3) Advanced Algorithms
Algorithm design, analysis and application. Algorithmic graph theory, parameterization, approximation, and randomization techniques. Algorithms for computational-hard problems and problems involving large-scale networks and/or massive datasets. Credit will be granted for only one of COSC 320 or COSC 520.
COSC_O 521 (3) Network Science
Graphs and complex networks in scientific research. Probabilistic and statistical models. Structures, patterns, and behaviors in networks. Algorithmic and statistical methods. (online/mobile) social networks and social media platforms. Social influence, information diffusion, and viral marketing. Sentiment analysis and opinion mining. Data privacy. Search engines and recommendation systems. Credit will be granted for only one of COSC 421, COSC 521, DATA 421 or DATA 521.
COSC_O 522 (3) Advanced Topics in Artificial Intelligence
Artificial intelligence and intelligent systems. Problem solving techniques, state-space search, game-tree search, and constraint programming. Logic reasoning, multiagent systems, and game theory. Probabilistic reasoning, machine learning, and applications in digital games/arts, data mining, and natural language processing. Credit will be granted for only one of COSC 322 or COSC 522.
COSC_O 531 (3-6) Special Topics in Databases, Lecture Format
Specialized topics in database design, modelling, and implementation. This course may be taken more than once for credit. Credit will be granted for only one of COSC 416, 431, 432, 516, 531, 532 when the subject matter is of the same nature.
COSC_O 532 (3-6) Special Topics in Databases, Lecture and Laboratory Format
Specialized topics in database design, modelling, and implementation. This course may be taken more than once for credit. Credit will be granted for only one of COSC 416, 431, 432, 516, 531, 532 when the subject matter is of the same nature.
COSC_O 536 (3-6) Topics in Computer Science, Lecture Format
Specialized topics in computer science. Credit will be granted for only one of COSC 419, 436, 437, 519, 536, 537 when the subject matter is of the same nature.
COSC_O 537 (3-6) Topics in Computer Science, Lecture and Laboratory Format
Specialized topics in computer science. Credit will be granted for only one of COSC 419, 436, 437, 519, 536, 537 when the subject matter is of the same nature.
COSC_O 541 (3) Advanced Human Computer Interaction
Computer interaction design principles, advanced methodologies and theories; novel interfaces and platforms, conceptualization from ideation to implementation, advanced techniques for evaluation including controlled quantitative evaluation, field evaluation, quantitative analysis; HCI research, literature review, critique, reproducibility. Credit will be granted for only one of COSC 441 or COSC 541.
COSC_O 544 (3) Computer Vision
Computer vision methods and problem-solving techniques. Feature detection and matching, geometric and multi-view vision, structure from X, segmentation, object tracking and visual recognition, and deep learning methods. Credit will be granted for only one of COSC 444, COSC 544 or COSC 545.
COSC_O 548 (3) Directed Studies
COSC_O 549 (12) Master's Thesis
Pass/Fail.
COSC_O 550 (6) Master's Project
Pass/Fail.
COSC_O 590 (1-3) Graduate Seminar
Presentation and discussion of recent results in the Computer Science literature. Pass/Fail.
COSC_O 649 (0) Doctoral Dissertation
Pass/Fail.
COSC_O 690 (3) Research Skills
Completion of a small research project that generates original results. Written and oral presentation required. Pass/Fail.