logo



CLASSES

100 Level, 200 Level, 300 Level, 400 Level, 800 Level, 900 Level


Computer Science Classes Taken Thus Far:


CMPT 111.3 - Introduction to Computer Science and Programming

Introduces basic concepts of computer science through the study of traditional elementary programming, object-oriented programming, debugging, design of objects, and standard algorithms with their analysis.

CMPT 115.3 - Principles of Computer Science

Introduces more of the basic concepts of computer science and object-oriented software development with an emphasis on fundamental data structures (lists, stacks, queues, trees) and associated algorithms. This course includes recursion, abstract data types and selected topics exploring some of the breadth of computer science.



CMPT 214.3 - Programming Principles and Practice

The purpose of this course is to broaden students' view of software development. Topics include introductions to imperative programming languages and scripting languages, programming practices, and tools and techniques for program development and maintenance.

CMPT 215.3 - Introduction to Computer Organization and Architecture

An introduction to the design of contemporary computer systems, focusing on the hardware-software interface and the upper hardware levels. Topics include machine and assembly language, computer arithmetic, the processor datapath and control, pipelining, memory hierarchies, and I/O systems.

CMPT 250.6 - Data Structures and Software Development

A continuation of CMPT 115 by means an intermediate study of data structures and object-oriented programming. The topics include searching, balanced trees, graphs, file structures, and timing analysis. Introduction to the field of Software Engineering, including formal ADTs, design-by-contract, and UML-based software design and development.

CMPT 260.3 - Mathematical Logic and Computing

Focuses on elementary applied logic and set theory and relates these concepts to a variety of computer science areas such as syntactic analysis, relational databases, logic programming, artificial intelligence, and formal program verification.



CMPT 320.3 - Introduction to Digital Systems Design

The following aspects of digital systems design will be discussed: binary and multiple-valued logic algebras, combinational logic design and minimization techniques, design of arithmetic circuits, implementation of digital systems using random and array structures, sequential logic design, finite-state machines, register transfer machines, and simple control unit design.

CMPT 332.3 - Principles of Operating Systems

An introduction to the principles of modern operating systems. The synchronization and communication of cooperating processes. Process Scheduling. Virtual Memory. File System design and organization. Introduction to distributed systems.

CMPT 340.3 - Programming Language Paradigms

A comparative study of programming languages and paradigms. Introduction to functional programming languages, such as Haskell; topics include: recursion, higher-order functions, polymorphic types, lazy evaluation. Introduction to logic programming languages, such as Prolog; topics include: unification, backtracking, resolution, non-determinism. An introduction to interpreters, parsers, program transformations, and semantic models.

CMPT 355.3 - Theory and Application of Databases

Lectures, assignments and projects dealing with the management, storage, and retrieval of large volumes of data. Concentrates on the relational data model, and relational data base management systems. Topics include: recovery and concurrency, integrity and security, query optimization, normalization, and semantic modeling. Additional topics include multimedia databases and other paradigms.

CMPT 360.3 - Machines and Algorithms

The first part develops and analyzes some standard techniques for algorithm development which are widely applicable to computer science problems. The second part analyzes several formal models of computers so that their capabilities are known.

CMPT 370.3 - Intermediate Software Engineering

Principles and techniques for developing software combined with the practical experience of creating a mid-size software system as a member of a software development team. Includes: teamwork; projects, planning and process; users and requirements; use cases; modeling; quality; software architecture; testing; GUI design, design principles, patterns and implementation; ethics; professionalism.

CMPT 385.3 - Introduction to Computer Graphics

An overview of rendering, modeling, and animation. Emphasis is on raster graphics. Topics include algorithms for generating lines, circles, and ellipses; half-toning; shading; the Z-buffer; the three-term lighting model; non-photorealistic rendering.



CMPT 400.3 - Research Topics in Computer Science

Senior students will be introduced to research in an advanced area of computer science under the supervision of a faculty member specializing in the area.

CMPT 463.3 - Advanced Algorithms

A continuation of the algorithms part of CMPT 360. Some of the algorithm techniques include: augmenting algorithms for network flows, matching and graph connectivity, geometric algorithms for nearest neighbour, intersection problems, and convex hull, parallel and distributed algorithms.

CMPT 481.3 - Human-Computer Interaction

Fundamental theory and practice in the design, implementation, and evaluation of human computer interfaces. Topics include: principles of design, methods for evaluating interfaces with or without user involvement, techniques for prototyping and implementing graphical user interfaces.

CMPT 485.3 - Advanced Computer Graphics

Advanced topics in computer graphics, concentrating on image formation and modelling issues. The implications of the data-driven approach to computer graphics. Simulation and non-parametric methods contrasted. The course will involve a project investigating and implementing some current algorithms from the literature.

CMPT 487.3 - Image Processing and Computer Vision

This course presents fundamental concepts in computer vision and image processing. Topics may include properties of digital images, digital image formats, image acquisition devices, edge detection, convolution filtering, image segmentation, shape representation, image compression, image morphology, spectral analysis, texture, object recognition, motion analysis and 3D interpretation.



CMPT 816.3 - Advanced Software Engineering

Covers advanced software engineering principles and techniques. Includes: software architecture; software evolution; reverse engineering; design recovery; refactoring; software comprehension; software analysis; domain specific techniques; requirements and specification; advanced design and modeling techniques; formal methods; and the business of software.

CMPT 821.3 - Advanced Topics in Programming Languages

Advanced topics in programming languages will be selected from: programming language design, programming language semantics, code optimization, memory management, garbage collection, closures, functional programming, logic programming, aspect-orient programming, concurrent programming, history of programming languages, advanced programming language features and their implementation, polymorphic type systems, domain specific languages.

CMPT 866.3 - Topics in Human-Computer Interaction

Topics studied may include the analysis and design of human-computer interaction, user interface objects and tool kits, intelligent user interfaces and user modeling, adaptive systems design, human-computer interaction standards, and computers in society.

CMPT 875.3 - Texture Analysis and Synthesis

Use of texture in computer graphics and computer vision. Texture mapping, algorithms for procedural texture synthesis. Texture as a vision cue; segmentation and shape-form texture. Texture synthesis from example. Graphics hardware and shaders.

CMPT 880.3 - Research Methods in Computer Science

Course designed to expose the student to research methods and paradigms, and to provide the opportunity to explore potential research topics under the direction of a faculty member working in that area. Not only should this experience help develop sound research techniques and a sense of discovery, it should promote communication skills (both written and verbal), which aid in the clear presentation of material. These skills will be very valuable in the ultimate completion of thesis requirements. Taken by all M.Sc. and Ph.D. students in Term 2. The 880/890 Coordinator arranges a series of seminars which cover research facilities, methods and standards in the Department. Concurrently while attending these seminars, students begin to research in depth an advanced topic in a selected field under the direction of a faculty member. Deadlines are set for all students to meet a series of milestones as they progress from initial statement of intent to a completed research paper. This process culminates in a Departmental Symposium in the fall when all students present their work to the full department.



CMPT 990.3 - Department Seminar Series

Throughout the academic year the Department sponsors a seminar series featuring speakers and topics of wide-ranging interest. On many occasions the speakers are scholars who have been invited to visit the Department, often from other universities. All graduate students are required to register and regularly attend and participate in the departmental seminar series throughout their period of residence. Failure to regularly attend the seminars may result in an incomplete grade for the course, and a requirement to retake CMPT 990. Faculty are also expected to attend these seminars. Attendance is important to enhance the breadth of perspectives of not only students but also faculty. Graduating Ph.D. students are required to present the results of their thesis research in one of these seminars. Many interesting ideas (for theses, graduate papers, or research papers) can often be sparked by notions first glimpsed at a seminar. Where a visitor to the Department is working in an area of particular interest to a student, a special effort should be made to meet with him or her in a smaller group discussion. This can be arranged through the seminar coordinator.

CMPT 994.3 - M.Sc. Thesis

Please see my M.Sc. Thesis page here.