May 02, 2024  
University of Alberta Calendar 2020-2021 
    
University of Alberta Calendar 2020-2021 [ARCHIVED CATALOG]

Course Listings


 

Details of Courses

Courses taught at the University of Alberta are listed alphabetically. All courses, except those taught by Faculté Saint-Jean, are described in English.

Each course is designated by its computer abbreviation and a number. Students should use this abbreviation and number when completing any form requiring this information.

Courses are numbered according to the following system:

000-099 Pre-University
100-199 Basic Undergraduate. Normally requires no university-level prerequisites. Designed typically for students in the first year of a program.
200-299 Undergraduate. Prerequisites, if any, are normally at the 100-level. Designed typically for students in the second year of a program.
300-399 Undergraduate. Prerequisites, if any, are normally at the 200-level. Designed typically for students in the third year of a program.
400-499 Advanced Undergraduate. Prerequisites, if any, are normally at the 300-level. Designed typically for students in the fourth year of a program.
500-599 Graduate. Designated for graduate students and certain advanced or honors undergraduate students in their final year.
600-799 Graduate Courses
800-899 Special Registrations
900-999 Graduate Thesis and Project Numbers

For the purposes of program descriptions and prerequisite designation, courses numbered 100-199 are designated as Junior Courses and courses numbered 200-499 are designated as Senior Courses.

Note: Some exceptions to the course number system described above have been granted to the Faculty of Law and the Faculty of Medicine and Dentistry.

Course Description Symbols and Figures

Several symbols and figures are used to indicate the type, duration, and weight of courses.

  1. ★—Indicates “units of course weight,” and usually follows the course title. The accompanying number indicates the weight of the course as used in computing grade point averages and for meeting degree requirements.
    A course which runs throughout the Fall/Winter (i.e., from September through April) is usually weighted ★6. A course that runs for only one term (i.e., Fall: from September to December, or Winter: from January through April) is usually weighted ★3. Certain courses are offered over Fall/Winter or Spring/Summer, or in one term, with weights of ★1, ★2, and ★4. These are considered as one-sixth, one-third, and two-thirds of a Fall/Winter or Spring/Summer course, respectively. Some honors and graduate courses involving research may vary in weight according to the length and difficulty of the project. Some clinical courses may vary in weight according to the length of clinical experience. Some courses, not included in the computation of grade point averages, are offered for credit only and either carry a weight of ★0, or are marked as “Credit.”
    Undergraduate students who take courses offered by the Faculty of Engineering but are not registered in Engineering will have a course weight assigned for these courses according to the protocol of their home Faculty.
  2. fi—Denotes: “fee index,” the value used to calculate the instructional fees for each course. The fee index is multiplied by the fee index value (given in the appropriate subsection of Fees Payment Guide ) to give the dollar value of instructional fees for the course.
    For normal courses, the fee index is twice the value of the units of course weight; for example, a course with ★3 normally has fi 6. In cases where exceptional fees considerations need to be made, the fee index is set differently by the Board of Governors.
    Note that certain programs (e.g., MD, DDS, etc.) are assessed on a program fee basis for all or certain years. In these cases, the fee index calculation does not apply.
  3. (x term, a-b-c)—These figures in parentheses give information on when the course is offered and the hours of instruction required by the course in a week, or in some cases the total time in a term.
    In the case of a single-term course, the term in which the course is given is mentioned (item x). The designation “either term” means that the course may be offered either in the first term or in the second term or in each term, at the discretion of the department concerned. The designation “variable” means that the course may be taught either as a single-term or as a full-session course.
    Item a indicates lecture hours. Item b indicates seminar hour(s), demonstration hours (d), clinic hours (c), or lecture-laboratory hours (L). Item c indicates laboratory hours. For two-term courses, the hours of instruction are the same in both terms unless otherwise indicated. The expression 3/2 means 3 hours of instruction every second week; 2s/2 means 2 seminar hours every second week.
    Examples:
    (first term, 3-0-3): a course taught in first term with 3 hours lecture, no seminar, and 3 hours lab per week.
    (second term, 0-1s-2): a course taught in second term with no lectures, 1 seminar hour, and 2 hours of lab per week.
    (either term, 3-0-0): a course taught in either first or second term, or each term, with 3 lecture hours per week, no seminar, and no lab.
    (two-term, 3-0-3): a course taught over both first and second term with three lecture hours, no seminar, and three hours lab per week.
    (variable, 3-0-0): a course which may be taught in either first or second term or over two terms with three lecture hours per week, no seminar, and no lab.
  4. Prerequisite—This provides information on courses which must be successfully completed before registering in the more advanced course.
    Corequisite—This provides information on courses which must be taken before or at the same time as the course described in the listing.
    Note: Departments are authorized to cancel the registration of those students registered in a course offered by the department if they do not meet the prerequisite and/or corequisite requirements stated in the course description in this Calendar.
  5. [Department]— This indicates the department responsible for registration for interdepartmental courses. Normally, courses will be credited to the discipline listed in the square brackets.
  6. Open Studies Courses—Courses that are available to Open Studies students are designated in Bear Tracks Course Catalog by the  symbol.  indicates that a course is available to Open Studies students on a delayed registration basis only (see Registration  for complete details).  To browse courses that have been approved for Open Studies students, see Open Studies Course Listings on the Office of the Registrar website.
Important: Registration Procedures for Two-Term Courses

Students are strongly advised to refer to the Registration and Courses menu at www.registrarsoffice.ualberta.ca for details. Two-term courses are normally offered over two terms (either Fall/Winter or Spring/Summer). In a few instances, two-term courses are offered within a single term. In all cases these are identifiable in the Class Schedule because they consist of part A and part B (e.g., English 111A and 111B).

To successfully register in a two-term course, students, must do the following:

  • Register in both the part A and part B for all types of sections offered (Lectures, Labs, Seminars, etc.);
  • Register in the same section numbers for part A and part B of a course (e.g., Lecture A1 for both part A and part B, and Lab E3 for both part A and part B);
  • Register in all the appropriate sections on the same day.

All of the above must be done or the course registration is invalid and will be deleted. Invalid registrations will be deleted nightly. It is the student’s responsibility to attempt the course registration again, subject to availability.

Example: A student wishes to register in ABCD 101, a two-term course. It has a lecture and a lab section. Based on the student’s timetable planning, decides to take Lecture C3 and Lab C8. The student must add

In Fall Term ABCD 101A Lec C3 and ABCD 101A Lab C8,
and  
In Winter Term ABCD 101B Lec C3 and ABCD 101B Lab C8.

All these sections must be added on the same day to successfully register. Otherwise the registration in ABCD 101 will be deleted overnight and the student’s place in the course will be lost.

Course Renumbering

Over the years many courses have been renumbered. Old numbers can be found within individual course listings of previous Calendar editions.

Courses on Reserve

Courses not offered in the past four years are removed from this Calendar and placed on Reserve. These courses may be taught again in the future, in which case they would be brought back into the active Course Listings and placed in the Calendar. Information about Reserve Courses is available through the Registrar’s Office, the University Secretariat, and Faculty Offices.

Faculty Specific Regulations Regarding Courses

For specific Faculty regulations relating to courses and for a complete list of subjects taught by a Faculty, please consult the Undergraduate Programs section of the Calendar at the end of each Faculty section.

Physical Requirements for University Courses

The University has a commitment to the education of all academically qualified students and special services are frequently provided on campus to assist disabled students.

Nevertheless, some courses make certain unavoidable demands on students with respect to the possession of a certain level of physical skill or ability if the academic objectives of the course are to be realized. In case of doubt, students are advised to contact the Department concerned and Student Accessibility Disability Services (SAS), Office of the Dean of Students.

Because support services cannot be guaranteed for all off-campus courses, instructors may be obliged to refuse registration in such courses.

Course Availability

The following is a comprehensive course listing of all the approved courses that the University of Alberta may offer. The appearance of a course in this list does not guarantee that the course will actually be offered. The most current information on courses is available on Bear Tracks at https://www.beartracks.ualberta.ca

Course Listings

 

Computing Science: Undergraduate

Department of Computing Science
Faculty of Science

Notes

  1. There are many routes to the study of Computing Science. Students should seek advice from a department advisor or visit our website at www.cs.ualberta. ca/courses.
  2. The department of Computing Science does not allow audits in any of its laboratory courses.
  3. Special sections of CMPUT 196, CMPUT 197, CMPUT 198, CMPUT 199, CMPUT 296 , CMPUT 297 , CMPUT 298, CMPUT 299 , CMPUT 396 , CMPUT 397, CMPUT 398, CMPUT 399 , CMPUT 496 , CMPUT 497 , CMPUT 498 , CMPUT 499  may have different prerequisites. Please check the specific course descriptions as posted by the Department of Computing Science.

  
  • CMPUT 204 - Algorithms I


    ★ 3 (fi 6) (either term, 3-1s-0) The first of two courses on algorithm design and analysis, with emphasis on fundamentals of searching, sorting, and graph algorithms. Examples include divide and conquer, dynamic programming, greedy methods, backtracking, and local search methods, together with analysis techniques to estimate program efficiency. Prerequisites: CMPUT 175 or 275 and CMPUT 272; one of MATH 100, 113, 114, 117, 134, 144, 154, or SCI 100.
  
  • CMPUT 206 - Introduction to Digital Image Processing


    ★ 3 (fi 6) (either term, 3-0-3) An introduction to basic digital image processing theory, and the tools that make advanced image manipulation possible for ordinary users. Image processing is important in many applications: editing and processing photographs, special effects for movies, drawing animated characters starting with photographs, analyzing and enhancing images captured by the Mars Rover or the Hubble telescope, and detecting suspects from surveillance cameras. Image processing concepts are introduced using tools like Photoshop and GIMP. Exposure to simple image processing programming with Java and MATLAB. This course is preparation for more advanced courses in the Digital Media area. Prerequisites: Any 100-level Computing Science course, plus knowledge of first-year level MATH, STAT; and introductory Java, C, or similar programming experience; or consent of the instructor or SCI 100. Open to students in the Faculty of Arts, Engineering and Sciences; others require consent of the instructor.
  
  • CMPUT 210 - Codes, Codemakers, Codebreakers: An Introduction to Cryptography


    ★ 3 (fi 6) (either term, 3-0-3) An historical introduction to cryptography intended for a general audience. The development of codes and code-breaking from military espionage in ancient Greece to deciphering hieroglyphics via the Rosetta stone to modern computer ciphers. Includes frequency analysis, one-time-pad security, and public key cryptography. Prerequisite: Any 100-level course.
  
  • CMPUT 229 - Computer Organization and Architecture I


    ★ 3 (fi 6) (either term, 3-0-3) Number representation, computer architecture and organization, instruction-set architecture, assembly-level programming, procedures, stack frames, memory access through pointers, exception handling, computer arithmetic, floating-point representation, datapath, control logic, pipelining, memory hierarchy, virtual memory. Prerequisite: CMPUT 175 or 274. Corequisite: one of CMPUT 201 or 275. Credit may be obtained in only one of CMPUT 229, E E 380 or ECE 212.
  
  • CMPUT 250 - Computers and Games


    ★ 3 (fi 6) (either term, 3-0-3) An interdisciplinary course for students in Science, Arts, and other faculties. The focus is on games as interactive entertainment, their role in society, and how they are made. Teams composed of students with diverse backgrounds (e.g. English, Art and Design, and Computing Science) follow the entire creative process: from concept, through pitch, to delivery, of a short narrative-based game using a commercial game engine. To achieve the required mix of backgrounds and experience, students must apply to be considered for this course. See the Department web site for the online form. Prerequisite: Second-year standing.
  
  • CMPUT 272 - Formal Systems and Logic in Computing Science


    ★ 3 (fi 6) (either term, 3-3s-0) An introduction to the tools of set theory, logic, and induction, and their use in the practice of reasoning about algorithms and programs. Basic set theory; the notion of a function; counting; propositional and predicate logic and their proof systems; inductive definitions and proofs by induction; program specification and correctness. Prerequisites: Any 100-level CMPUT course, CMPUT 274 or SCI 100.
  
  • CMPUT 274 - Introduction to Tangible Computing I


    ★ 3 (fi 6) (either term, 0-6L-0) This is part 1 of a 2 sequence intensive problem-based introduction to Computing Science. In part 1, the key concepts of procedural programming, basic algorithm design and analysis (lists, queues, trees, sorting, searching), and reactive interfacing with the world are learned by solving a series of problems using the Arduino platform and C/C++. The use of a resource-limited processor with no operating system opens up the inner workings of computing. Development is done using the Linux operating system with the exposed compiler tool chain. Prerequisites: No specific programming experience or discrete-math background is assumed. Math 30 or 31. Note: this course is taught in studio-style, where lectures and labs are blended into 3 hour sessions, twice a week. Enrollment is limited by the capacity of the combined lecture/lab facilities. Credit cannot be obtained for CMPUT 274 if one already has credit for any of CMPUT 174, 175, or 201, except with permission of the Department.
  
  • CMPUT 275 - Introduction to Tangible Computing II


    ★ 3 (fi 6) (either term, 0-6L-0) This is part 2 of a 2 sequence intensive introduction to Computing Science. Part 2 expands to add object-oriented programming, a higher level language (Python), and more complex algorithms and data structures such as shortest paths in graphs; caching, memoization, and dynamic programming; client-server style computing; recursion; and limited distributed of computation tasks between the Arduino platform and the traditional desktop in order to explore design tradeoffs. Prerequisite: CMPUT 274. Note: this course is taught in studio-style, where lectures and labs are blended into 3 hour sessions, twice a week. Enrollment is limited by the capacity of the combined lecture/lab facilities. Credit cannot be obtained for CMPUT 275 if one already has credit for any of CMPUT 174, 175, or 201, except with permission of the Department.
  
  • CMPUT 291 - Introduction to File and Database Management


    ★ 3 (fi 6) (either term, 3-0-1.5) Basic concepts in computer data organization and information processing; entity-relationship model; relational model; SQL and other relational query languages; storage architecture; physical organization of data; access methods for relational data. Programming experience (e.g. Java or Python) is required for the course project. Prerequisite: one of CMPUT 175 or 275.
  
  • CMPUT 296 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
  
  • CMPUT 297 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-3) See Note (3) above.
  
  • CMPUT 298 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-3) See Note (3) above.
  
  • CMPUT 299 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
  
  • CMPUT 300 - Computers and Society


    ★ 3 (fi 6) (either term, 3-1s-0) Social, ethical, professional, economic, and legal issues in the development and deployment of computer technology in society. Prerequisites: CMPUT course or SCI 100, and any 200-level course.
  
  • CMPUT 301 - Introduction to Software Engineering


    ★ 3 (fi 6) (either term, 3-0-3) Object-oriented design and analysis, with interactive applications as the primary example. Topics include: software process; revision control; Unified Modeling Language (UML); requirements; software architecture, design patterns, frameworks, design guidelines; unit testing; refactoring; software tools. Prerequisite: CMPUT 201 or 275.
  
  • CMPUT 302 - Introduction to Human Computer Interaction


    ★ 3 (fi 6) (either term, 3-0-3) A complementary course to introductory software engineering focused on a user-centered approach to software design. The main themes are how humans interact with physical and information environments, and how to design software with human’s information needs and their cognitive capacities in mind. Topics include the user-centered design cycle, and evaluation methods for discovering usability problems in interface design. Prerequisite: CMPUT 301.
  
  • CMPUT 304 - Algorithms II


    ★ 3 (fi 6) (either term, 3-1s-0) The second course of a two-course sequence on algorithm design. Emphasis on principles of algorithm design. Categories of algorithms such as divide-and-conquer, greedy algorithms, dynamic programming; analysis of algorithms; limits of algorithm design; NP-completeness; heuristic algorithms. Prerequisites: CMPUT 204; one of STAT 141, 151, 235 or 265 or SCI 151; one of MATH 225, 227, 228 or consent of the instructor.
  
  • CMPUT 307 - 3D Modeling and Animation


    ★ 3 (fi 6) (either term, 3-0-3) An introductory course on the theory and applications of computer based 3D modeling and animation. The course will cover a selection of topics from overview of tools supporting modeling and animation, automatically generating 3D models, and animation of skeleton based models through algorithms and software. Applications of 3D modeling and animation in games, virtual/augmented environments, movies, and emerging video transmission algorithms will be discussed. Prerequisites: Some background in image processing or graphics, e.g., CMPUT 206 or CMPUT 311; knowledge of first or preferably second-year level MATH/STAT, e.g., STAT 141/151/252 or 266, and MATH 214 or 225; experience in programming, e.g., CMPUT 174 or 100. Consent of the instructor needed if some background courses are lacking.
  
  • CMPUT 308 - Video Processing and Applications


    ★ 3 (fi 6) (either term, 3-0-3) An introductory course in video data processing, with implementations in programming languages, like Python, C and MATLAB, using libraries like OpenCV. Topics in this course may include video capture, video compression, tracking, video content understanding, real-time video conferencing and surveillance. Time permitting, advanced topics like video mining, 3D modeling, and motion capture-based video coding, video-based 3D scene understanding could be discussed. Prerequisites: CMPUT 201, 206, MATH 125 or 127, STAT 151 or 265, or consent of the instructor.
  
  • CMPUT 312 - Introduction to Robotics and Mechatronics


    ★ 3 (fi 6) (either term, 3-0-3) Algorithms and software paradigms for robot programming; mathematical modeling of robot arms and rovers including kinematics, and an introduction to dynamics and control; sensors, motors and their modeling; basics of image processing and machine vision; vision-guided motion control. Prerequisites: CMPUT 275, CMPUT 340 or CMPUT 418 (CMPUT 340 may be taken concurrently). Students having CMPUT 174, 175, 201, 204 may seek individual approval by instructor.
  
  • CMPUT 313 - Computer Networks


    ★ 3 (fi 6) (either term, 3-0-3) Introduction to computer communication networks; protocols for error and flow control; wired and wireless medium access protocols; routing and congestion control; internet architecture and protocols; multimedia transmission; recent advances in networking. Prerequisites: CMPUT 201 and 204 or 275; one of CMPUT 229, E E 380 or ECE 212 and STAT 252 or 266.
  
  • CMPUT 325 - Non-Procedural Programming Languages


    ★ 3 (fi 6) (either term, 3-0-3) A study of the theory, run-time structure, and implementation of selected non-procedural programming languages. Languages will be selected from the domains of functional, and logic-based languages. Prerequisites: CMPUT 201 and 204 or 275; one of CMPUT 229, E E 380 or ECE 212, and MATH 125.
  
  • CMPUT 328 - Visual Recognition


    ★ 3 (fi 6) (either term, 3-0-3) Introduction to visual recognition to recognize objects and classify scenes or images automatically by a computer. Supervised and unsupervised machine learning principles and deep learning techniques will be utilized for visual recognition. Successful commercial systems based on visual recognition range from entertainment to serious scientific research: face detection and recognition on personal devices, social media. Prerequisites: CMPUT 115 or 175; one of MATH 100, 113, 114, 117, 134, 144, 154; MATH 125; STAT 141, 151 or 235.
  
  • CMPUT 331 - Computational Cryptography


    ★ 3 (fi 6) (either term, 3-0-0) Cryptography is the science of secure communications. This course is an introduction to computational methods for encrypting and deciphering messages, with an emphasis on computer implementation. Prerequisites: CMPUT 201 and CMPUT 272.
  
  • CMPUT 333 - Security in a Networked World


    ★ 3 (fi 6) (either term, 3-0-3) Authentication protocols, passwords, shared and public key cryptography, network protocol and network services security, firewalls, malicious code, vulnerability identification, intrusion detection, wireless security. Prerequisite: CMPUT 201 or 275.
  
  • CMPUT 340 - Introduction to Numerical Methods


    ★ 3 (fi 6) (either term, 3-1s-3) Computer arithmetic and errors. The study of computational methods for solving problems in linear algebra, non-linear equations, optimization, interpolation and approximation, and integration. This course will provide a basic foundation in numerical methods that supports further study in machine learning; computer graphics, vision and multimedia; robotics; and other topics in Science and Engineering. Prerequisites: CMPUT 204 or 275; MATH 125, 214; one of STAT 141, 151, 235 or 265 or SCI 151.
  
  • CMPUT 350 - Advanced Games Programming


    ★ 3 (fi 6) (either term, 3-0-3) This course focuses on state-of-the-art AI and graphics programming for video games. Part 1 introduces C++, the language of choice for video game engines, emphasizing efficiency, safety, the Standard Template Library, and OpenGL. Part 2 on real time strategy deals with efficient pathfinding algorithms, planning, and scripting AI systems. Student projects give hands-on experience directly applicable to the video games industry. Prerequisites: CMPUT 201 or 275, and 204. May not be offered every year.
  
  • CMPUT 355 - Games, Puzzles, Algorithms


    ★ 3 (fi 6) (either term, 3-0-0) An introduction to algorithms and theory behind computer programs that solve puzzles (mazes, peg solitaire, etc.) or play games (chess, Go, Hex, etc.). This course is intended for a general audience. Prerequisite: any 200-level CMPUT.
  
  • CMPUT 361 - Introduction to Information Retrieval


    ★ 3 (fi 6) (either term, 3-0-0) Most of the knowledge we acquire, use, and share is expressed in natural language, and preserved as primarily textual documents. This course introduces the fundamental algorithms and data structures for organizing and searching through large collections of documents, and the techniques for evaluating the quality of search results. The course also covers practical machine-learning algorithms for text and foundational technologies used by Web search engines. Prerequisites: CMPUT 201 and CMPUT 204 or 275; MATH 125 or equivalent is strongly recommended.
  
  • CMPUT 366 - Intelligent Systems


    ★ 3 (fi 6) (either term, 3-0-3) Introduction to artificial intelligence focusing on techniques for building intelligent software systems and agents. Topics include search and problem-solving techniques, knowledge representation and reasoning, reasoning and acting under uncertainty, and machine learning (including neural networks). Recent applications such as planning and scheduling, diagnosis, decision support systems, and data mining. Prerequisites: CMPUT 204 or 275; one of STAT 141, 151, 235 or 265 or SCI 151.
  
  • CMPUT 379 - Operating System Concepts


    ★ 3 (fi 6) (either term, 3-0-3) Processes: process state transitions; operations on processes; interrupt processing; multiprocessor considerations; resource allocation; synchronization; critical sections and events; semaphores; deadlock: avoidance, detection, and recovery; memory management; virtual memory; paging and segmentation; page replacement strategies; working sets; demand paging; process scheduling; scheduling algorithms; file system functions; file organization; space allocation; elements of operating systems security; virtual machines. Prerequisites: CMPUT 201 and 204 or 275; one of CMPUT 229, E E 380 or ECE 212.
  
  • CMPUT 382 - Introduction to GPU Programming


    ★ 3 (fi 6) (either term, 3-0-3) Graphics processing units (GPU) can be programmed like a coprocessor to solve non-graphics problems, including voice recognition, computational physics, convolutional neural networks, and machine learning. The many processing cores of a GPU support a high-degree of parallelism. Course topics include hardware architecture, algorithmic design, programming languages (e.g., CUDA, OpenCL), and principles of programming for GPUs for high performance. Prerequisites: CMPUT 201 or 275, and CMPUT 229.
  
  • CMPUT 391 - Database Management Systems


    ★ 3 (fi 6) (either term, 3-0-3) Database design and normalization theory, transaction management, query processing and optimization; support for special data types such as multimedia, spatial data, and XML documents; support for complex applications and data analysis such as data mining, data warehousing, and information retrieval. Prerequisites: CMPUT 201 and CMPUT 204 or 275, and CMPUT 291.
  
  • CMPUT 396 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
  
  • CMPUT 397 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
  
  • CMPUT 398 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
  
  • CMPUT 399 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
  
  • CMPUT 401 - Software Process and Product Management


    ★ 3 (fi 6) (either term, 3-1s-3) All phases of software development are reviewed from a process perspective. Best practices in software project and product development and management are introduced. Architectural and technological impacts on management. Group projects require specification and initial design or redesign of a software system. Prerequisite: CMPUT 301.
  
  • CMPUT 402 - Software Quality


    ★ 3 (fi 6) (either term, 3-0-3) Software quality issues are covered. Various types of software testing, ranging from unit testing to integration testing are discussed. Processes to ensure quality, such as reviews and continuous integration, are introduced. State-of-the-art software quality tools that analyze different artifacts within the software lifecycle are described. Prerequisite: CMPUT 301.
  
  • CMPUT 403 - Practical Algorithmics


    ★ 3 (fi 6) (either term, 3-0-0) The essence of computing science is in solving problems by computation. It may take anywhere from several minutes to several years from the initial posing of a problem specification to finally getting a working program. This course is interested in problems that can be solved within at most several hours by well prepared people. Prerequisites: Restricted to students participating in the programming contest. Any 300-level course, and consent of the instructor.
  
  • CMPUT 404 - Web Applications and Architecture


    ★ 3 (fi 6) (either term, 3-0-3) Introduction to modern web architecture, from user-facing applications to machine-facing web-services. Topics include: the evolution of the Internet, relevant technologies and protocols, the architecture of modern web-based information systems, web data exchange and serialization, and service-oriented middleware. Prerequisites: CMPUT 301 and 391, or consent of the instructor.
  
  • CMPUT 411 - Introduction to Computer Graphics


    ★ 3 (fi 6) (either term, 3-0-3) 2D and 3D transformation; 3D modeling and viewing; illumination models and shading methods; texture mapping; ray tracing. Prerequisites: CMPUT 204 or 275, 301; one of CMPUT 340, 418 or equivalent knowledge, and MATH 214.
  
  • CMPUT 412 - Experimental Mobile Robotics


    ★ 3 (fi 6) (either term, 3-0-3) A project-based course dealing with the design and implementation of mobile robots to accomplish specific tasks. Students work in groups and are introduced to concepts in sensor technologies, sensor data processing, motion control based on feedback and real-time programming. Prerequisites: CMPUT 201 and 204, or 275; one of CMPUT 340, 418 or equivalent knowledge; MATH 214 and STAT 252 or 266.
  
  • CMPUT 414 - Introduction to Multimedia Technology


    ★ 3 (fi 6) (either term, 3-0-3) Introduction to basic principles and algorithms used in multimedia systems. Students obtain hands-on experience in issues relating to multimedia data representation, compression, processing, and animation. Topics will be selected from image and video coding and transmission, animation, human perceptual issues associated to multimedia technologies. Prerequisites: CMPUT 206 or 306; CMPUT 307 or 411; knowledge of second-year level MATH/STAT; Java, C, or equivalent programming or consent of instructor.
  
  • CMPUT 415 - Compiler Design


    ★ 3 (fi 6) (either term, 3-0-3) Compilers, interpreters, lexical analysis, syntax analysis, syntax directed translation, code generation, code optimization. Prerequisites: one of CMPUT 229, E E 380 or ECE 212, and a 300-level Computing Science course or consent of the instructor.
  
  • CMPUT 416 - Foundations of Program Analysis


    ★ 3 (fi 6) (either term, 3-0-0) Introduction to the main concepts of program analysis such as intermediate representations, inter-procedural and intra-procedural analysis techniques, call graphs, pointer analysis, and analysis frameworks. The course will also include relevant research papers that introduce both classical and state-of-the-art research in the field. The course will give an overview of the program analyses that work and those that do not work in practice and how to design program analyses for modern software systems. Prerequisites: CMPUT 201 or 275, and CMPUT 272.
  
  • CMPUT 428 - Computer Vision


    ★ 3 (fi 6) (either term, 3-0-3) Introduction to the geometry and photometry of the 3D to 2D image formation process for the purpose of computing scene properties from camera images. Computing and analyzing motion in image sequences. Recognition of objects (what) and spatial relationships (where) from images and tracking of these in video sequences. Prerequisites: CMPUT 201 or 275; one of CMPUT 340, 418 or equivalent knowledge; one of MATH 101, 115, 118, 136, 146 or 156, and one of MATH 102, 125, or 127.
  
  • CMPUT 429 - Computer Systems and Architecture


    ★ 3 (fi 6) (either term, 3-0-3) A discussion of computer system design concepts with stress on modern ideas that have shaped the high-performance architecture of contemporary systems. Instruction sets, pipelining, instruction-level parallelism, register reuse, branch prediction, CPU control, and related concepts. Memory technologies, caches, I/O, high-performance backplanes and buses. Prerequisites: CMPUT 201 or 275; one of CMPUT 229, E E 380 or ECE 212. Credit may be obtained in only one of CMPUT 429 or CMPE 382.
  
  • CMPUT 455 - Search, Knowledge and Simulation


    ★ 3 (fi 6) (either term, 3-0-0) When making decisions in games, computers rely on three main ideas: search, knowledge and simulations. Knowledge can be created by machine learning techniques and encoded in deep neural networks. Search and simulations help to understand the short and long-term consequences of possible actions. This course leads from basic concepts to state-of-the-art decision-making algorithms. Prerequisite: any 300-level CMPUT.
  
  • CMPUT 463 - Probabilistic Graphical Models


    ★ 3 (fi 6) (either term, 3-0-3) Probabilistic graphical models (PGMs; including Bayesian Belief Nets, Markov Random Fields, etc.) now contribute significantly to many areas, including expert systems, computer perception (vision and speech), natural language interpretation, automated decision making, and robotics. This course provides an introduction to this field, describing semantics, inference and learning, as well as practical applications of these systems. Programming assignments will include hands-on experiments with various reasoning systems. Prerequisites: one of CMPUT 340 or 418; one of STAT 141, 151, 235 or 265 or SCI 151; or consent of the instructor.
  
  • CMPUT 466 - Machine Learning


    ★ 3 (fi 6) (either term, 3-0-3) Learning is essential for many real-world tasks, including recognition, diagnosis, forecasting and data-mining. This course covers a variety of learning scenarios (supervised, unsupervised and partially supervised), as well as foundational methods for regression, classification, dimensionality reduction and modeling. Techniques such as kernels, optimization and probabilistic graphical models will typically be introduced. It will also provide the formal foundations for understanding when learning is possible and practical. Prerequisites: one of CMPUT 340 or 418; one of STAT 141, 151, 235 or 265 or SCI 151; or consent of the instructor.
  
  • CMPUT 474 - Formal Languages, Automata, and Computability


    ★ 3 (fi 6) (either term, 3-0-0) Formal grammars; relationship between grammars and automata; regular expressions; finite state machines; pushdown automata; Turing machines; computability; the halting problem; time and space complexity. Prerequisites: CMPUT 204, one of CMPUT 229, E E 380 or ECE 212 and one of MATH 225, 227, or 228 or consent of the instructor.
  
  • CMPUT 481 - Parallel and Distributed Systems


    ★ 3 (fi 6) (either term, 3-0-0) This course provides an undergraduate-level introduction to parallel programming, parallel and distributed systems, and high-performance computing in science and engineering. Both shared-memory parallel computers and distributed-memory multi computers (e.g., clusters) will be studied. Aspects of the practice of, and (some) research issues in, parallelism will be covered. There will be an emphasis on thread programming, data-parallel programming, and performance evaluation. Prerequisites: CMPUT 201, CMPUT 379, or consent of the instructor. May not be offered every year.
  
  • CMPUT 495 - Honors Seminar


    ★ 0 (fi 1) (either term, 0-1s-0) This weekly seminar brings students, researchers, and practitioners together to examine a variety of topics, both foundational and leading edge. Content varies over successive offerings of the course. Required of all Honors Computing Science students during each Fall/Winter semester of their degree program. Prerequisite: Restricted to Honors Computing Science students, or consent of the instructor.
  
  • CMPUT 496 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
  
  • CMPUT 497 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
  
  • CMPUT 498 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-3) See Note (3) above.
  
  • CMPUT 499 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable) This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.

Computing Science: Graduate

  
  • CMPUT 500 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 501 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 503 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 504 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 511 - Topics In Computer Graphics


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 530 - Topics in Computer Architecture


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 551 - Topics in Artificial Intelligence


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 563 - Topics in Probabilistic Graphical Models


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 566 - Topics in Machine Learning


    ★ 3 (fi 6) (either term, 3-0-3)
  
  • CMPUT 600 - Topics in Computing Science


    ★ 3 (fi 6) (variable, variable)
  
  • CMPUT 603 - Teaching and Research Methods


    ★ 3 (fi 6) (first term, 2-1s-0) This course provides information and resources on teaching and research methods in computing science, and also gives an overview of the research done by faculty in the department. Ethics and professional development are included in this course. Required for all graduate students.
  
  • CMPUT 604 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 605 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 606 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 607 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 608 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 609 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 610 - Topics in Computer Graphics


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 615 - Topics in Image Processing and Vision


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 616 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 617 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 620 - Topics in Programming Languages


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 631 - Robotics


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 640 - Topics in Computer Networks


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 644 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 650 - Topics in Artificial Intelligence


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 651 - Topics in Artificial Intelligence


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 652 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 653 - Topics in Artificial Intelligence


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 654 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 655 - Topics in Artificial Intelligence


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 656 - Topics in Artificial Intelligence


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 657 - Heuristic Search


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 658 - Topics in Artificial Intelligence


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 659 - Topics in Artificial Intelligence


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 660 - Topics in Software Engineering


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 663 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 664 - Topics in Software Engineering


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 670 - Topics in the Theory of Computation


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 675 - Topics in Computing Science


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 680 - Topics in Systems


    ★ 3 (fi 6) (either term, 3-0-0)
  
  • CMPUT 681 - Topics in Parallel and Distributed Systems


    ★ 3 (fi 6) (either term, 3-0-0)
 

Page: 1 <- Back 1016 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26Forward 10 -> 76