Girl studying at Nest


Mini-streams are designed for students who are not majoring in Computer Science.  A mini-stream is a coherent set of courses designed to allow non-majors access to upper-level courses in certain areas. 

No matter what field you choose, how likely is it that you won't be using a computer in some manner?

Information appliances — from smartphones to the cardkeys that unlock doors at UBC, from medical imaging machines to traffic light networks, from climate modelling supercomputers to laptops — are an integral element of our lives.  Do you ever wonder how these systems work, why they work the way they do, or how you could make them work better?  Would you like a chance to learn more about computing, even though you do not plan to major in computer science? If so, perhaps a computer science mini-stream is right for you.

A Computer Science Mini-Stream is a self-contained sequence of three to 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 — you can’t learn 16 courses worth of material in 4 courses. If your goal is a career in computer science, you will want to choose among the various CS major, combined major, and minor options.

Scientists, engineers, artists, economists, lawyers.... Today nearly everyone uses computers as part of their work, and for many people, having a more sophisticated understanding of the computer science involved can be a real asset for your career. Knowing more about how computers and software work can help you make more informed choices about how and when to use computers; it can help you go beyond using existing software to writing your own software, or it can help you collaborate with CS majors to produce software based on your combined expertise.

The current mini-streams were selected to cover material of interest to students with a variety of interests.  In addition to the streams listed below, other streams are 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

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?

If you want to know more about the human part of computing and what humans can do to take control of it, then the human and social centered computing stream is for you.

Core courses:

Further course options:

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:

Further course options:

Software Development
Many careers now involve writing software, either alone or as part of a group. 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:

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.


BUCS/BTM Combined Business/CS Degrees