I might be interested in CS... help?

<p>Hi, i'm an international student and I plan to study in the USA the first semester of 2014.
Last year in my country i studied 1 year of medicine but it wasn't quite my path in life, so I dropped out.
I want to live in the US but I have no idea what to study.</p>

<p>I consider myself a nerdy person: awkward, heavy PC gamer, interested in e-sports and interested in computer gear (avid reader of Toms hardware).
I might be interested in studying computer programming. However I have zero experience in programming. Also I heard good programmers started learning programming since they were very young.
I have a main idea of what programmers do, but I don't know if I like it. Can you help me? Should I start learning basic programming online? Please give me your opinion.</p>

<p>“Also I heard good programmers started learning programming since they were very young.”</p>

<p>Not always true - Honestly, I doubt it’s true THAT OFTEN. I took a Harvard CS course online through Edx (CS50), and the professor talked about how when he FIRST started college as a freshman at Harvard, he didn’t think he wanted to major in CS, nor did he have ANY previous programming knowledge. He took CS50 as pass/fail (because he didn’t think he’d pass it). He ended up majoring in CS and eventually becoming a Harvard professor.</p>

<p>I’d recommend maybe trying something like that on Edx and see if you truly want to major in it. MIT and Harvard both typically have a free intro to CS course you can take.</p>

<p>I would like to know if Computer Programming is math intensive and if the math level is difficult.</p>

<p>Btw thanks for your reply. :)</p>

<p>It is, you will have to take many math classes.</p>

<p>Not really. Sure, you’ll have to go through calculus and linear algebra, but you can mostly avoid math after that if you are so inclined.</p>

<p>OK… Here it goes from a math-challenged Tom’s Hardware loving PC enthusiast gamer with a couple CS degrees among others…</p>

<ol>
<li><p>The polite term is ‘Computer Science’ not computer programming. Programming is what we do for a living :). </p></li>
<li><p>I started programming at 18 because I was horrible in Calculus and the college had no problem with very powerful calculators. No need to be a child prodigy.</p></li>
<li><p>The ‘I want to live in the US’ part is not guaranteed. You may qualify for a student visa and get a 4 year degree and even work for a couple years. Unless you’re from a non-crowded visa wise country (i.e. not India, China, Mexico, and the like with decade-long visa wait) the process of getting a work permit then something more permanent is not quite what it was 30 years ago when I went thru it.</p></li>
<li><p>To see if you like it, I’d say take the MIT Open Courseware sequence. Keep in mind than a few classes in Java do not make one a CS person and programming is not all we do (ignore #1 :)). If you can write simple programs after those classes and you’re not bored to tears, maybe CS will work.</p></li>
<li><p>Depending on which school you get admitted, and what type of program it is, it could be ugly (Calc 1-3 and Diff Eq and a couple probability courses and discrete math and so on). BA (vs BS) programs have less math usually (Baby Calc I, Stat, and so on).</p></li>
</ol>

<p>

</p>

<p>Computer Science can be math intensive if you take a more theoretical route, but Computer Programming isn’t especially. You should be fairly quick with understanding a problem and turning it into algebraic expressions. Other than that, not really math intensive.</p>

<p>A lot of foreigners I know who studied CS who are able to find jobs in software development plenty willing to sponsor them. I’m not actually sure what the next step to citizenship after that is. But if you study CS (in the US) your odds are good that you will be able to spend a major portion of your life in the US.</p>

<p>If you are that interested into stuff like Toms hardware… Then maybe you might consider electrical engineering for the hardware aspects. If not maybe you go for computer engineering which can blend both the worlds of computer software and hardware together </p>

<p>Sent from my Galaxy Nexus using CC</p>

<p>… Assuming you come from a relatively obscure country and have a graduate degree in CS and many other things. </p>

<p>I will be fairly frank as someone who came to the US via TWA rather than via the Mayflower. You can’t predict what the job or immigration policy climate will be in 5 years. It is not the case that a BS CS from Directional State U is a green card in a larger envelope. I know people who spent 10 years on H1 and some who were not sponsored at all. </p>

<p>I do not believe this will improve in the foreseeable future one way or another.</p>

<p>". However I have zero experience in programming." - It is possible to learn at college. But it would be lots better to find ways to get some programing experience now. That way you’ll know what you do and don’t like prior to making college decisions.</p>

<p>Computer science is mathematically-intensive because CS is, effectively, a branch of math. I’m taking a cs course right now that has NO programming, it’s all math. Trees, graphs, algorithm analysis (better be good with logarithms and exponents!), sets, first-order logic, recurrence relations, etc.</p>

<p>But CS also has its applied side, which is where programming comes in. At a good university, you could concentrate on either a more theoretical, mathematical route or a more practical route, but every CS major needs the fundamentals.</p>

<p>There are theoretical areas of CS that I have no interest in, as well as practical areas I have no interest in. CS is a huge field and you don’t need to be a particular “type” to enjoy it. I have no interest in network-related stuff (I just got my first smartphone and I don’t even know what 3G or 4G means), and taking a class in assembly probably killed off my interest in the low-level goings on of a system (stacks, fetch/execute, floating point rep, etc.), and I couldn’t care less about databases. Studying formal language stuff made me snore. Those things were worth learning and I’m glad I studied them, but I am actually interested in computer graphics and numerical methods/physics simulations, and games. I know some CS people who, believe it or not, have almost no gaming experience, or have never used Linux/UNIX, and I’m talking about young people, not old professors. So everybody comes to CS from a somewhat different angle.</p>

<p>Much as it grinds my gears, there is room in CS for Mac people, people who are strictly interested in the theoretical side of things, people who hate games, people who love Microsoft, people who love Stallman, people who hate/love C, people who hate/love <language x="">, people who hate/love OOP/functional programming/open source/proprietary/etc.</language></p>

<p>A love of computers and computing and a willingness to learn the fundamentals is all you need.</p>

<p>And if you live long enough and survive enough rounds of layoffs you, too, can check out most of the items that Tom mentioned above.</p>

<p>Also keep in mind your interests will change depending on what you find ahead, and also depending on what you end up working on in real life or grad school. Here’s my career summary with CS areas, in chrono order… I’m posting it to show our readers the various areas one may end up working on…</p>

<p>Undergrad civil eng- technical/engineering software for civil, structure analysis, numerical methods, and surveying
Work: statistical analysis (had to learn on the job), numerical analysis, data management
Undergrad comp sci - databases, numerical analysis, graphics
Grad CS: research and papers on computational linguistics and natural language processing, also quite a bit of graphics
Work: Compiler / user interface development, software tools development (12 years), Information Technology (2 years), embedded development (QNX, Linux, Windows CE, etc 14 years)</p>

<p>In 30+ years the common factors have been Unix/Linux, C, Emacs (almost got to meet Stallman in '89), and more recently, C++, Visual Studio, and Java. </p>

<p>The thing is, you often don’t know what is the cool stuff, and even then, in real life you don’t get much of a choice. At work I’m now working with NVIDIA UI Composer and Lua, which is the language used to write Angry Birds :). No complaints. </p>

<p>Tom said it right - a love of computers and willingness to learn the fundamentals. I would also add, learn new things. That’s how you make it 30 years in the workplace still writing software. Most of my classmates are now managers or PowerPoint Engineers…</p>

<p>I was thinking in the programming branch…
Well i will try some online courses for newbies to see if i’m really interested.
Thanks for the replies.</p>

<p>It’s a common misconception that computer scientists start learning programming when they’re very young. You’d be surprised how many students take their first CS class in college. </p>

<p>I’ll be honest. It’s math intensive. You’ll have to take such courses as calculus, linear algebra, differential equations, etc. You get the idea. If you can get through those classes, you should be okay.</p>

<p>That having been said, certain math like diffy qs and calculus you may never see again once you’re out of college, depending on what you do.</p>

<p>Computer programming is innate in some people. They’re naturals. They can think like the computer does, literally see the logic of the program in front of their heads. They can zoom out to see the whole design then zoom in to the line of code that causes the problem, then back to assess the impact to the system, all in the time it takes to say “Calculus”… </p>

<p>The math teaches discipline and some useful stuff for some domain areas (linear algebra especially). But I’ve only used trig functions since college exactly twice, both times in graphics programming. Still, you have to get thru the math…</p>

<p>I discovered I was good in programming (not CS :)) many years ago when I ran into the Calculus Brick Wall in engineering school and decided that programming a calculator or pocket BASIC computer was an easier way than doing it by hand. After I figured out (think the apes scene from Space Odyssey when the ape grabs the bone and uses it as a club) what’s the difference between GOTO and GO SUB the rest was history…</p>

<p>What makes CS mathematically demanding isn’t calculus, differential equations or linear algebra. Really, none of those subjects are even relevant to most of what CS is about. These subjects are good for everybody to learn about, especially technical people such as those who major in CS, but they are by no stretch of the imagination necessary to the study of CS.</p>

<p>That said, the subject matter of CS is inherently mathematical in nature. Programming language syntax and semantics, logic, analysis of algorithms, formal languages and automata, graphs and trees, cryptography, data compression, information theory, etc. CS uses a lot of math, and a lot of that is math that other majors simply don’t need.</p>

<p>Programming requires Calculus 1 or 2?</p>

<p>Calculus 0.25 is about all that is required to actually write decent code. What is required to graduate from college with a degree in CS is a different story.</p>

<p>Some colleges will ask for/require Calculus I to be taken before (or concurrently) with the first “CS programming for Engineers” course…whether or not the course is Java or C++. The reason is that although you won’t really write a program to compute limits, sequences or integrals, the schools want the students to be “mathematically mature” for the initial CS programming courses.</p>

<p>Once you have the basic programming foundation, then the CS curriculum will have you take a Discrete Mathematical Structures course where you will learn basic combinatorics and graph theory while applying that branch of math to computer science.</p>

<p>You will need the introductory programming courses with the discrete math course to be ready for the “computer organization” course. Therefore, your freshman/sophomore CS curriculum is:</p>

<p>Calculus I
First Programming Course (C++ or Java or Python or even maybe Scheme)
Calculus II
Second Programming Course (C++ or Java or Python or even maybe Scheme)
Discrete Math/Discrete Structures
Linear Algebra
Computer Organization (with or without Assembly Language)</p>

<p>The Linear Algebra math course is one of the most useful math courses for engineers and computer scientists. You need at least Calculus I & Calculus II before taking Linear Algebra. Another reason for the Calculus sequence is that you need them for the Physics sequence.</p>