Bachelor of Science (B.Sc.)
with Specialization in
Computing Science with Business Minor
with Distinction.
- University of Alberta -
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.
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.
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.
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.
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 software development tools of the Unix environment.
Introduction to the structure, components, and concepts behind modern general-purpose operating systems. 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; virtual machines.
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.
An introduction to algorithms and theory behind computer programs that solve puzzles (mazes, peg solitaire, etc.) or play games (chess, Go, Hex, etc.).
A course 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.
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.
This course covers the implementation of RDBMSs and some non- relational data models, along with their query languages. Topics: compilation, execution, and optimization of SQL queries; concurrent execution of transactions; indexing; advanced constructs in SQL; semi-structured data models and query languages; distributed and parallel databases; NoSQL and cloud-based database systems.
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.
Social, ethical, professional, economic, and legal issues in the development and deployment of computer technology in society.
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.
A continuation of CMPUT 174, revisiting topics of greater depth and complexity. More sophisticated notions such as objects, functional programming, and Abstract Data Types are explored. Various algorithms, including popular searching and sorting algorithms, are studied and compared in terms of time and space efficiency.
Systems of linear equations. Vectors in n-space, vector equations of lines and planes. Matrix algebra, inverses and invertibility. Introduction to linear transformations. Subspaces of n-space. Determinants. Introduction to eigenvalues and eigenvectors. Complex numbers. Dot product, cross product and orthogonality. Applications in a variety of fields.
Vector spaces. Inner product spaces. Examples of n-space and the space of continuous functions. Gram-Schmidt process, QR factorization of a matrix and least squares. Linear transformations, change of basis, similarity and diagonalization. Orthogonal diagonalization, quadratic forms. Applications in a variety of fields.
Review of analytic geometry. Differentiation of elementary, trigonometric, exponential, and logarithmic functions. Applications of the derivative. Integration. Fundamental Theorem of Calculus.
Inverse trigonometric functions. Techniques of integration. Improper integrals. Applications of the definite integral. Introduction to differential equations.
Data collection and presentation, descriptive statistics. Probability distributions, sampling distributions and the central limit theorem. Point estimation and hypothesis testing. Correlation and regression analysis. Goodness of fit and contingency table.
Methods in applied statistics including regression techniques, analysis of variance and covariance, and methods of data analysis. Applications are taken from Biological, Physical and Social Sciences, and Business.
The course focuses on the creation of decision support systems using Microsoft Excel-based spreadsheet models and the associated macro programming language, Visual Basic for Applications (VBA). Students will learn how to create Excel-based applications to aid managers in making decisions based on data and analytics. These applications will have graphical user interfaces, appropriate models in the spreadsheet or in the background, and output reports. Fundamentals of VBA, such as the Excel object model, variables, control logic and loops, subroutines and function subroutines, and user forms will be introduced.
Prescriptive analytics modeling of efficient distribution of goods and services from points of origin to customers. Topics include strategic decisions, such as aggregate distribution plans and warehouse location, as well as operational decisions, such as selection of delivery routes and dispatching. Formulation and solution of models to prescribe optimal decisions using exact and heuristic methods. This course involves extensive computer modeling and heuristic design.
A problem-solving course which introduces the student to deterministic and stochastic models which are useful for production planning and operations management in business and government.
A study of sentential logic, including translation, semantics, decision procedures and natural deduction followed by an introduction to predicate logic, concentrating on translation.
A qualitative and mostly non-mathematical course in which the overall structure and main concepts of physics are examined. Classical versus quantum worlds; order versus chaos; Newton's versus Einstein's universe; selected topics and issues in modern physics.
The development of our understanding of the universe, including current models of stellar evolution and cosmology. Emphasis on understanding the physical processes underlying astronomical phenomena.
A non-laboratory introduction to the origin and evolution of the Earth and the solar system. Introduction to plate tectonics and the rock cycle. Simple energy balances and interactions between radiation and the atmosphere, land, oceans, ice masses, and the global hydrological cycle. Evolution of life, biogeography, and global climate in the context of geologic time. The carbon cycle. Human interactions with the Earth. Mineral and energy resources.
A survey of severe and unusual weather, with emphasis on tornadoes, hurricanes, hail and lightning. The scientific basis for the occurrence of these phenomena is presented along with practical precautions which may be taken to minimize their danger. Computer simulation and videos are used to illustrate how the weather systems work.
Origin of the elements and the solar system, origin and evolution of the planets. Geologic and atmospheric properties of the planets, the nature of meteorites and comets. Results of recent space exploration.
An introduction to the physics and chemistry of the oceans. Topics covered include ocean currents, the ocean floor, origins and buffering of the chemistry of the oceans. The role of the oceans in determining past and present climates is introduced.
*All course descriptions were taken from the University of Alberta website.