Teaching myself a little computer science over the summer

<p>I recently declared computer science as my major, however, I'm coming in with little experience in programming. My high school did not have a computer science class so I do not have anyone to actually teach me it. How would you guys recommend that I teach myself?</p>

<p>I believe you said you were trying to learn Python. I’m not qualified to say whether that’s the best introduction language to programming. But, have you checked out a book from the library or looked for any on-line tutorials? You’ll be learning a lot more in computer science than programming but if you want to familiarize yourself with programming logic a book may be sufficient. It really depends how you learn. Do you have any intro programming classes the first year? If so, look for details on the class including required texts.</p>

<p>Not that python isn’t useful, but I would recommend learning to program in C. Check out MIT ocw and other online resources.</p>

<p>here ya go-
[Udacity</a> - Free Classes. Awesome Instructors. Inspiring Community.](<a href=“http://www.udacity.com/courses]Udacity”>http://www.udacity.com/courses)
[Udacity</a> - Free Classes. Awesome Instructors. Inspiring Community.](<a href=“http://www.udacity.com/overview/Course/cs101/CourseRev/apr2012]Udacity”>http://www.udacity.com/overview/Course/cs101/CourseRev/apr2012)</p>

<p>

</p>

<p>C is a terrible language to learn initially. Instead of focusing on things like variable and control flow, you’ll get bogged down by small syntax errors and incomprehensible compiler errors.</p>

<p><a href=“http://www.diveintopython.org%5B/url%5D”>www.diveintopython.org</a> is a decent Python resource.</p>

<p>I never much cared for Python, personally. I think I might remember reading a paper that compared several alternatives and declared Java one of the best-suited to learning (introductory) programming. No idea what the qualifications were, though.</p>

<p>Java is good for learning the concepts behind object oriented programming. Get [url=&lt;a href=“http://www.greenfoot.org/door]Greenfoot[/url”&gt;Greenfoot]Greenfoot[/url</a>] and/or [url=&lt;a href=“http://www.bluej.org/]BlueJ[/url”&gt;http://www.bluej.org/]BlueJ[/url</a>]. Greenfoot provides a framework that handles all the technical stuff and gives you a graphical “sandbox” to play with, and if you work from the examples provided it’s a great way to learn the basics of programming and make some fun little programs. BlueJ is a bit more advanced, but still a lot easier to work with than full-fledged development software, and you can do a lot more stuff with it than you can with Greenfoot.</p>

<p>Hmm, I would recommend starting off with C++ right off the bat. Personally, it makes a lot more sense to me to do most data structures in C++ than any other language. I don’t know of any programmers who are good at C++ but have had hard time switching to Java/C#.</p>

<p>I know many Java programmers (<em>cough</em> IT majors <em>cough</em>), however, who have had hard time switching to C/C++. Soooo, that being said, since you have very little experience in programming, I would suggest you start off with C++ with tutorials provided on MIT OpenCourseWare.</p>

<p>[MIT</a> OpenCourseWare | Electrical Engineering and Computer Science | 6.096 Introduction to C++, January IAP 2011 | Home](<a href=“http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-096-introduction-to-c-january-iap-2011/]MIT”>Introduction to C++ | Electrical Engineering and Computer Science | MIT OpenCourseWare)</p>

<p>I’d throw in my support for C++. Easy to start, one of the most useful and standard languages out there.</p>

<p>I started with java and learning python over the summer. I found that knowing java before hand let me understand how you can do some things/take things for granted in python that were more tedious in java.</p>

<p>I was also told that java and c++ are typical intro languages. Java handles garbage collection better while c++ is better with generics.</p>

<p>Try to find out what language your intro class will be taught in and that will probably be your best bet.</p>

<p>C++; see above responses</p>

<p>

</p>

<p>Not true. I was surprised that 3rd year college son got a job using Python and Java this summer and it pays very well.</p>

<p>

</p>

<p>If you have the guts then you can learn C/C++. But it will be very tedious and very frustrating if you don’t have the patience. Also, you will not be able to write graphics applications in couple weeks. You can get the fun with python or java right away.</p>

<p>Just keep in mind that it can take quite a bit of effort just to get over the initial hump of making anything happen at all with C++. I’m not aware of any “training wheels” type programs like Greenfoot for C++, so you have to dive directly into the deep end from the start. It’s true that once you do learn it C++ is probably the most valuable.</p>

<p>^ A lot of people will disagree with you.
I used C/C++ intensively in the 80s and 90s. It did not touch them in more than 10 years.
Many MIT computer science majors don’t use C/C++.</p>

<p>I recommend Codeacademy. Very user friendly and easy for beginners.</p>

<p>It starts with JavaScript (not the same as Java), which is something great to know if you ever want to play around with websites.</p>

<p>[Learn</a> to code | Codecademy](<a href=“http://www.codecademy.com/]Learn”>http://www.codecademy.com/)</p>

<p>True, C++ is great for learning. I don’t know of many companies that use C/C++ for the products. There’s a lot of demand for Java, Python, and C#/.NET developers out there… However, I would still start with C++ for learning purposes. Greatly pays off at the end.</p>

<p>There was one Reddit post today about programmers who are making 100+k and what languages they use most of the time, and most of the were indicating Java, Python, and C#/.NET.</p>

<p>Lol, Javascript…</p>

<p>

</p>

<p>Many companies, including large well-known companies use C/C++. Computing infrastructure companies that develop server-based technologies, mobile computing platforms, switches, routers, middleware, networking utilities, and so forth use it. Operating systems such as Mac OS X and Linux are mostly written in C. Virtualization and cloud computing platforms are written in C/C++. Graphics and games companies do a lot of work in C/C++.</p>

<p>

</p>

<p>No, but you can take an existing graphics application, the sort of thing you can find in open-sourceware, and add new functionality to it, improve its performance, fix bugs that others don’t have time to fix, etc. That type of experience is respected (in some circles), and can lead to building a career.</p>

<p>

</p>

<p>All those applications you listed are systems-level programming. In order words, those are all highly technical, low-level fields that require very technical and detailed knowledge; if a beginner tried to learn those, they would probably grow to hate CS so much they would quit (not to mention they wouldn’t make any progress).</p>

<p>Look, we’re talking about a beginner here. We’re talking about simple programs like… drawing shapes, tic tac toe, etc…
For a beginner, “tetris” and “pacman” are complicated programs.</p>

<p>Java and Python are the best programming languages to learn (I know, I tried learning with C first, but switched to Java). </p>

<p>Reason 1 is that you are able to hit the ground running. Java and Python are somewhat high level languages (not too high level) that really allow you to do some very instantly-gratifying things. GUI features are built right into the standard Java library (I also believe that Python has similarly easy GUI libraries, but don’t have any personal experience with them). You can start coding things like Tetris after maybe 2 months of Java. Good luck doing that with C, where syntactic issues can really bog you down. Don’t underestimate this benefit of Java/Python. The fact that you can do cool and visual things quickly with Java/Python really helps your motivation, whereas C/C++ can really frustrate you and turn you off from CS.</p>

<p>Reason 2 is that Java and Python are languages that will get you jobs after a year of programming. You can start doing all sorts of cool things - for example, you can start programming mobile apps with Java on the Android.
Quite frankly, you are NOT going to get a systems-programming job/internship that soon that requires that you know C/C++ because you will not have had enough systems architecture experience.</p>

<p>

</p>

<p>That is one reason why I suggested in another post that they take some open-sourceware and add some functionality to it, fix bugs, improve performance, etc.</p>

<p>

</p>

<p>Many people, myself included, were able to get systems programming internships and jobs because we got involved in open-sourceware. It is a way to get experience. A beginner can learn how to program in C/C++ with patience.</p>