<p>As a non-computer science major (or even minor), I'm hoping to try and get in some basic programming knoweldge during college. Not only does it seem really appealing to employers, but I think it could be a very fascinating experience. However, I'm not sure how I could get to the level where I could be considered "proficient." My cousin who took some classes as part of her engineering curriculumn suggested that I take two or so basic, introductory computer science courses. Does that sound about right? I know that when properly taught, computer science is more about theory, but I want something a lot more practical. (And to be honest, I don't want to take something I'd be completely in over my head at, especially if my school's computer science department is very competitive) How do you guys think I should follow this path? I know community college is always an option, but I'd prefer to get this done during college.</p>
<p>The freshman and sophomore sequence of computer science courses for computer science majors should give you both some needed theory and programming experience that will be helpful.</p>
<p>Here is a classic introductory computer science book that you can self study with if you are motivated:</p>
<p>[Welcome</a> to the SICP Web Site](<a href=“http://mitpress.mit.edu/sicp/]Welcome”>http://mitpress.mit.edu/sicp/)</p>
<p>And a modified version using a different programming language that may be more common now:</p>
<p>[CS61A</a>, Spring 2012 Online Textbook](<a href=“http://www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html]CS61A”>CS61A, Spring 2012 Online Textbook)</p>
<p>Thanks for the links! However, I think that Computer Science isn’t really one of the things I’d feel comfortable learning on my own. (Although I did sort of manage to learn CSS haphazardly by myself) I’ll try reading more when I have free time.</p>
<p>Look at the available options at the college you choose to attend. There is usually a first course required as a prerequisite to the rest of them- unless they have a special course for nonmajors. I know that after the first course at UW there was a course where students chose a programming language to delve into. This like taking a semester of a foreign language- you get a taste of it but not enough proficiency to matter for anything. I don’t see where this would be at all helpful to any employer- a little knowledge could make you dangerous in trying things, not helpful. </p>
<p>You learn by doing- which is why current HS students are so much better than their precomputer educated parents. You will have begun the process in kindergarten and know how to do stuff most of us old folks don’t bother with. I found that office staff learned what they needed as technology changed. You will know how to write and edit a paper on your computer and do other things. Unless you have reasons to keep up what you learn in the classroom you will not retain it. Future employers’ tech departments won’t want you screwing up the company’s computers.</p>
<p>Unless you truly enjoy learning computer science don’t torture yourself with any college level courses. Techniques needed for various uses- scientific, business or writing et al will be taught in those fields. Most of us are end users- never having a need to write code.</p>
<p>You’re definitely capable of learning programming on your own - just use the online course websites, which include lectures. Many schools have their intro programming course online, such as Stanford’s CS 106A (available on YouTube), MIT’s 6.001, and Berkeley’s CS 61A. You don’t have to bother with any of the theory.</p>
<p>Your college likely has intro CS courses for non-CS majors. They typically include learning a language to some extent since that’s really a starting point to being able to do anything with CS. This sounds perfect for you. Check the course catalog for the description of the course and it should be pretty apparent. If not, check with an academic advisor.</p>
<p>Like wis75 said, you learn by doing. There isn’t much value to taking a couple of courses – you won’t be anywhere close to proficient because most entry-level courses emphasize learning the different control structures/variable types and not solving actual real-world problems.</p>
<p>It would be like learning the basic grammar/vocabulary rules for a foreign language and nothing else. You might be able to stutter a few fragments but writing a novel in it is a totally different thing.</p>
<p>Still, programming is becoming more and more accessible with each passing day. You can teach yourself a whole lot if you put your mind to it. The way I did it was set a goal in mind (i.e., i’m going to build wordpress without mysql) and worked my way towards it. It took me two years to achieve that goal, but i learned so much in the process.</p>
<p>If you aren’t interested in credit, multiple unies offer free online classes and intro to programming is one of them.</p>
<p>Thanks for the advice!</p>
<p>How much programming would I have to know for it to be useful? And how would I be able to prove that to employers once I’ve gained the proficiency?</p>
<p>Stanford says that once you take CS 106A (the intro programming course), you are capable of doing programming work for a company, and indeed a great many students graduate and go on to do programming work for companies, even if they never took anything more than 106. Of course, doing hardcore software development would require more training, but after taking the basic course, you know how programming works well enough that you can be hired to do it, learning more on the job if necessary.</p>
<p>If you don’t have any credentials to prove your knowledge, then typically either they rely on your word that you know what you’re doing (mostly non-tech companies, I would say), or for tech companies, they usually require you to solve programming problems in the interview. Companies like Google are famous for being really hard in their techy questions, but most companies aren’t that strict.</p>
<p>I’ve taken these intro to programming classes (albeit not at Stanford) and can say that you won’t be getting hired at google anytime soon if that’s all you took.</p>
<p>Tech company interviews can be very deep or very broad. If you say you know how to code on your resume, you’ll likely get an expert in whatever language you claimed proficiency in interviewing you.</p>
<p>After that, you might first get an easy technical question, like how to implement a binary search. Or to explain the difference between equivalence and identity. Pretty much if you fail this question you’re out the door. They can be pretty brutal – i once blanked out when asked about operator precedence. Its quite a stupid question because if you format your code well you should have parenthesis to avoid this problem in the first place, thus you never /really/ have to remember the actual order things get executed in.</p>
<p>After that most will give you a problem and see how well you solve it. i.e. finding the shortest distance between two points on a grid. Ultimately this is to follow your thought process and get an idea of your real-world ability to perform.</p>
<p>At any point of time you should be comfortable coding without a compiler to catch your errors. Writing the actual code should be second nature to you if you’re interviewing for a programming job – that’ll leave your mind free to ponder the algorithmic complexity of the solutions you’re proposing.</p>
<p>You’re probably not going to be at this sort of proficiency after an intro course. Of course the interview i outlined is quite common at tech-heavy companies like Google. If you’re not aiming for that sort of company, you’ll probably have a much more lax interview process.</p>
<p>Haha, I am aiming nowhere near Google or any sort of position where programming is my main job. (Maybe it turns out I’ll love CS though, who knows?) Right now, I’m trying to think of places where some basic programming skills could be a boost, just like how foreign language proficiency could be a boost too. If anyone’s curious, I’m planning on being an econ major or the like.</p>
<p>chaosakita, someone close to me has undergraduate and a masters degree in economics (not from prestigious schools) and over the years taught himself to program. He now has his own extremely successful economics firm.</p>
<p>My understanding is that the combination of programming skills and economics is very powerful in being able to apply your knowledge into a workable skill set. There are many people who know one or the other, but the combination is much rarer.</p>
<p>I think an intro (at least) CS course would be good for you for the reasons you stated - to at least have a basic literacy level and even to make you understand it well enough to consider taking more courses in it at a later time, possibly even after you’re on the job - especially in econ. If you take an intro course or learn the equivalent on your own, whichever works better for you, at least it won’t be just a big black box topic to you.</p>
<p>Udacity’s <em>free</em> online CS101 class will start again in April. It’s a seven week class that gets you programming right away in Python. The other students in the class will give you tons of support. I haven’t taken CS101, but I am taking the other Udacity course right now. It’s tons of fun.</p>
<p>Other people have mentioned MIT’s OpenCourseWare, but I wanted to reiterate that thinking. Just today, MIT released a new version of an introductory computer programming course:</p>
<p>
</p>
<p>[MIT</a> OpenCourseWare | Electrical Engineering and Computer Science | 6.00SC Introduction to Computer Science and Programming, Spring 2011 | Home](<a href=“http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/]MIT”>Introduction to Computer Science and Programming | Electrical Engineering and Computer Science | MIT OpenCourseWare)</p>
<p>OCW Scholar courses are especially well structured for self study. And the price is right</p>