<p>I'm planning on attending university this fall, and one of the things I was planning to do was either major in math and minor in comp sci, or vice versa. However, most people on sites like this one and various career sites all seem to say that for these two majors, you either have a "knack" for it and do extremely well, or you don't do well at all... Is that true? Based on this site and others, it seems like you mainly have to be alright with abstract concepts, but what exactly are they? To be honest, I have no idea what that means. After all, the highest math class I've taken thus far are ap stats and calc ab, and they aren't really abstract (they're the beginner level plug and chug classes in math undergrad, right?).
As for computer Science, I've started taking introduction classes on edX and Udacity, but those are introduction to programming, not abstract concepts...</p>
<p>I guess I'm just worried I'm not smart enough to cut it. I did alright in my classes (I got 5's in both ap math classes, but did only alright in the sats... 720r, 680m, 600w) and I'm not sure if I'm that creative? I'm also the type to find comfort in doing things that are similar on a day to day basis (the other day someone told me that you'd like comp sci if you like to "push the boundaries" and do "a completely new task every day". While that may sound incredible for him, I feel like I would panic at the thought of having something new everyday that I might mess up on, though I also hear comp sci jobs are rarely solo jobs so maybe it's not as big as a deal?)</p>
<p>I apologize if I seem like I am rambling; it's just that I am going to attend college on a scholarship because my family is far too poor to afford college, which means that I would need to maintain at least a 3.25gpa (not too bad?) as well as definitely graduating in 8 semesters. This means that although I think I might like math and comp sci, I'm worried that I might not do well enough to graduate or keep my scholarship. Do you think I should simply just try them? Or do you think I should just go for a business/accounting/economic degree with a minor in math and comp sci (so this way i can keep taking more courses if i think i can handle the abstract concepts, and if not, can simply focus on applied stats courses and such)?</p>
An example of an abstract concept is the Church-Turing thesis. If you study the historical background of the thesis, including the problems leading up to the development of the Turing machine and the lambda calculus, if you learn how to take intuitive mental pictures of logical processes and formalize them equivalently in terms of Turing machines and lambda calculus expressions, if you understand exactly why the thesis is successful, and if you draw useful conclusions from the thesis, then you are studying computer science.</p>
<p>Yes. Take a programming class or two (ones where you actually have to write programs as homework) and see how much you like doing it. If you hate it, don’t be a CS major.</p>
<p>Ignore the advice about needing to think mathematically and abstractly and having a “knack.” Anyone can learn to program if they want to. </p>
<p>You sound insecure and worried. That makes a lot of sense to me because of your circumstances. I’m in the same boat. Don’t let it stop you! You’re a great student. Do the things you want to do. See how it goes. If computer science is boring, if it doesn’t fit you as a person, it’s okay. You’ll make it through.</p>
In order to get a CS degree, you need to study some discrete mathematics, theory of algorithms, computability theory, automata theory, language theory, compiler design, database theory, etc.</p>
<p>In order to make a living as a programmer without a CS degree, you do not need to study all that theory, but you need to discern a good software design from a bad design, which involves drawing diagrams and thinking through logical steps before even starting to write code. And you will probably have to design a database, a network, a user interface, an API, or some other system that is code-agnostic.</p>
<p>No matter how you want to approach software, you cannot avoid the necessity of mastering the art of solving complex logic problems and designing systems. Technical skills can only take you so far. Unless you are content writing low quality software.</p>