Mini-Streams
Mini-streams are designed for students who are not majoring in Computer Science, but desire a more sophisticated understanding of computer science and how to apply it in your chosen field.
A Computer Science Mini-Stream is a self-contained sequence of three or four courses that will allow you to focus on a particular aspect of computer science.
The streams are designed to give you practical, interesting and fun exposure to important areas of computer science (CS). The mini-streams are self-contained, so you won’t need to take any other CS courses. In some cases no other courses in Science are required. At least one of the courses in each mini-stream is third year or above, so you will be getting to advanced material in that specialty. The CS mini-streams are flexible and there is no formal registration process. All you need to do is register for the courses you want to take.
Mini-streams do not replace the CS Major. If your goal is a career in computer science, you will want to choose among the various CS major, combined major, and minor options.
The current mini-streams were selected for students with a variety of interests. Other streams are also being developed, and the existing course pre-requisite structure supports some flexibility to design a stream of your own choosing. For more information, please contact undergrad-info@cs.ubc.ca.
Mini-Streams Descriptions
Human and Social Centered Computing
Ever been frustrated by a computer application, a website, or even an electronic vending machine? Have you ever wondered just what makes it so hard to make computers usable, and wished you could take a crack at it? What about the ethics of computation? What happens when some people and parts of the world have much better internet access than others, why can't you use your favorite online music streaming site in Canada, what do companies really do with your loyalty card information, and where is social networking taking us?
In this mini-stream, learn more about the human part of computing and what humans can do to take control of it.
Core courses:
- CPSC 110 Computation, Programs and Programming: systematic design of programs.
- CPSC 210 Software Construction: using abstraction and decomposition to build larger software systems.
- CPSC 344 Introduction to Human Computer Interaction Methods: designing interactive programs and systems for human use.
- CPSC 430 Computers and Society: exploring the implications of computation on society.
Further course options:
- CPSC 444: Advanced Methods in Human Computer Interaction: conducting laboratory experiments and field studies for the purpose of interactive system design.
Scientific Computing
Computational simulation and data analysis are critical in virtually every domain of science and engineering. Since these techniques deal with continuous quantities, we must be careful when we perform complex manipulations of their representation inside a digital device like a computer. If you would like to learn more about how to implement scientific simulations and data analysis efficiently, accurately, and reliably; then scientific computing is the stream for you.
Core courses:
- CPSC 110 Computation, Programs and Programming: systematic design of programs. (Or CPSC 260 for students in Applied Science.)
- CPSC 302 Numerical Computation for Algebraic Problems: introduction to numerical algorithms for solving problems involving continuous quantities but no discretization, such as systems of linear and nonlinear equations.
- CPSC 303 Numerical Approximation and Discretization: introduction to numerical algorithms for solving problems involving discretization of continuous quantities, including interpolation, least squares best fit, differentiation, integration and differential equations.
Further course options:
- CPSC 402 Numerical Linear Algebra: algorithms such as orthogonal transformations, for linear algebra problems, such as least squares, solution of linear systems and eigenproblems.
- CPSC 406 Computational Optimization: introduction to methods of formulating, analyzing and solving a variety of optimization problems.
Software Development
Would you like to learn how to design and build software? Learn how to design both small and large software systems? Software that can help you finish a project or a mobile app that you can share with friends? Do you want to know how to organize software projects so that people can work effectively? Manage a group of developers working on a company’s product? How to design software so that you can be confident it will work properly? Ensure that the software you produce will be easy to extend in the future? If you would like to learn more about systematically creating good software then the software development stream is for you.
Core courses:
- CPSC 110 Computation, Programs and Programming: systematic design of programs.
- CPSC 210 Software Construction: using abstraction and decomposition to build larger software systems.
- CPSC 310 Software Engineering: building multi-person, multi-version software systems.
Further course options:
- CPSC 311 Programming Languages: there are many different kinds of programming languages, each of which makes it easier to get certain kinds of work done. This course will help you understand the different kinds of languages and know which one to use for what kind of work.
- CPSC 319 Software Project: student teams of 6 to 8 people work together to develop a large software system in response to the needs of a real customer.
- CPSC 410 Advanced Software Engineering: architecture and verification of large integrated software systems.