Calendar 2009/10
Course Descriptions
This chapter provides an archive of courses offered by UBC. For current course sections and schedules, please visit the online Course Schedule.
Computer Science, Faculty of Arts and Sciences
COSC: Computer Science
- 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. OUC equivalent: COSC 111. [3-2-0]
Prerequisite: A score of 70% or higher in MATH 125 or Mathematics 12.
- 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. OUC equivalent: COSC 121. Credit will not be granted for both COSC 121 and COSC 123. [3-2-0]
Prerequisite: A score of 60% or higher in one of COSC 111, COSC 123.
Equivalency: 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. OUC equivalent: COSC 122. [3-2-0]
- COSC 123 (3) Introduction to Computer Science
- A broad introduction to computer science: hardware, software development, programming, operating systems, databases, and networks. Laboratory allows creative development with computers. Credit will not be granted for both COSC 123 and COSC 121. [3-2-0]
Prerequisite: One of COSC 111, COSC 122.
Equivalency: COSC 121.
- COSC 132 (3) Surviving Security Threats in Our Information Society
- Aspects of computing security. Techniques for enforcing security will be investigated. Awareness of how human factors can deceive security measures will be explored. Credit will not be granted for both COSC 132 and COSC 232. OUC equivalent: COSC 232. [3-3*-0]
- COSC 150 (3) Digital Logic and Microcomputer Hardware
- Introduction to digital logic and how it applies to microcomputers. Perform circuit board and disk drive installation, configuration, and replacement; connect other devices such as printers, plotters, mice, and modems. Number systems and arithmetic, combinational and sequential logic, memory devices, PC architecture, disk drives and controllers, video standards, and serial and parallel ports. OUC equivalent: COSC 150. [3-2-0]
Corequisite: One of COSC 111, COSC 122.
Equivalency: COSC 124.
- 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. OUC equivalent: COSC 211. [3-2-0]
Prerequisite: A score of 60% or higher in one of COSC 121, COSC 123.
- 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. Credit will not be granted for both COSC 221 and MATH 251. OUC equivalent: COSC 221. [3-0-1]
Prerequisite: One of MATH 101, MATH 142.
Corequisite: One of COSC 121, COSC 123.
Equivalency: MATH 251.
- COSC 222 (3) Data Structures
- Introduction to the design, implementation and analysis of data structures. Topics will include lists, stacks, queues, trees, and graphs. OUC equivalent: COSC 222. [3-2-0]
Prerequisite: A score of 60% or higher in one of COSC 121, COSC 123. A score of 70% or higher in COSC 123 and completion of at least 3 credits of first-year MATH are recommended.
- COSC 229 (3) Computer Graphics
- Basic graphics principles through a representative set of language-independent algorithms. Basic concepts of the management and interpretation of a display file, and the manipulation of graphical objects. OUC equivalent: COSC 229. [3-2-0]
Prerequisite: A score of 60% or higher in one of COSC 121, COSC 123 and one of MATH 251, COSC 221.
- COSC 231 (3) Principles of Computer Science
- An introduction to fundamentals of programming paradigms and the theory of computation. Functional programming and basics of lambda calculus; logic programming and basics of propositional and first-order logic; regular languages and finite automaton. [3-2-0]
Prerequisite: A score of 60% or higher in one of COSC 121, COSC 123.
- COSC 250 (3) Digital Systems Design
- Analysis and design of computer systems. Combinational and sequential electronic system design, hardware specification, modelling, and simulation using hardware description languages (HDLs), and design with programmable logic devices and controllers. Applications include embedded systems and wireless communications. OUC equivalent: COSC 250. [3-2-0]
Prerequisite: A score of 60% or higher in one of COSC 150, PHYS 219.
- COSC 302 (3) Numerical Computation for Algebraic Problems
- Numerical techniques for basic mathematical processes involving no discretization, and their analysis. Solution of linear systems, including analysis of round-off errors; norms and condition numbers; introduction to iterative techniques in linear algebra, including eigenvalue problems; solution to nonlinear equations. OUC equivalent: COSC 302. [3-0-0]
Prerequisite: All of MATH 200, MATH 221 and one of COSC 121, COSC 123.
- COSC 303 (3) Numerical Approximation and Discretization
- Numerical techniques for basic mathematical processes involving discretization and their analysis. Interpolation and approximation, including splines and least squares data fitting; numerical differentiation and integration; introduction to numerical initial value ordinary differential equations. OUC equivalent: COSC 303. [3-0-0]
Prerequisite: All of MATH 200, MATH 221 and one of COSC 121, COSC 123.
- COSC 304 (3) Introduction to Database Management Systems
- Database systems from user/developer perspective: querying using SQL and relational algebra, design using ER/UML diagrams and normalization, and programming using database APIs. Construction of database-driven applications and websites and experience with current database technologies. OUC equivalent: COSC 304. [3-2-0]
Prerequisite: COSC 222.
- 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. OUC equivalent: COSC 305. [3-2-0]
Prerequisite: A score of 60% or higher in one of COSC 121, COSC 123 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. OUC equivalent: COSC 310. [3-2-0]
Prerequisite: COSC 222.
Corequisite: COSC 304.
- 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. OUC equivalent: COSC 315. [3-2-0]
Prerequisite: All of COSC 221, COSC 222.
- COSC 319 (3) Software Engineering Project
- Design, implementation, and testing of a large software system using a team approach. OUC equivalent: COSC 319. [0-3-0]
Prerequisite: COSC 310.
- 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. OUC equivalent: COSC 320. [3-0-0]
Prerequisite: All of COSC 221, COSC 222, MATH 221.
- COSC 322 (3) Introduction to Artificial Intelligence
- Problem solving and planning; state/action models and graph searching. Natural language understanding, computational vision, and applications of artificial intelligence. OUC equivalent: COSC 322. [3-0-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. OUC equivalent: COSC 328. [3-2-0]
Prerequisite: A score of 60% or higher in all of COSC 211, COSC 222.
- COSC 336 (3) Object-Oriented Analysis and Design
- Design and development of large-scale, object-oriented software. Topics include design patterns, inheritance, interfaces, polymorphism, data abstraction, concurrency, and encapsulation. [3-2-0]
Prerequisite: COSC 222.
- COSC 341 (3) Human Computer Interaction
- Examines different types of interaction, both from a psychological perspective and a programming perspective. OUC equivalent: COSC 341. [3-2-0]
Prerequisite: One of COSC 121, COSC 123.
- COSC 350 (3) Microprocessor Programming and Control
- Programming in both assembly and high-level languages to control a variety of digital devices, including real-time data acquisition systems, instrumentation, and robots. Multiprecision arithmetic, interface protocols, basic data analysis and logging, noise filtering, telemetry, and real-time technique. Student-designed final laboratory project will demonstrate a turn key system. OUC equivalent: COSC 350. [2-2-1]
Prerequisite: One of COSC 150, PHYS 229 and third-year standing.
- COSC 360 (3) Online Document Systems
- Design, implementation, administration of network-based distributed information systems. Server implementations on public systems, including Gopher, World-Wide Web, CGI scripting, automated search engines, Java language. Closed systems, including NFS, Andrew, methods of secure data exchange across public channels. Emerging document delivery mechanisms, including Java, real-time Audio/Visual aids. OUC equivalent: COSC 360. [3-2-0]
Prerequisite: A score of 60% or higher in one of COSC 121, COSC 123 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. OUC equivalent: COSC 404. [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 to computer systems models. OUC equivalent: COSC 405. [3-2-0]
Prerequisite: A score of 60% or higher in COSC 221 and a score of 60% or higher in COSC 222.
- 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. [3-2-0]
Prerequisite: All of MATH 200, MATH 221.
- 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. OUC equivalent: COSC 414. [3-2-0]
Prerequisite: All of COSC 221, COSC 222, MATH 221.
- COSC 416 (3) Special Topics in Database
- Advanced or specialized topics in database design, modelling, and implementation. This course may be taken more than once for credit. OUC equivalent: COSC 416. [3-0-0]
Prerequisite: A score of 60% or higher in COSC 304 and third-year standing.
- COSC 417 (3) Topics in Computer Networks
- Advanced or specialized topics in emerging network technologies. With different topics, this course may be taken twice for credit. OUC equivalent: COSC 417. [3-2-0]
Prerequisite: COSC 315 and a score of 60% or higher in one of COSC 318, COSC 328.
- COSC 419 (3) 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. This course may be taken more than once for credit with different topics. OUC equivalent: COSC 419. [3-2-0]
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 434 (3) Database Administration
- Technical aspects of database administration; physical database design and implementation; database monitoring and fine tuning performance; management of user privileges and roles; database security, backup, and recovery. Hands-on experience dealing with specific aspects of database administration. OUC equivalent: COSC 434. [3-2-0]
Prerequisite: A score of 60% or higher in all of COSC 315, COSC 404.
- 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. OUC equivalent: COSC 435. [2-0-2]
Prerequisite: A score of 60% or higher in COSC 222.
- 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: All of COSC 222, MATH 200, MATH 221.
- 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: COSC 319 and permission of the unit head.
- COSC 448 (3) Directed Studies in Computer Science
- Supervised reading, participation in a seminar, and one or more programming projects. This 3-credit course may be taken over one or two terms. A student may receive credit for this course twice with a different topic. OUC equivalent: COSC 448.
Prerequisite: All of COSC 310, COSC 319 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 poster presentation and seminar are required.
Prerequisite: Fourth-year standing; admission to the COSC Honours Program; and permission of the unit head.