Do you have to major in comp sci to learn how to program apps?

I want to make an app, and I have a solid idea already, but I have no clue how to make it. Do I have to major in comp sci to get some skills or can I major in something else and just take some basic programming classes?

Keep in mind that computer science isn’t just programming. If you just want to program, CS isn’t for you.

On that note, you could easily learn to program apps by either self-teaching or taking programming classes. For self-teaching, I recommend starting with codecademy.

Some of the foundational concepts in CS are helpful if you are writing non-trivial software applications.

CS can be self-educated as well, but if you are going to college anyway, you may as well take a few CS courses for the foundational concepts while you are there, even if you do not major in CS.

@PhantomVirgo it would seem I have misunderstood the essence of computer science from looking it up, as I thought it was mainly about programming. Would you mind explaining what it is really about?

Computer science is, quite literally, the science of computation and its applications. It’s the science of making computers work and what uses computers have, and goes all the way from the theoretical (like answering questions about what can actually be efficiently computed and the resources necessary for those computations) to the very applied (creating new software for commercial use). Programming languages are just one component of CS - although they are a foundational component, because anything you want to tell a computer to do you need to use a language.

Take a look at any computer science curriculum in a college catalog, and you will find much much more than programming. In fact, programming is usually a 100-level or 200-level at best class in a CS department. As an example, Stanford’s CS curriculum includes classwork on machine architecture, computer processes, file management, data structures and algorithms, artificial intelligence, bioinformatics, human-computer interaction, digital imagery and manipulation of digital graphics, databases and networks, and managing information systems - just as a sampler. Programming languages are the 100-level classes that are the prerequisites to everything else, but computer science is about learning about the structure and uses of computers and computation.

The good news is yes, anyone can learn how to program at a basic level. It’s true that as you get more advanced you may feel the need to learn more math/statistics and theoretical CS, but at a basic level to program simple applications, you can be good with some programming. First you need to decide what language you want to program it in - most universities offer classes in a variety of languages (C++, Java, and Python are some of the most common ones nowadays. Do some poking around to see what’s most applicable for the kind of apps you want to write but also the kind of career you want - different languages are more useful in some careers than others, although once you know one it’s easier to learn another). Then you can take the coursework required to learn the programming in that language. There are also tons of free resources on the Internet like Codeacademy, Khan Academy, Coursera classes, etc.

@juillet covered it pretty well, but I’ll give some concrete examples based on my own experience (senior CS major).

My algorithms class last spring only had one quick programming portion to it, and that was only because the problem was too large (about 500 calculations) for us to feasibly find the solution by hand. So we took a few minutes to code up the algorithm and let the computer find the answer for us. Other than that, there was no programming unless someone chose to try coding up some of the algorithms themselves for other reasons.

My theory of computation class last fall had zero programming. It was essentially an abstract mathematics course within the CS department (I’m oversimplifying it, but that should give you an idea).

I’m taking a software engineering class this quarter, and it’s the first class since freshman year where programming is actually emphasized besides just being a tool for exploring the concepts. However, even then we spent a good chunk of time working on project design and specifications, and our exams are all about the concepts and methods of software engineering, with no code on the exams.

I took a programming languages class last year, and the lectures and exams were entirely about the concepts behind the languages, how they function in certain situations, etc. We learned the languages on our own to play around with their unique features on the projects. In this case, while there technically was a focus on programming, the emphasis was more on the core ideas behind the languages and how certain features impact the computations in different situations.

That isn’t to say that there’s no programming in higher level classes. There definitely is, and that’s what makes some of these classes so time-consuming. But programming is a method of exploring the core concepts of the class, not the thing being taught. It’s essential to know how to program in order to do this, but learning to code is not the point of a CS program.

Some advanced CS courses that not specifically software engineering can involve substantial programming assignments and projects, such as writing a compiler for a compiler course, or writing a graphics renderer for a graphics course.

Of course, theory courses, as noted above, are basically like math courses. But the concepts are important if you want to write computer programs that are not slower than they should be or use up excessive memory.