programming and the real world

<p>I just finished an online college level java class. Last year I took a year long scheme class. And now, I really want to "do" something real world with java so I can get better at programming. I know I can always do usaco stuff but I would like to do something that helps someone in the real world. ANy ideas? Also, are there any other online classes I could take in java or is practice the best way to get better? Anyone got any ideas?</p>

<p>can't help but am bumping you up .</p>

<p>Courses in Object Oriented Programming practises, software engineering practices, algorithms would help you out. Look at course offerings in your university. I don't know if you are interested in the theoretical aspects of computer science but they help too. </p>

<p>If you are not a college student then look at online offerings at other places that offer such courses.</p>

<p>In general learning Java itself or another programming language does not help that much in your becoming a good programmer. Learning techniques in object oriented programming helps. Look at books written by people like Marshall Cline, the 'Design Patterns' book by Gamma, Helms, Johnson, Vlissides etc. I found the 'Design Patterns' book immensely useful. I know there is more recent stuff out there, I haven't looked at them recently. Look at books on algorithms (I need to go home to give you references). </p>

<p>If you want to do something, there are projects by the Free Software Foundation and GNU that are available to do. Here is a link to FSF and the GNU task list. Many people start here. There are many interesting projects to contribute to:
<a href="http://www.gnu.org/gnu/thegnuproject.html%5B/url%5D"&gt;http://www.gnu.org/gnu/thegnuproject.html&lt;/a&gt;&lt;/p>

<p>Take a look at this site:
<a href="http://www.nist.gov/dads/%5B/url%5D"&gt;http://www.nist.gov/dads/&lt;/a&gt;&lt;/p>

<p>This could be starting point for researching where to get books and information on algorithms which are part of every programmer's toolkit.</p>

<p>I have this book at home. Find it helpful:
<a href="http://www.cs.sunysb.edu/%7Ealgorith/implement/sedgewick/implement.shtml%5B/url%5D"&gt;http://www.cs.sunysb.edu/~algorith/implement/sedgewick/implement.shtml&lt;/a&gt;&lt;/p>

<p>One of the large programming houses had a special center in Boulder for OO work. The Director of the center had an interesting philosophy for hiring OO programmers. It was an extreme one, but one that I agreed with wholeheartedly. He would not hire programmers. Instead, he would hire engineers and teach them OO techniques using SmallTalk. SmallTalk was a TOTAL OO environment (unlike C++ and Java), where even numbers and characters are objects and even the compiler itself is an object. </p>

<p>But since none of the actual work of the center was in SmallTalk, once they could program in SmallTalk, he then had them take C++ courses. But his reasoning was that engineers did not think in "programming" terms, but already had an object oriented view of the world. It was easier to teach them programming than it was to de-program bad habits of the programmers!</p>

<p>As a former electronics engineer (my major in college), I agree!</p>

<p>I want to put in a plug for USACO. The training materials are great. It's interactive, so you find out immediately how well your program ran. It isn't particuluarly "real world" problems, but it will really build up your programming skills and your knowledge of algorithms to tackle more compex problems wherever you find them. The training materials are interactive. It's a great program. And younger kids are favored in camp selection, so an 8th grader who did reasonably well in the internet competitions would have a very good shot at a free training camp at some point. Camp is great. I know of people who have done various training camps, and the USACO one is considered one of the most fun. Camp also gives the best student programmers in the country an opportunity to get to know each other. Most of them learned to program on their own rather than through their schools. And the coaches are great!</p>

<p>No training materials, but another contest people might be interested in is <a href="http://www.topcoder.com/%5B/url%5D"&gt;http://www.topcoder.com/&lt;/a> It is geared towards working programmers rather than students (although plenty of students do it), and is used as a recruiting device by companies, so the problems are less abstract than USACO problems. You can also win money (but you have to be over 18).</p>

<p>Texas137, where do kids start who want to learn about programming, but have no real knowledge. I know that it is learning by doing, but where can they get the very basics?</p>

<p>If you are a college student, absolutely nothing beats an internship with a real company. Our company (defense contractor) puts college interns to work with the regular software engineers. You produce real code, integrate, and test it. After a semester or two with us, they all say that college programming courses are a cake walk. Get your first programming courses in your freshman year, then sign up for work study or a summer internship, do it now.</p>

<p>Cangel, if you are talking about a HS kid, high schools have programming courses. That would seem like a starting point.</p>

<p>He's an 8th grader, I'm not sure his small high school has any programming courses, I'll check. I know there are a lot of commercial online things for adults, what are some reputable ones?</p>

<p>Cangel, I think texas137 or someone else may be able to help you there. I did not go to HS here and I don't know of courses for youngsters. My son was never very interested in this. I had Visual C++ and Borland at home and tried to teach him when he was in 7th grade (or 8th?). After a while he was bored. </p>

<p>But if he is interested, it is a fantastic hobby. And it sucks you in...you get addicted.</p>

<p>I agree with the Texas outlaw (bandit_TX). You cannot get real world experience on your own, online or from books. A job - especially with mentors - is invaluable.</p>

<p>For an 8th grader that is motivated to do it on his own, buy a copy of Visual Basic and one of the self study guides specific to Visual Basic. The 'for Dummies' books are decent. A close friend and co-worker, Stephen R. (Randy) Davis wrote C++ for Dummies and some of the Microsoft guides.</p>

<p>A job is certainly a reasonable idea for older teens. But that may not be a reasonable choice for someone unusually young.</p>

<p>Cangel - my husband is an electrical engineer, and introduced my son to a few little programming things informally, like Visual Basic and some HTML, when he was elementary-school age. He also had quite a few educational computer games at a very young age that involved little pre-programming exercises. I remember the Dr. Brain series in particular. He learned Logo (a very primitive language) at a Futurekids robotics camp when he was in about 5th grade. Then he had a great computer game by Interplay called "How to Program Basic - jr. high edition" in about 6th grade. It was lots of fun, very educational, and I highly recommend it, but it does not seem to be produced any longer. Then he got Lego Mindstorms in 7th grade and used the CD that came with it to learn the simple language used by that system. His first "real" programming language was C++, which he learned at a Duke TIP summer camp after 7th grade. That was 6 hours a day for 3 weeks, so probably equivalent to a one-semester college course. That gave him enough background that he could access the usaco training materials, which really emphasize algorithms rather than teaching coding. He spent 8th grade doing the usaco training materials, and got a 5 on the AP comp sci AB exam at the end of 8th grade. Also in 8th grade he visited an AP comp science class for a day at our local math/science magnet high school. The school is very well regarded. He found both the AP course and the exam to be pretty dinky compared to what he already knew from the Duke course and the usaco training materials. He made it to usaco camp at the end of 8th grade. By the end of 9th grade he had been through all of the training material 2 or 3 times and pretty much exhausted it. But he was also a phenominal programmer by then. He started attending training sessions with the local university computer programming club in 10th grade. The first year he competed with them for a spot on their ACM team, he came in 1st, competing against college CS majors and CS grad students. I give all of the credit to the usaco training materials. I really cannot recommend them highly enough once a student has learned the basics of programming.</p>

<p>I find kids who have a special talent for this sort of thing to be extremely interesting. I enjoy reading the little bios on the kids who make it to usaco camp. It seems like they all started messing around with computers while they were in diapers and start programming in elementary school with no actual formal instruction. Here's a link to the 2003 finalists if anyone else would enjoy the bios. (they didn't do bios in 2004 for some reason. But you can look at bios for earlier groups).</p>

<p><a href="http://oldweb.uwp.edu/academic/mathematics/usaco/2003/camp/camp.htm%5B/url%5D"&gt;http://oldweb.uwp.edu/academic/mathematics/usaco/2003/camp/camp.htm&lt;/a>
(click on "finalists")</p>

<p>Cangel, my son started programming with Scheme 2 years ago. I suggested scheme because at MIT they use scheme to teach their programmers. The book is online.Structure and interpretation of computer programs. I then went to eimacs.com. and was told that their scheme course was based on the MIT book. So my son took the class. He loved it.Then he wanted to do usaco materials but scheme is not a language used. He had to learn java. Our local cc had an online java class which he just finished. I suggested he post to this board so he could find out what he should do next. I don't know anything about programming or what he "should" learn, so I can't advise him. Our cc offers 3 online classes next semester.Intro to visual basic;intro to html; c language programming. Would any of these be any good to take?</p>

<p>australis - (are you and your son both posting under the same user name?) I don't know anything about programming either, but it sounds like our sons might be similar kids . My son gets asked questions like this fairly often. He would definitely say to take a C/C++ course next, unless your son is interested in web-design (my son isn't). The international competitions use C/C++ or Pascal, and do not support Java (although that might change now that the AP exam has gone to Java), HTML, or Vis Basic. Interestingly, the US and Asian competitors tend to program in C/C++, but the Europeans tend to use Pascal.</p>

<p>html would give the biggest bang for the buck, because the results are so useful immediately. Let your son have his own website (lots of places have free or inexpensive hosting), and let him use html to really be creative. Not only does he see the results, but it's also "published" to the world, and that's a huge incentive to continue. And there are a lot of directions to go: Flash, PHP, Javascript, PERL, SQL, and lots of things that would enhance his site and allow him to continue learning.</p>