Computer science ranks among today's fastest-growing and best-paying professions. A bachelor's in computer science generally serves as the minimum level of education necessary to enter the field, enabling you to pursue a variety of entry- and mid-level positions with good prospects for career advancement. Most programs typically require four years of full-time study, offering an introduction to major principles such as programming, operating systems, computer networks, and systems architecture.

This page offers a general overview of computer science degrees, from school selection to career prospects. Read on to learn about application requirements, common course topics, and professional and academic resources for computer science students.

What Is Computer Science?

Computer science is a wide-ranging field, and a bachelor's degree provides a broad overview of its major concepts and tools. Generally, computer science describes the use and manipulation of digital processes and data to perform tasks, typically in the form of applications and programs. Computer science informs every aspect of modern society in which technology plays a part, including business, communication, education, and entertainment.

Accordingly, a bachelor's in computer science explores a wide assortment of topics related to the operation and organization of computers, including programming languages, systems architecture, computer networks, hardware, and software. The enormous depth of information in the field means a bachelor's generally can't offer more than an introduction to fundamental computer science concepts. However, many programs offer specializations, such as network security, software engineering, or database administration.

Check out some of the best online bachelor's in computer science programs to get a better sense of your options when pursuing a degree.

What You Can Do With a Bachelor's in Computer Science

Explore some of the most popular careers for computer science majors to learn what you can do with your degree after graduation.

Computer and Information Systems Manager

Often referred to as IT managers or directors, these individuals coordinate various computer-related activities at organizations. They help create and meet IT goals using computer systems. This position typically requires a bachelor's degree in order to qualify for entry-level positions.

Median Annual Salary: $142,530

Projected Growth Rate (2018-28): 11%

Computer Hardware Engineer

Computer hardware engineers research, design, and develop computer systems. They also test computer hardware to make sure it operates appropriately and often collaborate with software developers. They may also work in research labs that build computer models. The typical entry-level position requires a bachelor's degree.

Median Annual Salary: $114,600

Projected Growth Rate (2018-28): 6%

Computer Programmer

Computer programmers write and test code, ensuring that computer applications and software programs work together. Computer programmers typically specialize in one or a few different programming languages and usually work closely with software developers. Most programmer positions require workers to hold a bachelor's degree.

Median Annual Salary: $84,280

Projected Growth Rate (2018-28): -7%

Computer Network Architect

Responsible for designing and building data communication networks (e.g., wide area networks, intranets, and local area networks), computer network architects usually need at least a bachelor's degree to obtain an entry-level position. To design a successful network, these professionals also need extensive knowledge related to an organization's business plan and goals.

Median Annual Salary: $109,020

Projected Growth Rate (2018-28): 5%

Computer and Information Research Scientist

Computer scientists research and solve problems in business, science, medicine, and other fields using the principles of computing. They also invent and improve computer software and hardware. These professionals can specialize in areas like programming, robotics, and data science. Although most of these jobs require a master's in computer science, some federal jobs accept applicants who only hold a bachelor's degree.

Median Annual Salary: $118,370

Projected Growth Rate (2018-28): 16%

What to Expect in a Bachelor's in Computer Science Program

Though courses can vary between schools, most online bachelor's in computer science programs offer a similar general curriculum, covering key topics in computer science theory, computer systems, and applications. Read on to learn about typical courses and concentrations for computer science majors.

Concentrations Offered for a Bachelor’s Degree in Computer Science

Software Engineering
Courses in a software engineering specialization are heavy focused on programming and design. Students enroll in electives such as game design and artificial intelligence. Software engineers work in a wide variety of fields and design, test, and deploy software. They create the apps that people use on their cell phones and the systems that help launch rockets into space.
Network and Security
The network and security concentration in many online computer science programs focuses on the technology that keeps computer systems operating smoothly and safe from hackers, viruses, and other threats. Students learn the fundamentals of network architecture, theory, and protocols. Network and security experts can pursue roles at almost any type of business. They are particularly in demand at organizations that need to protect sensitive data, such as financial and research institutions.
Game Development
One of the more creative specializations available in some online computer science degree programs is game development. This concentration covers the algorithms and technologies needed to create video games, as well as the research, marketing, and business models behind creating a successful gaming product.

Courses in a Bachelor’s in Computer Science Program

Artificial Intelligence
AI courses provide an overview of how machines can interact with people, solve problems, and reason similar to humans. AI is an important aspect of careers in the robotics and gaming industries as well as in search engine design and medical diagnostics.
Cryptography
Cryptography classes cover the techniques used to keep data secure, such as encryption, digital signatures, authentication, and zero-knowledge protocols. Experts in cryptography often work in IT departments and in industries that manage sensitive information, such as government, retail, and banking.
Data Mining
Data mining courses teach methods used for accessing both clearly defined and unstructured data, such as pattern recognition, clustering, and text mining. Data scientists use data mining to gather information that can be translated into actionable ideas for better performance, such as analyzing the online viewing habits of consumers to improve the design of a website. The healthcare, hospitality, technology, and consumer industries all use data scientists to improve their services.
Health Informatics
Health informatics classes teach students how computing applies to all aspects of healthcare delivery, including the design, implementation, and evaluation of clinical information systems. Courses often involve applying learned knowledge to a real-world clinical challenge. Students specializing in health informatics typically find careers in the medical and healthcare fields, as well as the insurance industry.
Machine Learning
Machine learning courses delve into the statistics, linear algebra, and other methods used to teach a computer how to identify patterns in data and then adapt its behavior without being reprogrammed. Machine learning is an important skill used by statistical analysts, software engineers, and architects in a variety of fields from aerospace to entertainment.

As you research computer science programs, also determine which careers for computer science majors match your goals. The program you select affects which careers you can pursue after graduation.

Interview With Brian Gill

Brian Gill

Brian Gill

Computer Scientist, Entrepreneur, and Angel Investor

Brian Gill is a computer scientist, entrepreneur, and angel investor. In 2004, he started Gillware Data Recovery and is a co-founder of Gillware Data Services (acquired by StorageCraft in 2016), Phoenix Nuclear Labs, and SHINE Medical Technologies. Most recently, Brian co-founded Gillware Digital Forensics, a startup focused on digital forensics, digital security, and incident response services.

Why did you choose to earn a degree in computer science? Was this a field you were always interested in?

My parents bought me an IBM PCjr when I was about 10 years old, around 1986. We were growing up in a small, rural farming town in southern Wisconsin. This was an incredibly insightful purchase -- a large investment in both mine and my younger sibling's futures. My mom stayed at home with us and my father was probably making less than $20,000 per year, and yet they decided to spend $1,500 on a personal computer. Neither my dad or mom ever touched it; somehow, they had the understanding that computers and computer programming were going to be powerful assets for their kids.

My mom bought me a monthly newsletter subscription to a service that would send BASIC programs to be coded in the postal mail. We'd code the game and then play it; I remember hangman being a particularly fun one that we coded multiple times. We didn't have any hard disk or any way to store the games, so whenever we eventually lost power or had to turn it off, we'd lose the program and have to write it again next time we wanted to play it.

It was a pretty obvious move for me to seek my computer science degree from the University of Wisconsin. [I'm] still trying to be half as good a parent as mine were.

What are some of the most crucial skills you gained in your studies that apply to your job on a day-to-day basis?

I vividly remember those early days of C and Java programming. C in particular was frustrating, as programs would just kind of explode and trying to figure out where the bug was could be incredibly difficult, especially if that bug was in memory management. I remember many times thinking to myself that this compiler was broken or the computer itself must have some hardware problem if my program keeps exploding, because obviously my program was perfect.

The best class I ever took at UW-Madison was a class in compilers. In that class, we defined a new programming language from scratch. We wrote all the language processing and had to make a compiler from scratch as well, including all the error handling and error messages. We learned about lexical and semantic analysis, op-codes, and stacks, and it was both incredibly frustrating and incredibly rewarding when it was finished.

The reason it was the best class I ever had was I left understanding that none of this was magic. My program exploded because it had a legitimate bug. The compiler was complaining about a syntax problem and it was smarter than me. None of this is magic; every bug can be fixed. Also, it left me with a huge confidence that I could learn any programming language easily. I wrote one and made the compiler that turned it into executable code -- of course I can learn dozens of programming languages.

What was the job search like after completing your degree? Did you feel fully prepared when making the transition from school to the workplace?

UW-Madison was a program that was heavy on theory at the time. I had classes in algorithms and compilers and operating systems and artificial intelligence. I also had about 30 credits of math. While there was a lot of mental gymnastics to overcome, and I had a lot more experience coding than most of my peers from my hobby projects, I was pretty surprised about how little I knew about programming at a company with a large team of developers.

I needed to learn to actually design my code and not just start typing. I needed to learn about source code control and tagging. I needed to learn how to thoroughly test my code, and write code to test my code, so my peers wouldn't be negatively impacted by a nasty bug I checked in. I needed to learn about regression testing and making sure my new code didn't blow up some old process.

I also needed to learn how to accept constructive criticism and learn that my code isn't my sacred baby. If it sucks, I needed to hear why it sucked and that I needed to scrap it and start over.

What are some of the challenges you face in your work on a day-to-day basis?

The biggest challenge when I was a professional software architect was balance. I wanted to be designing and writing code, but some other project that I had nothing to do with may have been blowing up in production and the company needed some fresh minds to look into the bug. Someone needed to deal with vendors and perform price negotiations for a database platform. Someone needed to spec out some hardware to make sure this website was really going to perform during a holiday push. Someone needed to mentor a young programmer. Someone needed to work with a business unit and gather requirements on a project that was of massive importance to the business unit. Someone needed to go to campus and meet with dozens of young computer scientists and recruit the next wave.

If you are a well-rounded person and personable and have any leadership skills, you are going to get pulled away from what you think you love to do sometimes. It can be what is best for the company and best for your career. I'll always look back at this part of my career fondly, but I don't regret that my career has taken me in some different directions.

Why did you decide to start your own business?

I've never been a big fan of authority. While I had bosses who I respected, and I'm sure it isn't true, as a young professional I was always pretty sure I was about 10 times as smart as my managers. I had a similar thought process in third grade and probably in the womb. Irrational confidence and desire for independence.

But I was also out-hustling my professional peers. I'd be working 60 hours a week and one of my hours would produce five times the production of a normal hour from my peers. And, as a result, I'd get my 8% raise annually when I worked for traditional, large companies. They just were not set up to reward someone like me. It takes four years to become a team leader and there's people in line in front of you -- that kind of thing.

So, I bought a one-way plane ticket and flew out to San Francisco during the first internet boom. While I had a small amount of success at the startups I participated in, I knew they made a lot of mistakes, and [I] had that irrational confidence that I could do better.

My younger brother Tyler was getting his computer science degree from UW-Madison [and] had an idea to start a hard drive repair business, and we went for it.

How has mentoring other programmers/computer science professionals changed your perspective on the field and/or computer science curriculums?

When I got out of school and into a career, my first thought was, "I wish they had some classes about programming in the real world." I was embarrassed I didn't know about GUIs, requirements gathering, source code control, and build processes. When I was mentoring young programmers, I'd often think about the same things -- "jeez, they don't teach any of this real world stuff in schools." And, I think in general, a lot of programs have heard that feedback and adapted.

Ultimately, I think it is probably the wrong move! Looking back at the more theoretical University of Wisconsin program, where you really get pushed to understand the core concepts of building an operating system from scratch or building a programming language from scratch, learning about logic gates and doing some CPU design ... it really sets you up to help drive what comes next in the world of computing.

There're thousands of people who can go to a tech school and learn Java and become proficient in a handful of years -- good enough to work some corporate job at a bank. A curriculum that drives bigger-picture thinking and fundamentals, the stuff that isn't directly used in some of those real world jobs, is a better longer-term investment for people who want bigger things from their careers.

What advice would you give to students who are considering a degree in computer science?

Learn to program first. Buy a book and become a Java certified developer before you take even CS 101. If you love it and have a mind for it, you'll be able to get through a self-guided curriculum and know that you'll have the enthusiasm to make it through all the academics. More than that, while your peers in those classes are taking 10 hours to knock out a program and stumbling around with trying to understand what a "null pointer" means, you'll rock out working code in two hours and be able to spend your time thinking more about the theoretical stuff.

And, you might have time to start thinking about more entrepreneurial ideas. Might have time to work on your hobby projects, which to a savvy interviewer are a lot more important than any academic project you may code.

You also might find you absolutely detest programming -- don't have the patience to sit in front of a computer having a compiler kick your teeth in for five hours at a stretch. So, that $50 book will have saved you from a ton of time and effort and money getting into a highly competitive CS program! Great programmers have a streak of independence and a willingness to be self-taught. If you require an instructor to be jamming assignments down your throat in order to be successful, you'll never actually be successful.

Meet More of our Experts


How to Choose a Bachelor's in Computer Science Program

Hundreds of colleges across the country host computer science programs, and picking the right one can be challenging. The list below outlines some of the major factors to consider when researching and comparing programs.

Accreditation
Accreditation indicates that a school meets national and regional education standards, ensuring that your degree offers professional and academic reputability. Nearly any credible college should possess accreditation from one of six regional accreditation organizations. Many computer science programs also hold accreditation from the Accreditation Board for Engineering and Technology (ABET).
Program Format
Depending on your professional or personal obligations, you may find an online, hybrid, accelerated, or part-time program is the best fit for your needs. Many schools offer a variety of enrollment options to suit varying student schedules, including accelerated programs that enable you to enter the workforce faster or part-time online programs that fit easily into your work week.
Cost
Tuition commonly ranks among the top concerns for college students, even those pursuing a high-paying field like computer science. Whether you're planning to enroll online or on campus, it always pays to investigate total tuition costs. Many schools include additional enrollment or distance education fees that don't always appear in the advertised tuition rate.
Academic Offerings
As a diverse and ever-evolving field, computer science offers several potential entry points, and many programs provide varied concentration options to help you distinguish yourself in a crowded job market. Depending on your professional goals, you might pursue concentrations as varied as artificial intelligence, cloud security, data science, or mobile computing.
Professional Opportunities
In an increasingly competitive job market, it's important to consider what a degree offers beyond pure academics. When researching a computer science program, examine the professional opportunities and connections. What type of internships do students pursue? Does a program maintain connections to prominent technology companies or other organizations?

Bachelor's in Computer Science Program Admissions

Precise admission requirements can vary widely between schools, but most programs generally maintain similar application components, including a minimum GPA, standardized test scores, and prerequisite courses. The section below outlines the most common admission requirements for computer science programs.

Prerequisites

  • Minimum GPA: With few exceptions, most colleges maintain a minimum GPA requirement for applicants, which varies based on selectivity. In general, most call for a 2.5-3.0 GPA, though this varies by school and program. Some colleges may offer conditional acceptance or alternate admissions pathways to students whose GPAs fall below standard requirements.
  • Prerequisite Courses: To pursue a computer science major, you need to fulfill certain prerequisite courses, such as college algebra and statistics. Outside of special accelerated programs, you can typically complete these requirements as part of your lower-division college coursework. However, entering college with advanced math coursework may enable you to finish your degree faster.
  • Work Experience: Undergraduate programs rarely require professional experience in the computer science field, except for some accelerated degrees that serve working students. However, if you do have significant professional experience, you may be able to skip over certain courses and complete your degree faster.

How to Apply

Test Scores
A common requirement for most college applications, SAT or ACT scores demonstrate your general verbal and quantitative reasoning skills. Most schools accept either test, though required scores vary widely depending on program selectivity. Many schools waive test requirements for older applicants who have been out of high school for several years.
Personal Statement
Many programs require you to submit a personal statement, also commonly referred to as a statement of purpose or letter of intent, as part of your application. Most schools call for a short essay (typically one or two pages) that outlines your background, your personal and professional goals, and your reasons for studying computer science.
Letters of Recommendation
More selective computer science programs may require you to submit letters of recommendation from professionals familiar with your work. These letters typically speak to your abilities and your potential for college-level study. Teachers, employers, and internship supervisors all serve as excellent choices for recommenders.

Timeline

Application dates and other deadlines vary widely between schools, but admissions milestones for most programs typically follow a similar schedule. For programs that begin in the fall, admissions deadlines generally occur during the preceding January, though these dates can vary immensely. Schools increasingly offer multiple start dates throughout the school year, with corresponding application deadlines.

If your college of choice requires you to submit SAT or ACT scores, you should take the test no later than six weeks before the application deadline. However, most students take the tests several months before application deadlines in case they need to retake either exam.

Resources for Bachelor's in Computer Science Students

Association of Information Technology Professionals

AITP has served computer science professionals since 1951, hosting local chapters around the country. Student members receive access to an assortment of benefits, including network opportunities, on-demand training, career resources, leadership development, and professional conferences. The organization also offers discounts on several professional IT certifications.

Association for Information Science and Technology

ASIS&T serves information technology professionals and students around the world, offering membership discounts for students. Members benefit include job listings, career counseling, free webinars, book discounts, and professional events. The association also hosts student chapters at colleges around the country.

Black Data Processing Associates

Founded in 1975 to serve the needs of African Americans in the information technology field, BDPA now maintains more than 30 local chapters across the country along with a strong national network of IT professionals. The organization offers a variety of resources for college members, including networking and mentorship opportunities, internships, and career services.

GitHub

An open-source coding database, GitHub offers access to thousands of examples of coding projects, enabling computer science students to examine the work of other coders around the world. Students can explore the site's coding database for free or pay a small monthly fee to access additional resources.

Women in Technology International

Serving women in the information technology field for 30 years, WITI boasts over 2 million members worldwide. The organization offers a wide assortment of resources for women studying computer science, including mentoring, career coaching, educational resources, professional development opportunities, and several annual events.