<p>I'm going to be a freshman in September, and I want to major in computer science. However, I don't have any experience/ knowledge in programming or whatsoever ): Anyone has recommendations on what books/ materials I can study and familiarize myself with during summer?</p>
<p>I’m trying to teach myself to program in Python this summer. Not sure if it’s the best use of my time, but it’s pretty interesting even though I have been slacking off.</p>
<p>There are a lot of good resources out there. I’m using Lean Python the Hard Way, which is a free Ebook. I’m also using the videos that go with it, which were $30 (a gift), and I have to say that if I were starting again I would pay the $30. </p>
<p>Khan academy has videos on it for free too. Last I messed with them was years ago. Back then they were lacking and unsupported with much else, and there wasn’t a lot of “here, go do this on your own,” which I really like. But I’ve heard it’s improved. </p>
<p>There is also MIT OCW I assume. Lots of options if you want a head start on the coding itself. </p>
<p>I recommend that only because a) it’s actually fun so whatever you learn is really more of a perk than anything and b) I hear CS takes nearly a semester before they start actually writing programs anyway. </p>
<p>I don’t recommend doing too much math prep or anything, just because learning math is so much faster if you do it with a proper class, and not a strong chance you’ll have a fun summer buried in calculus or w/e.</p>
<p>Do one of those online programming study things like the guy ^^^ mentioned. But also strengthen whatever math skills aren’t sharp. You will be glad you did. Also, start paying attention to the CS world and what people are saying about software design principles. Follow blogs and see what people have to say about Java, .NET, assembly, etc. Study the history of CS.</p>
<p>Codecademy (looks spelled incorrectly, but is not) has some good courses in a lot of different languages. You certainly aren’t going to learn Discrete Math,and I don’t think it has any assembly lessons, but it is a good way to get started with some of the more common high level languages. As far as first language goes, python is a pretty good one. High level, close to English, relatively commonly known, etc. makes it much more approachable than C++ or Java. Though those two are certainly very important, don’t think that since everything you read involving coding for a living revolves around either those two languages or niche languages that they are the best to start with. </p>
<p>I also really like project euler. The python tutorials on Codecademy may teach you what certain things do, but doesn’t have any truly hard projects to do (it basically walks you through them). PE is computational math. You will learn how to problem solve (often through brute forcing, though) and evaluate difficult problems.</p>
<p>MIT OCW has a discrete math course. You could go through that while you’re doing the programming.</p>
<p>Buddy up with another kid going to CS and do the projects together. You’ll be surprised how well two people can figure things out together…</p>
<p>You could take some MOOCs on coursera, I learned some VB over my break.</p>
<p>Does Codeacademy cost money? I’m definitely interested in getting a CS background over the summer.</p>
<p>Nope, it’s free. You could, yaknow, just go on the website and check, though.</p>
<p>Codecademy and indie-resource are what i’ve using to learn languages. IR is a message board, you’ll have to google the URL and what, wouldn’t want to get in trouble here, but it’s got alot of great tuts and a great community. Codeacademy also has a bunch of tuts to get your feet wet in several languages. Both are free, obviously</p>
<p>Codeacademy is not a good place to start. I feel like people would learn better by learning C++ or C first. Then after you learn those well, learn python, javascript, and a few other technologies and make a big project. Don’t study the CS material that goes after CS101 class, those would take you almost an eternity to learn plus you won’t learn those as well as you would in a class. Even discrete math which is not that hard would take a lot of time and won’t be as enjoyable as doing projects</p>
<br>
<br>
<p>That depends on what you enjoy doing.</p>
<p>^ Yes, it is relative but most people probably find programming more enjoyable. Discrete Math is very important but you would need a very strong aptitude to learn it. The OP will probably be better learning programming first and then maybe discrete math before taking the class (which won’t be on the first semester), he will probably thanks himself later on for learning these 2 subjects very well</p>
<p>Learning how to program reliably well in any C-style (curly braces, ==, semicolons, etc.) language before starting college will make succeeding in CS, and this is a somewhat conservative estimate, one bajillion times easier than it might otherwise be.</p>
<p>^True, I can’t count the number of people who dropped CS because they forgot most of the programming they learned in class lol. But without knowing Discrete Math, you will be in a very bad position too.</p>
<p>^ I am definitely a big proponent of the importance of math in CS. That said, to really get the most out of discrete math might require more mathematical maturity than the typical high school student has. However, I agree it couldn’t hurt to start looking… just that, initially, the payout might favor focusing on getting programming out of the way.</p>
<p>A fair amount of a first semester in discrete used to be taught in high-school though to a deeper level. I think that someone with a proof-based geometry course in high-school shouldn’t have much trouble with that area in discrete.</p>
<p>I have a bunch of discrete math textbooks at home and one of them is aimed at high-school students though it could be used in a college course too.</p>