<p>After this semester, I will start the introductory courses as a CS major. Having read some of the threads where individuals commented on the "weed out" aspects of this major, I feel that it's important to "bone up" and hit the ground running, per say.</p>
<p>I've purchased a number of logic games and mathematical reasoning books to prep my mind, but I also have experience coding websites as a web designer. I also plan to purchase some supplemental mathematics books to assist me in being successful with the higher level math courses I'll have to take.</p>
<p>What else can do to hit the ground running as a CS major?</p>
<p>Please no sarcastic or irrelevant comments, please.</p>
<p>What language will be used in your introductory programming sequence? You could get a compiler and IDE for that language, and start writing programs in that language. There’s nothing for writing programs, other than writing programs.</p>
<p>Web scripting isn’t going to be much help, particularly if you’re talking about markup languages.</p>
<p>You’ll probably be using C++ or Java, depending on where you go. It shouldn’t be hard to start writing programs in these languages in fairly short order. I’ll take it upon myself to help you get all the (free) software you’ll need and even recommend some reading / exercises.</p>
<p>As far as the math/theory goes… I would recommend getting good with logic, proofs, and some basic counting techniques and graph theory. I can do the same for this as for the programming.</p>
<p>Good luck!</p>
<p>You should find out which operating system and IDE your class will use and get that installed on your computer. Ultimately, as AuburnMathTutor has said, the main thing is writing programs. And that means actually writing programs, not using a visual editor to cobble together forms and actions, and not just cutting and pasting code you find on the internet together (at least not without understanding what the code actually does). It is a good idea to write in the language that will be used in your class, but not really necessary. Any programming experience will help.</p>
<p>You can easily install Ubuntu on your current computer and work with an IDE like anjuta, or even just write your programs in a text editor (a good one with highlighting helps a lot). I think it would be easier to switch from anjuta to visual studio than to go the other way. So even if your introductory courses are taught on windows with visual studio you might want to just start with anjuta.</p>
<p>The book used in my Intro to CS class was Starting out with C++ by Tony Gaddis. People seemed to like it. Though I never read it myself because I have a bad habit of not reading my textbooks.</p>
<p>For math maybe check out some classes on open courseware. </p>
<p>By the way, your exams in a CS class will most likely involve writing programs with pencil and paper and no access to any reference material. This is why I say you should only be hand coding your programs, and you should hand code every piece. Your IDE may start with a template that has the skeletons of a program already in place, but if you use that you will probably forget things when you are taking a test. That was the biggest mistake I saw in my class last semester. Even though our prof said repeatedly that people should always start from scratch hardly anyone did. The people who were completely new to programming were especially bad about this, which doesn’t really make sense to me, but whatever.</p>
<p>If you want a good grade, don’t blow off the pseudocode. A lot of people in my class did, which is probably why so many people failed. If you are throwing away a third of your points on every lab, you are not giving yourself any room for error on your exams.</p>
<p>I’m curious why you have chose CS as a major?</p>
<p>Honestly, the ONLY thing you need to prepare yourself for is working a lot. You will be spending a lot of hours in front of a computer shouting various obscenities as your code won’t compile or just isn’t quite working the way it “should be.” You will have plenty of opportunities to learn all the specific material during the semester, just make sure you’re ready to learn it.</p>
<p>…</p>
<p>Having some familiarity before the semester starts can only help.</p>
<p>“Bone up”? “Per say”? What the hell?</p>
<p>If you want to prepare for CS, write a crap load of code on paper.</p>
<p>Yes, I believe the correct spelling is “Per se”.</p>
<p>Writing code on paper first is good, but it’s important to program it into a computer and make sure it works… especially early in the CS undergraduate curriculum.</p>
<p>You will most likely go through two intro classes. The first intro class is usually one in which you learn the basics of a programming language and explore it. It will not go very in-depth and you will probably not find it to be extremely challenging. Many of these CS I courses touch upon a lot of areas, including graphics and GUIs. There will be some challenging assignments (for example, recursion), but if you’re determined enough and spend appropriate time on the class, you should get by just fine. </p>
<p>The second intro class is where all the math/logic stuff will start helping and this is the one that many find to be the weed-out. This class is usually called something similar to “Data Structures” and is much more theoretical in nature, covering arrays, trees, and various search/manipulation algorithms. It will be more challenging than the first since it will involve a lot of abstract thinking. </p>
<p>You’re doing the right thing. Keep at it!</p>
<p>Learn how to think in flowchart form</p>
<p>“Learn how to think in flowchart form”</p>
<p>Hmmm… I don’t think this is what modern CS tends to focus on.</p>
<p>Maybe for modeling algorithms or something. I think reading a quick intro to UML would be better if you recommend modeling as a starting point. There’s some merit to that suggestion.</p>
<p>
</p>
<p>Interesting. I usually do a little prep before the new semester. It isn’t something that I necessarily do for every class, but if I think it would be to my advantage to learn a little bit ahead of time I try to do at least that.</p>
<p>
</p>
<p>LOL, I totally suck at flowcharts (and outlines) and do just fine.</p>
<p>I never found preparing for classes to be too useful in general and for programming it seems even less useful since you’re most likely going to be spending a TON of time with the code either way, so the opportunity to learn it will present itself. The biggest problems with self-study, IMO, are most people lack the motivation to actually make meaningful progress over a summer and making sure you study the right material. While obviously some of the fundamental concepts carry over from language to language, spending a bunch of time learning about pointers in C is probably not a good use of time if you’re going to end up taking a class that uses Python.</p>
<p>If he knows which language the class will use (most people do know this ahead of time…) then your last objection doesn’t really hold water. I remember when I was taking the intro programming classes, you knew well ahead of time what language would be used. Also, C++ and Java have such a similar syntax, knowing one will make the other a little easier. The OOP principles and procedural style also carry over.</p>
<p>I, like Posh Girl, usually do a little light study ahead of time for classes. Nothing strenuous, mind you. But knowing how to write, compile, and execute a “Hello World” style application in the language … and knowing it well … is a fundamental part of actual programming. After you’ve got that down, it’s all just adding some I/O, loops, and if statements.</p>