About Computer Science Programs
Computer science is a broad discipline that encompasses a wide variety of areas of computing. Our students are trained to think creatively, to solve complex problems, and to communicate with clarity and precision.
Degrees in computer science start with:
- CS 111 Introduction to Computer Science
- CS 235 Data Structures
CS 111 assumes prior programming experience. If you have never programmed before, you should take CS 110 How to Program first. For more guidance, see Frequently Asked Questions.
Early in the program students also take courses in algorithms, computer systems, software design, calculus, and discrete mathematics
After mastering these basic skills, you take courses in a variety of areas, depending on your interests. Some of the areas within the BYU Computer Science department include:
- Software engineering: Focuses on the techniques used to build large-scale software systems.
- Human-computer interaction: Focuses on how computing can better serve humanity, especially by studying how humans interact with computers and how developers can make software that better fits how humans think.
- Machine learning: Studies how computer programs can mimic the ability of humans to learn and reason, often using large amounts of data.
- Computer systems: Focuses on how computing can improve the Internet, computer security, operating systems, and smart devices.
- Animation and games: Creates films and games using a combination of technical and artistic skills.
- Programming language theory: Studies the design, implementation, and analysis of programming languages.
- Formal verification: Studies methods for proving the correctness of a program, meaning it does what the author intends for it to do.
- Decision algorithms: Uses systems, control theory, and related tools to analyze and design complex systems and information processing techniques in a variety of fields.
Declaring a CS Major or Minor
Click here to learn how to declare or change your major or minor:
Applying
Most of our programs are open enrollment with no need to apply! The only exception is CS: Animation and Games, which does require an application.
Transfer Credits & Substitutions
Read our transfer credit and substitution policy here:
Scholarships & Financial Aid
Learn more about how to apply for scholarships and get financial aid.
Scholarships and Financial Aid
Programs
Our programs emphasize core computer science fundamentals while offering the flexibility to customize your degree with electives in a wide variety of areas of computing.
When majoring in computer science, you can choose one of the following options:
- Computer Science (BS): maximizes your flexibility to take electives in areas that interest you.
- Machine Learning (BS): a degree with a focus on the technology that enables computer programs to mimic the human ability to learn and reason
- CS: Software Engineering (BS): a computer science degree that focuses on the design of large software systems
- CS: Animation and Games (BS): a computer science degree with a focus on designing and developing animated films and games
- CS: Bioinformatics (BS): a computer science degree that combines computer science and biology courses to focus on applications of computing in biology
- CS: Human–Computer Interaction: a computer science degree that specializes in people, with emphasis on user design and understanding of human behavior
There are also options for students who want to minor in Computer Science:
- Minor in Computer Science: offers a foundational education in computing across diverse professional fields
- Minor in Computer Science Teaching: add information here!!!
Frequently Asked Questions:
-
Toggle ItemWhich computer-related degree program is for me?
Computer Science—(74-77 hours)—Students study the theory, design and development of software. The original Computer Science major and the Computer Engineering major share 29 hours of common core classes (11 hours math, 3 hours physics, 3 hours computer hardware, and 12 hours programming). This allows students interested in computers some time to explore both programs before deciding on a major. Computer science students receive a basic introduction to computer hardware (3 credit hours). The majority of the coursework (about 50 credit hours) concentrates on the theory and design of algorithms and algorithmic processes for a variety of software applications such as operating systems, artificial intelligence, graphics, compilers, databases, and networking. Students learn how to model, develop and program computer applications to solve significant problems. The department also offers a bioinformatics emphasis, designed for students who are interested in building software to assist in analyzing biological systems, and an animation emphasis, ideal for students wishing to pursue careers in animation and video game development studios. Computer science majors are in high demand and are best prepared for software design and development jobs.
Computer Engineering—(92-93 hours)—a cross between Computer Science and Electrical Engineering. Computer engineering students receive training in the fundamentals of software design and development from the computer science department (12 credit hours) as well as a basis in electronics and communications from electrical engineering (15 credit hours). Finally, they receive in depth training in the design of computer logic and circuitry (18 hours). Computer engineering students are in high demand and go into a variety of computer design and development jobs.
Information Technology—(77 hours)—focuses on the application of computer technology to solve problems. Students develop and design primarily at the system rather than the component level. Electronics Information Technology students receive a basic coverage of electronics (6 – 8 hours). Students receive a science background (8 hours calculus, 6 hours physics, 3 hours statistics) as well as a basic introduction to computers and computer programming (13 hours).The balance of the program (26 hours) concentrates on computer applications such as communications, networking, operating systems and databases with an emphasis on laboratory and project experience.
Information Systems—(74-75 hours)—teaches students to understand the effective and efficient use of information and communication technologies within a business setting. This major involves two broad areas: the acquisition, deployment, and management of an organization’s IS resources and services, and the development of computer-based systems and technology infrastructures for use in organization processes. The courses include programming (3 hours), database design (3 hours), systems analysis and design (6 hours), and data communications and enterprise applications (6 hours). Admission by application.
-
Toggle ItemWhat computer should I buy?
Please see our recommended computer requirements.
-
Toggle ItemShould I take CS 110 or CS 111?
CS 110: How to Program is designed for students who have little or no prior programming experience. Using Python, it teaches the basics of programming, including basic types (numbers, strings, booleans), control flow (while, if/else, for), functions, and data structures (lists and dictionaries). A significant focus of the course is problem decomposition, meaning learning how to break a problem down into smaller pieces using a set of functions.
CS 111: Introduction to Computer Science is designed to introduce students to core ideas in computer science, including higher-order functions, object-oriented programming, recursion, trees, iteration, regular expressions, and formal grammar. CS 111 is the beginning of the Computer Science core and is a prerequisite for most CS classes. Students taking CS 111 should already have experience with basic types, control flow, functions, and lists. The first two weeks is a review of how to program, so that students with prior experience in a different language can learn Python, and then the course moves quickly through the core CS concepts.
Guidance
Ultimately, the choice of which class to take is up to the student. While it is impossible to know with certainty which option would be the best fit, the following advice help you choose.You are likely a good fit for CS 110 if some of the following are true:
- You have never programmed before.
- You have struggled with programming in the past.
- You took one programming class but it has been several years and you are not sure you remember a lot of it.
- You have had only limited exposure to programming in very confined domains. For example, you have written R scripts for statistical analyses
You are likely a good fit for CS 111 if some of the following are true:
- You have taken AP Computer Science.
- You have written code already in an organized setting (coding club, class, job, etc.).
- You understand basic types, control flow, functions, and lists.
- You have prior experience with Java, C, C++, C#, or Python.
Most sections of CS 111 will have a corresponding section of CS 110 at the same time of day. If you try CS 111 first, and if during the 10 days of the semester you find the content and pace too challenging, in most cases you can easily switch to CS 110 without disrupting your class schedule.
-
Toggle ItemHow can I declare a Computer Science major or add a CS minor?
Click here to learn how to declare a CS Major or Minor:
-
Toggle ItemHow can I change my major to Computer Science?
Click here to learn how to change your major:
-
Toggle ItemCan I transfer a CS class from another University?
Read our transfer and substitution policy here.
-
Toggle ItemDo any of the CS requirements also fill General Education (University Core) Requirements?
Physics 121 is a CS requirement which partially fills the Physical Science University Core requirement. The remainder of the Physical Science University Core requirement can be filled by taking an additional approved chemistry or geology course. Please see MyMap at http://mymap.byu.edu for more information.
Physics 220 fulfills a CS elective. However, Physics 220 may NOT be used to fulfill any other University Core or departmental requirements if used to fulfill this elective.
Math 112, Math 113, and Statistics 221 are CS requirements which fill the Advanced Languages/Quantitative Reasoning University Core requirement.
English 316 is a CS requirement which fills the Advanced Writing GE requirement. -
Toggle ItemAre there any classes that I should avoid taking together?
You should follow the prerequisite flow chart on each degree page when selecting course order. We do not have any specific courses that students should avoid taking together. We do, however, recommend that students avoid taking more than 3 CS courses per semester.
There are a few courses with significant programming projects (CS 240, CS 312, CS 324, CS 340). We recommend taking 1 of these classes at a time. If you decide to take 2, we suggest avoiding other CS classes if possible. -
Toggle ItemHow do I test out of/waive a course?
CS 111 is the only course that students can test out of. We discourage testing out for students who have taken IS 303, since it is not equivalent. Likewise, significant prior programming experience alone is not necessarily sufficient to test out of the course. We recommend testing out only for students who know the concepts taught in the class.
These concepts include:- Functional programming and higher order functions
- Object-oriented programming
- Recursion Generators
- Exceptions and decorators
- Testing, e.g. pytest
- Linked Lists
- Tree-based data structures
- Regular expressions
If you wish to explore this option, please contact the , faculty undergraduate advisor, to learn more. You should make sure that you have significant experience in Python programming and know the concepts above. If you succeed in testing out of CS 111, we can waive this course for CS majors or minors. Students in other majors or minors will need to work with our advisors to follow a formal test out process so they can get credit for the course.
-
Toggle ItemHow can I get accommodations or resources for accessibilities?
Here are some resources for those with accessibilities.
You can find information about how to receive accommodations at the University Accessibility Center. -
Toggle ItemWhat should I do if I need to take a class without taking the prerequisites?
Talk to the professor who will be teaching the course to find out on what information the class actually depends. If the professor agrees to let you into the class, you may have to do some extra work to fulfill those dependencies. The exception to this rule is for the 300- and 400-level CS courses that depend on CS 240. You will not be allowed to register for 300- or 400-level CS courses until you have passed CS 240 with a C- or above and met with the undergraduate program assistant.
-
Toggle ItemIf I fill out a graduation plan, am I committed to following it?
No, the graduation plan allows you to spot semesters when there may be conflicts with your courses and provides an opportunity for you to see when you might graduate. There is no problem if you decide to change things in the future. You should consult the class schedule and search future CS class offerings and MyMap as you are making your plans.
-
Toggle ItemWhat resources are available to me?
For those interested in Computer Science and programming, here are some materials to get you started!
There are many resources available to CS majors and students taking CS classes. There are many services on campus that are available to students. Resources for those with accessibilities are also offered.You can find information on courses and research in the CS department. For employment, both as a student or intern and for full-time placement options, check out the Careers & Employment sections of the site. Also, major announcements and information are posted on the main page of the CS website. A calendar of events is also available.
-
Toggle ItemHow can I register for 300- or 400-level classes?
Students are only allowed to take 300- or 400-level classes once they have passed CS 240 with a C- or higher and have completed a department interview. Once both are complete, the student will receive a "CS 240 flag" that will allow them to register for upper-level courses. If students are trying to register for the next semester, they can have the interview once they pass the Programming Exam, which is part of the CS 240 course. A flag will be temporarily granted. If the student doesn't at least receive a C- as a final grade for the course, then the flag will be removed, and the student will no longer be allowed to register for upper-level courses.
-
Toggle ItemAre there jobs in Computer Science?
The job market for CS majors is thriving. CS is one of the fastest growing fields in the nation, offering some of the highest salaries for new graduates. Students who have completed CS 240 should be able to get good summer programming jobs that will give them experience and help pay for college and living expenses. For more information on the CS industry, visit the Association for Computing Machinery's Computing Degrees and Careers website here.
-
Toggle ItemCan I get credit for my internship or work experience?
Although work experience, particularly high quality internships, is extremely valuable to students and is strongly encouraged by the department, no credit is offered. International students interested in taking CS 199R as an internship experience should speak to Dr. Dennis Ng (422-2835, 3322 TMCB)
You can also find on this site information on the courses offered and research in the CS department. For employment, both as a student or intern and for full-time placement options, check out the Careers & Employment section of the site. Also, major announcements and information are posted on the main page of the CS website. You can also see upcoming events on the home page.