• No results found

231.87 Computing Science, CMPUT

In document Courses (Page 104-107)

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, 197, 198, 199, 296, 297, 298, 299, 396, 397, 398, 399, 496, 497, 498, 499 may have different prerequisites. Please check the specific course descriptions as posted by the Department of Computing Science.

Undergraduate Courses

O CMPUT 101 Introduction to Computing

Œ3 (fi 6) (either term, 3-0-3). 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.

O CMPUT 174 Introduction to the Foundations of Computation I Œ3 (fi 6) (either term, 3-0-3). 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.

O CMPUT 175 Introduction to the Foundations of Computation II Œ3 (fi 6) (either term, 3-0-3). 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.

CMPUT 201 Practical Programming Methodology

Œ3 (fi 6) (either term, 3-0-3). 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.

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 115 or 175, CMPUT 272;

MATH 113, 114, or 117 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, 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.

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

CMPUT 229 Computer Organization and Architecture I

Œ3 (fi 6) (either term, 3-0-3). 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 or 175.

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

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

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.

CMPUT 291 Introduction to File and Database Management

Œ3 (fi 6) (either term, 3-0-3). 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.

CMPUT 296 Topics in Computing Science Œ3 (fi 6) (either term, 3-0-3). See Note (3) above.

CMPUT 297 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) (either term, 3-0-3). 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.

Course Listings C

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-0-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 or 275; one of STAT 141, 151, 235 or 265;

one of MATH 225, 227, 228 or consent of Instructor.

CMPUT 306 Image Processing: Algorithms and Applications

Œ3 (fi 6) (either term, 3-0-3). Introduction, history, and applications; scanning and quantization; visual perception; output devices; pattern recognition; feature extraction, decision theory, classification rules; data representation and formats;

image enhancement and restoration; edge detection, segmentation and texture;

correlation and registration. Prerequisites: CMPUT 201 or 275; one of CMPUT 340, CMPUT 418 or equivalent knowledge; MATH 214 and STAT 252 or 266. Credit may be obtained in only one of CMPUT 306 or EE BE 540.

CMPUT 307 3D Graphics and Animation with 3DS Max

Œ3 (fi 6) (either term, 3-0-3). Interdisciplinary introduction to Graphics and Animation through the use of the 3D Studio Max package. Graphics and Animation have industrial applications in advertising, movies, games and TV. Interdisciplinary teams will work together on practical applications of graphics and animations.

For example, students can work on a project to enhance sculpting skills using a database of 3D models. Prerequisite: Any second or higher-level undergraduate student, with some math, computer programming and image processing background, or permission of the 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 329 Computer Organization and Architecture II

Œ3 (fi 6) (either term, 3-0-3). CMOS technology, digital circuits, combinational logic, sequential logic, memory technologies, programmable logic devices, control logic design, register transfer logic, CPU design, hardware description languages.

Prerequisite: one of CMPUT 229, E E 380 or ECE 212. Credit may be obtained in only one of CMPUT 329, E E 280 or ECE 210.

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.

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

CMPUT 201 or 275. May not be offered every year.

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, 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.

CMPUT 379 Operating System Concepts

Œ3 (fi 6) (either term, 3-0-3). 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.

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 204 or 275, and CMPUT 291.

CMPUT 396 Topics in Computing Science Œ3 (fi 6) (either term, 3-0-3). See Note (3) above.

CMPUT 398 Topics in Computing Science Œ3 (fi 6) (either term, 3-0-3). See Note (3) above.

CMPUT 399 Topics in Computing Science Œ3 (fi 6) (either term, 3-0-3). See Note (3) above.

CMPUT 400 Industrial Internship Practicum

Œ3 (fi 6) (first term, 0-3s-0). Required by all students who have just completed a Computing Science Industrial 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. Prerequisite: WKEXP 956, 957 or 958.

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

CMPUT 402 Software Quality

Œ3 (fi 6) (either term, 3-0-3). 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.

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 410 Web-Based Information Systems

Œ3 (fi 6) (either term, 3-0-3). Overview of Web technologies and applications. This course is project based and addresses issues such as web-based applications and databases design and implementation, XML data exchange and modeling, application component integration over the Web, security mechanisms, and Web Mining for intelligent web-based applications. Prerequisite: CMPUT 301 and 391 or consent of Instructor.

CMPUT 411 Introduction to Computer Graphics

Œ3 (fi 6) (either term, 3-0-3). 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.

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). Intro to basic principles and algorithms used in

Course Listings C

multimedia systems. Students obtain hands-on experience in issues relating to multimedia data representation, compression, processing, and retrieval. Topics include sound transmission, music streaming, 2-D and 3-D graphics, image and video transmission, networking, human perceptual issues associated to multimedia technologies. Prerequisite: CMPUT 302 or 306; one of CMPUT 340, 418 or equivalent knowledge; 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 Instructor.

CMPUT 418 Numerical Methods 1: Numerical Linear Algebra and Non-Linear Equations

Œ3 (fi 6) (either term, 3-1s-3). Basic numerical concepts: representations, accuracy and stability. Linear equations: Existence and uniqueness, problem transformations.

Factorizations: LU, QR, SVD and Eigen values, vectors. Various applications including data-fitting using polynomials and other bases. Non-linear equations and optimization: Existence, uniqueness, sensitivity, conditioning, convergence rates;

methods: 1-D and n-D search methods including Bisection, Newton, Gauss-Newton, Broyden, Levenberg-Marquart. Trust region methods and homotopy embeddings.

Short introduction to numerical differential and integral calculus. Prerequisite: one of MATH 101, 115 or 118 and one of MATH 102, 125 or 127.

CMPUT 419 Numerical Methods 2: Computational Differential Equations Œ3 (fi 6) (either term, 3-1s-3). Survey of classical methods for numerical quadrature, differentiation and integration of differential equations. Existence, uniqueness and conditioning of solutions. Discrete function systems: Global polynomials, trigonometric bases, bases with local support/splines. L_2 projection and error analysis of discrete function approximations. Galerkin’s method. Archetype differential equations, their solution using Galerkin Finite Element methods, and error analysis: Two point boundary value problems (BVP), scalar initial value problems (IVP), systems of IVP, variational methods. Partial Differential Equations (PDE): Poisson, heat, wave, stationary convection-diffusion, elliptic eigenvalue problems. Abstraction: Lax-Milgram theorem, abstract FEM, stability. Prerequisites:

one of MATH 102, 125 or 127 and one of MATH 209, 214 or 217. Recommended Corequisites: one of MATH 201 or 334.

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 or 118, 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. 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.

CMPUT 466 Machine Learning

Œ3 (fi 6) (either term, 3-0-3). Learning is essential for many real-world tasks, including adaptive control, 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 clustering. Modeling techniques such as kernels, Gaussian processes 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 consent of Instructor.

CMPUT 470 Computational Neuroscience

Œ3 (fi 6) (either term, 0-3L-0). This is an interdisciplinary course covering areas in Computing Science, Neuroscience and Biomedical Engineering. It covers three main areas. How do biological systems represent and process information at the level of single neurons? How is this information processed at the level of small neural networks? How this information is used to control body movements.

Given the interdisciplinary nature of this course, we will ensure that students first learn the fundamental concepts of other the disciplines before they are applied. Prerequisites: one of PHYSL 372, PMCOL 371, PEDS 302, CMPUT 340, or consent of 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;

Œ3 (fi 6) (either term, 3-0-0). Formal grammars; relationship between grammars and automata; regular expressions; finite state machines; pushdown automata;

In document Courses (Page 104-107)