Quick Course Search

Computing Science

In order to see more information about any course, simply click on it!

This view does not contain classes that have not been offered in the past 2 years. If you want to view those classes click here:
All Courses

CMPUT101 Introduction to Computing Course Page

Description: An introduction to fundamental concepts in computing science, including state, abstraction, composition, and representation. Introduction to algorithms, logic, circuits, machine architecture and other topics in elementary computing science. This course cannot be taken for credit if credit has been obtained in CMPUT 114, 174 or SCI 100. See Note (1) above.

CMPUT174 Introduction to the Foundations of Computation I Course Page

Description: CMPUT 174 and 175 use a problem-driven approach to introduce the fundamental ideas of Computing Science. Emphasis is on the underlying process behind the solution, independent of programming language or style. Basic notions of state, control flow, data structures, recursion, modularization, and testing are introduced through solving simple problems in a variety of domains such as text analysis, map navigation, game search, simulation, and cryptography. Students learn to program by reading and modifying existing programs as well as writing new ones. No prior programming experience is necessary. Prerequisite: Math 30 or 30-1. See Note (1) above.

CMPUT175 Introduction to the Foundations of Computation II Course Page

Description: A continuation of CMPUT 174, revisiting topics of greater depth and complexity. More sophisticated notions such as objects, functional programming, time and memory consumption, and user interface building are explored. Upon completion of this two course sequence, students from any discipline should be able to build programs to solve basic problems in their area, and will be prepared to take more advanced Computing Science courses. Prerequisite: CMPUT 174 or SCI 100.

CMPUT201 Practical Programming Methodology Course Page

Description: Introduction to the principles, methods, tools, and practices of the professional programmer. The lectures focus on the fundamental principles of software engineering based on abstract data types and their implementations. The laboratories offer an intensive apprenticeship to the aspiring software developer. Students use C and C++ and software development tools of the UNIX environment. Prerequisite: CMPUT 115 or 175.

CMPUT204 Algorithms I Course Page

Description: 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: one of CMPUT 115 or 175 and CMPUT 272; one of MATH 113, 114, 117 or 144 or SCI 100.

CMPUT206 Introduction to Digital Image Processing Course Page

Description: 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, an 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 Mathlab. 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 Instructor or SCI 100. Open to students in the Faculty of Arts, Engineering and Sciences, others require permission of the instructor.

CMPUT210 Codes, Codemakers, Codebreakers: An Introduction to Cryptography Course Page

Description: 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. Prerequisites: Any 100 level course.

CMPUT229 Computer Organization and Architecture I Course Page

Description: General introduction to number representation, architecture and organization concepts of von Neumann machines, assembly level programming, exception handling, peripheral programming, floating-point computations and memory management. Prerequisite: CMPUT 115, 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.

CMPUT250 Computers and Games Course Page

Description: 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 for admission to this course. Prerequisites: Second-year standing. See the Computing Science web site for more details at www.cs.ualberta.ca/courses

CMPUT272 Formal Systems and Logic in Computing Science Course Page

Description: 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. Prerequisite: Any 100-level CMPUT course or SCI 100.

CMPUT274 Introduction to Tangible Computing I Course Page

Description: 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, 201 or 204, except with permission of the Department.

CMPUT275 Introduction to Tangible Computing II Course Page

Description: 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, 201 or 204, except with permission of the Department.

CMPUT291 Introduction to File and Database Management Course Page

Description: 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 115, 175 or 275.

CMPUT296 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT299 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT300 Computers and Society Course Page

Description: 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.

CMPUT301 Introduction to Software Engineering Course Page

Description: 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.

CMPUT302 Introduction to Human Computer Interaction Course Page

Description: 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.

CMPUT304 Algorithms II Course Page

Description: 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 or 275; one of STAT 141, 151, 235 or 265 or SCI 151; one of MATH 225, 227, 228 or consent of Instructor.

CMPUT307 3D Modeling and Animation Course Page

Description: 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. Prerequisite: 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. Permission of instructor needed if some background courses are lacking.

CMPUT313 Computer Networks Course Page

Description: 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.

CMPUT325 Non-Procedural Programming Languages Course Page

Description: 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.

CMPUT328 Visual Recognition Course Page

Description: 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, MATH 114, 125; STAT 141, 151 or 235.

CMPUT333 Security in a Networked World Course Page

Description: 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.

CMPUT340 Introduction to Numerical Methods Course Page

Description: 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.

CMPUT350 Advanced Games Programming Course Page

Description: 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. Prerequisite: CMPUT 201 or 275. May not be offered every year.

CMPUT366 Intelligent Systems Course Page

Description: 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, machine learning and 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.

CMPUT379 Operating System Concepts Course Page

Description: Processes: process state transitions; operations on processes; interrupt processing; parallel processing; multiprocessor considerations; resource allocation; critical sections and events; semaphores; deadlock: avoidance, detection, and recovery; memory management; virtual memory; paging and segmentation; page replacement strategies; working sets; demand paging; scheduling: levels, objectives, and criteria; scheduling algorithms; file system functions; file organization; space allocation; elements of operating systems security. Prerequisites: CMPUT 201 and 204 or 275; one of CMPUT 229, E E 380 or ECE 212.

CMPUT391 Database Management Systems Course Page

Description: 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.

CMPUT396 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT397 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT398 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT399 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT400 Science Internship Practicum Course Page

Description: Required by all students who have just completed the on-site portion of the Science Internship Program. Must be completed during the first academic term following return to full-time studies. Note: A Grade of F to A+ will be determined by the student's job performance as evaluated by the employer, by the student's performance in the completion of an internship practicum report, and by the student's ability to learn from the experiences of the internship as demonstrated in an oral presentation. Prerequisites: WKEXP 955 and 956.

CMPUT401 Software Process and Product Management Course Page

Description: 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. Prerequisites: CMPUT 301.

CMPUT402 Software Quality Course Page

Description: Software quality issues, metrics, verification, validation, and testing. Students working in project groups are required to complete the implementation of a system or significant subsystem and undertake unit, integration and acceptance testing. Industry standard assessment methods such as CMM or SPICE are introduced. Prerequisite: CMPUT 401.

CMPUT403 Practical Algorithmics Course Page

Description: 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.

CMPUT404 Web Applications and Architecture Course Page

Description: 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 Instructor.

CMPUT411 Introduction to Computer Graphics Course Page

Description: 2-D and 3-D transformation; 3-D 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. Credit may be obtained in only one of CMPUT 311 and 411.

CMPUT412 Experimental Mobile Robotics Course Page

Description: 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.

CMPUT414 Introduction to Multimedia Technology Course Page

Description: Intro 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. Prerequisite: CMPUT 206 or 306 (Image Processing); CMPUT 307 or 411 (Graphics); knowledge of second year level MATH/STAT; JAVA, C, or equivalent programming or consent of instructor.

CMPUT415 Compiler Design Course Page

Description: 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 Instructor.

CMPUT428 Computer Vision Course Page

Description: 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 or 118, and one of MATH 102, 125 or 127.

CMPUT429 Computer Systems and Architecture Course Page

Description: 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. Prerequisite: 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.

CMPUT466 Machine Learning Course Page

Description: 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. Prerequisite: one of CMPUT 340, 418 or equivalent knowledge; one of STAT 141, 151, 235 or 265 or SCI 151; or consent of Instructor.

CMPUT474 Formal Languages, Automata, and Computability Course Page

Description: Formal grammars; relationship between grammars and automata; regular expressions; finite state machines; pushdown automata; Turing machines; computability; the halting problem; time and space complexity. Prerequisite: CMPUT 204 or 275, one of CMPUT 229, E E 380 or ECE 212 and one of MATH 225, 227, or 228 or consent of the instructor.

CMPUT481 Parallel and Distributed Systems Course Page

Description: 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 multicomputers (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. Prerequisite: CMPUT 201, CMPUT 379, or permission of the instructor. May not be offered every year.

CMPUT495 Honors Seminar Course Page

Description: 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.

CMPUT496 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT497 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT498 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT499 Topics in Computing Science Course Page

Description: See Note (3) above.

CMPUT501 Topics in Computing Science Course Page
No description available for this course.
CMPUT511 Topics In Computer Graphics Course Page
No description available for this course.
CMPUT530 Topics in Computer Architecture Course Page
No description available for this course.
CMPUT551 Topics in Artificial Intelligence Course Page
No description available for this course.
CMPUT603 Teaching and Research Methods Course Page

Description: A description of computing science research, with emphasis on research methodology. Includes techniques and conventions that are employed in various sub-areas of computing science, both for doing research and presenting results. Strategies and information for being an effective teaching assistant are also presented. Required for all graduate students.

CMPUT604 Topics in Computing Science Course Page
No description available for this course.
CMPUT605 Topics in Computing Science Course Page
No description available for this course.
CMPUT606 Topics in Computing Science Course Page
No description available for this course.
CMPUT607 Topics in Computing Science Course Page
No description available for this course.
CMPUT608 Topics in Computing Science Course Page
No description available for this course.
CMPUT609 Topics in Computing Science Course Page
No description available for this course.
CMPUT610 Topics in Computer Graphics Course Page
No description available for this course.
CMPUT615 Topics in Image Processing and Vision Course Page
No description available for this course.
CMPUT616 Topics in Computing Science Course Page
No description available for this course.
CMPUT617 Topics in Computing Science Course Page
No description available for this course.
CMPUT620 Topics in Programming Languages Course Page
No description available for this course.
CMPUT631 Robotics Course Page
No description available for this course.
CMPUT640 Topics in Computer Networks Course Page
No description available for this course.
CMPUT641 Advanced Computer Networks Course Page
No description available for this course.
CMPUT644 Topics in Computing Science Course Page
No description available for this course.
CMPUT650 Topics in Artificial Intelligence Course Page
No description available for this course.
CMPUT651 Topics in Artificial Intelligence Course Page
No description available for this course.
CMPUT652 Topics in Computing Science Course Page
No description available for this course.
CMPUT654 Topics in Computing Science Course Page
No description available for this course.
CMPUT655 Topics in Artificial Intelligence Course Page
No description available for this course.
CMPUT656 Topics in Artificial Intelligence Course Page
No description available for this course.
CMPUT657 Heuristic Search Course Page
No description available for this course.
CMPUT659 Topics in Artificial Intelligence Course Page
No description available for this course.
CMPUT660 Topics in Software Engineering Course Page
No description available for this course.
CMPUT663 Topics in Computing Science Course Page
No description available for this course.
CMPUT664 Topics in Software Engineering Course Page
No description available for this course.
CMPUT670 Topics in the Theory of Computation Course Page
No description available for this course.
CMPUT672 Algorithmic Graph Theory Course Page
No description available for this course.
CMPUT675 Topics in Computing Science Course Page
No description available for this course.
CMPUT680 Topics in Systems Course Page
No description available for this course.
CMPUT681 Topics in Parallel and Distributed Systems Course Page
No description available for this course.
CMPUT690 Topics in Databases Course Page
No description available for this course.
CMPUT691 Topics in Databases Course Page
No description available for this course.
CMPUT692 Modern Database Management Systems Course Page
No description available for this course.
CMPUT694 Topics in Databases Course Page
No description available for this course.
CMPUT696 Topics in Data Management Course Page
No description available for this course.
CMPUT697 Topics in Computing Science Course Page
No description available for this course.
CMPUT701 Essay in Computing Science I Course Page

Description: A major essay on an agreed topic.