It feels like both of the terms in the title have been thrown around quite a bit in the last few years. As someone who just took up the study of Programming myself, I?ve heard the terms ?Computer Science? and ?Computer Programming? used a lot recently, almost interchangeably. It seems I would be remiss to not learn a bit more about what each one actually means and answer a few of the following questions: Are they the same thing? Are they related? Does one include the other?
Why Does it Matter Anyway?
As someone who just started to learn how to program (and who has a 4-year Bachelor?s degree but not in Computer Science), I can say that I get the feeling that it has significant importance in regards to my career prospects. Very often when looking at software-related job postings, I see that a 4-year Computer Science degree is either required or is seen as a major plus. This often leads someone in my position to ask themselves the following questions: Did I miss the boat? Is ?computer programming? a lesser art that I thought it was? Is a Computer Science degree what the real software engineers have under their belt?
Figuring I have start to somewhere in my search, I check the Wikipedia definition of each term:
Computer programming is the process of designing and building an executable computer program for accomplishing a specific computing task?The purpose of programming is to find a sequence of instructions that will automate the performance of a task on a computer, often for solving a given problem.
I compare this with the definition for Computer Science:
Computer science is the study of processes that interact with data and that can be represented as data in the form of programs. It enables the use of algorithms to manipulate, store, and communicate digital information. A computer scientist studies the theory of computation and the practice of designing software systems.
From the get-go, I can see that there is a major difference indicated here. Computer Programming seems to be the process of designing and building programs that accomplish a given task. Computer Science, on the other hand, is the underlying study of these processes. To me, what this comparison seems to be trying to say is that Computer Programming lies in the realm of applied technology, whereas Computer Science leans more theoretical.
For further clarity, I look to opinions of experienced software engineers regarding differences between the two. Before proceeding, I must point out that regardless of any individual?s opinion, it appears that much of this discussion has been viewed through the lens of higher education, and been influenced accordingly. While there are resources which seek to directly answer questions like ?What?s the difference between Computer Science and Computer Programming??, often the conversation is framed through questions like ?Which major should I study in college: Computer Science or Software Engineering?? As it turns out, originally unbeknownst to me, many schools do offer a ?Software Engineering? degree, which for the purposes of this article can be more likened to Computer Programming. As one might expect, Computer Science degrees do tend to lead students more in the direction of a theoretical study of the underlying processes of computers, while Software Engineering offers education in application of these principles. Regardless of their differences, though, these disciplines do appear to have striking similarities.
In his Medium article ?Computer Science VS Software Engineering ? Which Major Is Best For You?? (linked below), tech YouTuber and former Google Developer YK Sugi researches the differences between Computer Science and Software Engineering majors at University of Waterloo, due to his view that it has one of the best computer science programs in North America. He found that the majors had a surprising amount of overlap, being ?almost identical? in regards to their requirements for math and statistics, yet also found that each major boasted its own unique qualities:
I think (in regards to which major to pick,) it mostly depends on your preferences. In short:
You should choose Computer Science if you like math, logic, or if you want to get into a specialized field in CS such as artificial intelligence, machine learning, security or graphics.
You should choose Software Engineering if you?re more interested in the hands-on approach, and if you want to learn the overall life cycle of how software is built and maintained.
That being said, when answering the question of which major to pursue with the interest of becoming a software engineer, Sugi surprisingly responds with the verdict that a Computer Science major is better. For obvious reasons, this came as a surprise to me. How could a Software Engineering degree not be the best avenue to securing a job in Software Engineering?
Many schools don?t even offer Software Engineering majors. Sugi points out that University of British Columbia in Vancouver only offers Computer Science, for theoretical and software-related study, and Computer Engineering, focused on computer hardware. Each one offered classes in Software Engineering, but there was not a dedicated major. How could it be that a school like University of Waterloo could offer a major in Software Engeering but not have it be the best option for prospective Software Engineers? Sugi offers more elaboration:
Typically, what they (employers) look for in a software engineer candidate is the ability to write solid code and build interesting projects, as well as computer science fundamentals including data structures and algorithms.
I think the best way to cultivate this skill set is by quickly learning computer science fundamentals, and spending your own time practicing solving problems and writing code.
Based on the curriculum for Software Engineering and based on how busy engineering students tend to be in general, I think it would be harder to do this with Software Engineering than with Computer Science.
The point Sugi seems to be making is that while the fundamentals of Computer Science are something best studied in a classroom, the applicative nature of understanding in Software Engineering requires plenty of hands-on experience. This is something university study may actually hinder for students looking to get into this field.
Regardless of the takeaways of Sugi and others on this topic, it remains very difficult to deny that the existence of these majors and departments at universities has greatly influenced how we view Computer Science, along with its comparison to Computer Programming.
While we now have a somewhat better idea of how to view this question in an academic context, the question still remains between the categorical relationship between Computer Science and Computer Programming. Does Programming nestle in nicely as a sub-category of Computer Science, or are the two disciplines still distinct?
From what the research tell us, it looks like Computer Programming does belong to Computer Science, but with enough important distinctions that it is a field in its own right.
Tech YouTuber Sylvester Morgan, in his 2017 video ?What Is Software Development? Software Development VS Computer Science? (linked below), details the differences between the two:
Software development is the usage of programming languages and tools to write instructions that the computer understands in order to accomplish something, in order to solve a problem?to build something or to automate something. Software development is an application of computer science.
Computer science is the root and the foundation and software development that sits on top of that, but they are not the same thing. You can become a productive and skilled software developer without that foundational knowledge, but as a true professional, it?s good to always be curious and dig deeper into those things as necessary and as you?re interested.
While Morgan considers Programming to be a sub-category and application of Computer Science, he sees them as distinct enough that they can be approached with separate mindsets.
In her 2015 EdSurge article ?Computer Science Goes Beyond Coding? (linked below), columnist Sheena Vaidyanathan points out that Programming is one of several major components of Computer Science:
Computer science is about solving problems using computers and coding (or programming) is about implementing these solutions. Computer scientists can be like architects who design the house ? but do not have to build it.
The new high school AP Computer Science principles course more accurately reflects this important distinction by focusing on seven big ideas: Creativity, Abstraction, Data, Algorithms, Programming, Internet, Global Impact. Coding (Programming) is just one of these seven areas.
In her article regarding education on these topics, Vaidyanathan establishes that there are many strong reasons to teach Computer Science as a whole, and that an aversion to Programming alone is not a reason to avoid other areas in Computer Science.
Tech YouTuber, develop and writer Aaron in Beta also broaches the topic in his 2017 video ?What?s the Difference Between Computer Science and Computer Programming? (linked below):
…are they the same thing (Computer Science and Computer Programming), and what?s the difference? So I think the easiest question to answer is also the hardest thing to answer. Are these two terms the same thing? And the answer is really, ?No, they?re not. But they are very closely tied??
?it?s the same kind of concept as if you had a chemist and a chemical engineer. Computer programming is the chemical engineer side of this. They?re the people who are taking the research and applying it to everyday situations, whereas the the Computer Science side of it is more of the chemist. They are doing the scientific work, the theoretical work to then have someone implement it into the real world.
Aaron in Beta also goes on to say that while the two fields are separate, understanding of one profoundly serves understanding of the other. Having a solid understanding of the theories behind how computers work can help you write more effective code, while knowing how to best provide the instructions that computers can follow, can help drive a deeper understanding of computers as a whole.
So Where Do Bootcamp Grads Fit into All This?
As can be seen above, a considerable portion of the discussion of computer and software careers take place in the university, leaving those who got into the game a bit later feeling behind (myself included). That being said, while there has been extensive discussion on this topic, it?s actually fair to say that former, current or prospective coding bootcamp students shouldn?t feel so discouraged.
In his 2018 Medium article ?Coding Bootcamps vs. Computer Science Degrees: What Employers Want and Other Perspectives? (linked below), University of Washington PhD student Kyle Thayer looks to address this specific issue. He states that both bootcamp and 4-year Computer Science degrees carry their own purposes and strengths:
The purpose of a CS degree is to give students an overview of the scientific field of computing?. Coding bootcamps, on the other hand, focus on training people for a specific type of programming job (normally full-stack web programming).
?Coding bootcamps are unlikely to cover the fundamentals of operating systems, and CS programs are unlikely to cover the latest web technologies or have much team work. University programs change slowly, but so do the fundamentals of computer science, while coding bootcamps change rapidly, and are able to keep up with the rapid pace of technology change. I expect coding bootcamps and CS degrees to continue existing as separate tracks in the future, whether run independently or jointly.
Thayer himself sites this 2017 study from Indeed Blog (linked below). The study, titled ?What Do Employers Really Think About Coding Bootcamps??, samples over 1000 technical recruiters and human resources managers. As the article points out, a shocking 72% responded that they view bootcamp grads ?just as prepared and likely to be high performers as candidates with computer science degrees?, while an additional 12% ?think bootcamp graduates are more prepared and more likely to be high performers.? Out of those surveyed, about 17% ?think bootcamp graduates are not as prepared or likely to be higher performers as candidates with computer science degrees.?
80% of the surveyed managers reported that they had at some point hired a bootcamp graduate, and a staggering amount (99.8%), said that they would hire one again.
While everyone?s opinion will differ, I find it hard to conclude that these results should be disheartening for bootcamp programmers, in fact I would say that they exceed my expectations. This study does come with grounding information, though: despite the overall positive view of bootcamp grads, 41% of survey respondents in the study said that, they would be more comfortable in hiring someone with Computer Science degree. This is largely due to the well-regulated core standards of universities, and the lacking regulatory structure of current coding bootcamps. To follow along with similar themes, respondents said that for more abstract projects regarding theoretical knowledge of computers, Computer Science degrees were more highly prized, whereas with tasks requiring more practical understanding of issues, bootcamps certificates were just as valuable.
So What are the Takeaways?
Well, let?s go through some of the questions that were asked at the beginning of the post:
Are Computer Science and Computer Programming the Same Thing?
No. While having a lot in common, it would be accurate to say that Computer Programming and Computer Science are categorically distinct.
Are Computer Science and Computer Programming Related?
Yes – while they are different categories, the two also have a tremendous amount of overlap, and knowledge of one will almost certainly aid in understanding of the other.
Does Computer Science ?Include? Computer Programming, or Vice Versa?
Yes, Computer Programming is an applied branch of Computer Science. All of Computer Programming can be considered to be a subset of Computer Science, while there?s plenty of Computer Science that has nothing to do with Computer Programming.
As a new Computer Programming student who didn?t pursue a 4-year Computer Science Degree, did I miss the proverbial boat?
It depends on what your goals are. If you are trying to acquire programming skills to put to work in a commercial setting or something similar, then the answer is probably no (though the path still won?t be easy). If you are trying to publish academic research on computer theory, then you?ll likely want to study the subject further at a university.
Is Computer Programming a Lesser Art Than I Thought it Was?
It depends on what you thought it was. If you thought ?Computer Programming? was an area of research that encompassed most fields of study having to do with computers, then you?d be mistaken. That?s Computer Science. If you thought that it was the study of ways to communicate and provide instructions to computers, to the end of building programs, then you?d be correct. As a comment, thinking of either as ?lesser? than the other is generally unnecessary, and lacking in perspective of the unique context that each one fills.
Is a Computer Science Degree what ?Real? Software Engineers Have Under Their Belt?
Not necessarily. A 4-year Computer Science degree will never hurt a prospective software engineer?s career goals nor her understanding of the field, but there?s hardly a one-to-one relationship between degree-holders and engineers. There are plenty of successful engineers who built their careers after pursuing a different major (or never attending a university in the first place). There are also plenty of students who have gone into a Computer Science degree with the goal of being an engineer, and end up disappointed when the study has turned out to be more theory-heavy.
To recap, Computer Programming is an applied branch of Computer Science. It can be studied mostly independently of Computer Science, though understanding of one will greatly serve the other. Branding one as ?better? than the other is generally a misguided practice, and more specifically one should consider the task at hand before deciding which discipline or skill set will be of more use. Computer Science graduates and Computer Programming bootcamp graduates each have their own justified place in society, and it?s unlikely that either will fade out of relevance anytime soon.
Writing this article relied profoundly on the research done by others. If you?d like to look further into any of these resources, please reference the links below:
(Photo Credit) https://theydiffer.com/difference-between-computer-science-and-computer-programming/