Course Descriptions

Computer Science, Faculty of Arts and Sciences

COSC: Computer Science

COSC 101 (3) Digital Citizenship
Provides knowledge and skills to navigate the digital society. The importance of digital participation will be investigated by studying issues surrounding digital access, skills, and utilization. Digital literacy is emphasized through the exploration of computer applications, the use of converging technologies, and online resources. This course does not assume students have any Computer Science background. Credit will be granted for only one of COSC 101 or COSC 132. [3-2-0]
COSC 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.
COSC 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 MATH12, PREC12, or CALC12
COSC 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.
COSC 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 life-long productivity and understanding of technology in society. [3-2-0]
COSC 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-2-0]
Prerequisite: One of COSC 111, COSC 122.
COSC 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 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-2-0]
Prerequisite: A score of 60% or higher in COSC 121.
COSC 221 (3) Introduction to Discrete Structures
Introduction to sets, logic, combinatorics, and graph theory, as applied in computing: sets and propositions, permutations and combinations, graphs and trees, Boolean algebra, algorithms, and applications. [3-0-1]
Prerequisite: One of MATH 101, MATH 142, APSC 172.
Corequisite: COSC 121.
COSC 222 (3) Data Structures
Introduction to the design, implementation and analysis of data structures. Topics will include lists, stacks, queues, trees, and graphs. [3-2-0]
Prerequisite: A score of 60% or higher in COSC 121.
COSC 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 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 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: COSC 223.
COSC 301 (3) Introduction to Data Analytics
Techniques for computation, analysis, and visualization of data using software. Manipulation of small and large data sets. Automation using scripting. Real-world applications from life sciences, physical sciences, economics, engineering, or psychology. No prior computing background is required. Credit will be granted for only one of COSC 301, DATA 301 or DATA 501. [3-2-0]
Prerequisite: Third-year standing.
Equivalency: DATA 301.
COSC 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 COSC 111.
Equivalency: MATH 303.
COSC 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. [3-2-0]
Prerequisite: One of COSC 111, COSC 123, APSC 177 and third-year standing.
COSC 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]
Prerequisite: COSC 223 or a score of 60% or higher in COSC 121, and third-year standing
Corequisite: COSC 310.
COSC 310 (3) Software Engineering
Techniques to construct large systems using fundamental activities of specification, design, implementation, testing, and maintenance. Various life cycle models including the Unified Process. Exposure to software development tools, UML modeling techniques, good development practices, and project management. [3-2-0]
Prerequisite: One of COSC 222, COSC 223 and, third-year standing.
COSC 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 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. Credit will be granted for only one of COSC 320 or COSC 520. [3-0-0]
Prerequisite: All of COSC 221, COSC 222, MATH 221.
COSC 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 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-2-0]
Prerequisite: A score of 60% or higher in all of COSC 211, COSC 222.
COSC 331 (3) Principles of Computer Science
An introduction to different programming paradigms and theories of computation. Functional programming and basics of lambda calculus; logic programming and basics of propositional and first-order logic; regular languages and finite automaton. Credit will be granted for only one of COSC 331 or COSC 231. [3-2-0]
Prerequisite: COSC 222.
COSC 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 of 60% or higher in PHYS 122 or (preferably) PHYS 102; and a score of 60% or higher in COSC 222.
COSC 341 (3) Human Computer Interaction
Examines the basic principles behind interaction design; how humans interact with computers, as well as the user-centered design cycle; user task analysis, task models, graphical interface design, prototyping, and evaluation. Credit will be granted for only one of COSC 341 or COSC 541. [3-2-0]
Prerequisite: Third-year standing.
COSC 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: A score of 60% or higher in COSC 121 and third-year standing.
COSC 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-2-0]
Prerequisite: A score of 60% or higher in COSC 304 and third-year standing.
COSC 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 tocomputer systems models. Credit will be granted for only one of COSC 405, DATA 405, COSC 505, or DATA 505. [3-2-0]
Prerequisite: A score of 60% or higher in COSC 221 and a score of 60% or higher in COSC 222.
Equivalency: DATA 405.
COSC 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-2-0]
Prerequisite: One of MATH 200, APSC 248 and one of MATH 221, APSC 179.
COSC 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: Either (a) COSC 111 or (b) APSC 177. Third-year standing is required.
COSC 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-2-0]
Prerequisite: All of COSC 221, COSC 222 and one of MATH 221, APSC 179.
COSC 416 (3-9) d 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: A score of 60% or higher in COSC 304 and third-year standing.
COSC 417 (3/6) d 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: COSC 315 and a score of 60% or higher in COSC 328.
COSC 419 (3-9) d Topics in Computer Science
Advanced or specialized topics in computer science. Consult the unit 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 420 (3) Algorithms and Intelligent Systems for Bioinformatics
Algorithmic techniques for problems in bioinformatics. Analysis and comparison of genetic sequences; construction of phylogenetic trees; prediction of biomolecular structures; construction and analysis of biopolymer interaction networks; pattern discovery in biological data; techniques from artificial intelligence. [3-2-0]
Prerequisite: COSC 222 and one of COSC 320, COSC 322.
COSC 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, DATA 421 or DATA 521. [3-2-0]
Prerequisite: Third-year standing.
Equivalency: DATA 421.
COSC 435 (3) Computer-Based Image Analysis
Digital processing of remotely sensed image data. Techniques for acquiring, calibrating, registering, enhancing, and interpreting digital images are included. [2-0-2]
Prerequisite: A score of 60% or higher in COSC 222.
COSC 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 modeling, 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 445 (3) Computer Vision
Processing and interpretation of images: image sensing, filtering, algorithms for colour analysis, texture description, image segmentation, and object recognition. [3-2-0]
Prerequisite: COSC 222 and one of MATH 200, APSC 248 and one of MATH 221, APSC 179.
COSC 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 unit head.
COSC 448 (3/6) d 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 unit head.
COSC 449 (6) Honours Thesis
Students will undertake a research project as agreed upon by the student, supervising faculty member, and unit 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 unit head.
COSC 499 (6) Capstone Software Engineering Project
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 341 and a score of 60% or higher in COSC 310.
COSC 504 (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.
COSC 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 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 507 (3) Parallel Computing
Design and implementation of parallel programs including theoretical computer models, parallel architectures, and standard parallel libraries. Performance analysis of parallel programs. Credit will be granted for only one of COSC 407 or COSC 507.
COSC 516 (3/6) d 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.
COSC 519 (3/6) d Topics in Computer Science
Advanced or 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 520 (3) Advanced Algorithms
Algorithm design and analysis with applications in scientific research. Fundamental design and analysis techniques. Basics of 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 522 (3) Advanced Topics in Artificial Intelligence
Artificial intelligence and intelligent systems. Problem solving techniques, state-space search, game-tree search, and constraint programming. Topics in 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 541 (3) Advanced Human Computer Interaction
Principles of design and interaction, novel interfaces and platforms, prototyping, evaluation methodology, quantitative analysis. Credit will be granted for only one of COSC 341 or COSC 541.
COSC 542 (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 modeling, and learning analytics. Credit will not be granted for both COSC 442 and COSC 542.
COSC 548 (3) Directed Studies
COSC 549 (12) Master's Thesis
Pass/Fail.
COSC 550 (6) Master's Project
Pass/Fail.
COSC 589 (3) Master's Essay
Pass/Fail.
COSC 590 (1-3) d Graduate Seminar
Presentation and discussion of recent results in the Computer Science literature. Pass/Fail.

a place of mind, The University of British Columbia

Enrolment Services
University Centre, Room 322
3333 University Way, Kelowna BC, Canada V1V 1V7