Videos
I finished it !
It feels so good to see this, I've really enjoyed doing the exercises on Codingbat, makes coding fun and I can go at my own pace, do you guys have any other suggestions for websites similar to Codingbat but maybe a bit more advanced now that I have some decent starting knowledge ?
Thanks
I've been learning Java since last semester, and I would like to hear your opinions on CodingBat and Codeacademy.
I really enjoy CodingBat, there are a ton of questions and, while most of them are ridiculously easy (so far anyway), it really helps me get certain concepts drilled into my brain. I really want to get to the harder problems (completed both warm-ups, string1 and array1), but I'm a stickler for completing everything in order.
Once I finish with CodingBat for Java, I'm planning to start with Python in Codeacademy, then go back and do the Python section in CodingBat. I haven't used Codeacademy before, but one of my CS friends swears by it. Do you guys think it'll be comprehensive and good to learn Python through Codeacademy? I've never learned or touched any Python, but people tell me that it is VERY similar to Java. He also recommends Ruby, but we'll see as it'll take me some time to do what I'm already planning to do on top of school and work =P
So, what do you guys think about CodingBat and Codeacademy in general? Are they very good sites to learn programming? Does anything happen when you complete everything in CodingBat?
Oh, and someone else told me that if you complete an entire section in Codeacademy, you can pay like $30 for certification. Is this true, and if so, is this worth it?
Thank you guys for reading this. I really do have a passion for programming, and I'm hoping to get an internship next Summer (backpacking through Europe this Summer... HELLLLLLL YEAHHHHHH).
TL;DR: What do you guys think about the learning effectiveness of CodingBat and Codeacademy? What happens when you complete them?
Shortly speaking they could really give the beginner the understanding of basics of programming.
Disadvantage is that they operate with specific languages (JavaScript, or Java) and leave great gaps in the technical "knowledge". Not so long ago there was a question of a guy finishing CodeCademy about "how to attach javascript to a page" - thing which should be clear with almost any tutorial.
So you should not rely too much on them. They are nice but they will not magically make you even a junior developer :)
It's well known I run a programming bootcamp around these parts. The vast majority of our students use CodeAcademy before they come to our camp. In fact, we ask them to for a gentle introduction to basic syntax. By the end of week 1 we are amazingly far beyond what those sites teach. The comp sci grads that come through the program say we cover a semester every week... which is good, that's what we're going for.
Regardless, these sites do not teach you how to build real applications in a professional manner, they teach you specific syntax. If you want to learn with the goal of being employable, we have found it takes about 700 hours of deliberate practice. You get deliberate practice by having guided instruction. How do you learn to be an electrician? You apprentice yourself to an electrician. Same with plumbers. Doctors do residency. Etc.
I can go through a guided tutorial on how to build a cabinet, but I won't be a carpenter when I'm done. That all being said, if you are interested in becoming a programmer, I highly recommend them as a way to dip your toe in the water and figure out if you even like it. Being a great programmer requires a lot of time spent honing your skills outside of work, and if you don't like doing it, you'll never be good at it.
I don't think such a site exists and I doubt it ever will. The reason is that C++ is huge - and I mean reeaallllyyy huge.
When you start to write C++ code professionally (that is, 40hrs per week) and take 1 or 2 hrs for learning new stuff about C++ every day (that is, 5-10hrs per week), reading books and articles, you will need months, if not years, to become a real professional C++ programmer - unworldly presuming your job doesn't require you to learn any 3rd-party APIs, new tools, technologies, and whatnot, which will distract you from learning C++.
For several years, I have taught C++ to students who already had one year exposure to Java. In 4-5 months, 12-15 lectures, and at the very least twice that time in the lab, I've managed to drag them from "Hello, world!" all the way to a short introduction to template meta programming. Everyone who know all of the area covered by that span will tell you that, after this, they'd still be bloody novices.
(Heck, I'm using C++ for >15 years, earn my money writing C++ code >10 years, and still learn new stuff about it almost weekly. And that's not even considering the huge amount of stuff dumped over us by the new standard, which has been "just around the corner" for several years).
Due to the sheer size of the territory to cover in order to learn C++, and also due to the fact that C++ is old enough that its programmers can be categorized into several generations when it comes to which standard idioms and "best" practices they learned, and finally because (again due to its incredible hugeness) new techniques are constantly discovered and evolving (template meta programming, now a very important feature of C++, was an accident nobody had planned for), the C++ community's opinions on idioms and practices isn't as compact as, say, the Java community's, and can hardly be communicated as a set of a few dozen rules without arousing heated discussions.
(I think the fact that there are several different very good and recommended Best Practices books listing several dozen rules of thumb each, and the fact that some of them managed to later acquire a supplementing More Best Practices book, literally speaks volumes about this.)
You will find many professional C++ programmers who happily use only 30% of what C++ offers. For example, many use it just as an OO language, missing out templates (maybe except for the STL), exceptions, and other very useful stuff. But C++ is a multi-paradigm language. It supports object-oriented programming as well as generic programming, generative programming, a lot of functional programming stuff, and quite a few other paradigms. And it becomes most powerful where those paradigms are combined.
So what's my advice?
Have a look at The Definitive C++ Book Guide and List.
First make your pick from the beginner's books. Since you say you already had exposure to C++, I'd recommend Accelerated C++ by Andrew Koenig and Barbara Moo. That's an excellent introduction which can't be praised enough for the way it changed teaching C++, but it comes with quite a steep learning curve. Also, with 250 pages, it's really just a short introduction.
An alternative to that would probably be either Stanley Lippman's C++ Primer (which, at 1000 pages, covers the same ground in detail) or Bruce Eckel's Thinking in C++ (which I don't know) or Bjarne Stroustrup's classic The C++ Programming Language (also 1k pages) or his newest book, Programming - Principles and Practice Using C++ (which I haven't looked at yet).
These books come with enough tasks to keep you busy for a while. Add a few of your own to that and you can be busy learning for months.
Then slowly work your way down the list.
The next C++ standard, now generally expected in 2011, will add a few challenging concepts to the language (like rvalue references) and a vastly expanded standard library. (The current draft has almost twice as many pages as the last one.) Unfortunately, since the standard isn't yet finished, there are no books available teaching it. It's all spread out in articles and in online discussions (although Wikipedia has a pretty good article about it), and it's all meant for fluent C++ programmers, not for C++ novices. There is, unfortunately, not a single text out there teaching C++1x to C++ newbies And I'm afraid it might take years before you can make your pick between several recommended books doing this.
And don't forget the C++ FAQ, which is a pretty good (and very readable) online collection of best practices (and their rationals), although it's by no means an introductory text.
There is no substitute for practice.
Find a program you want on your machine (maybe as simple as something that counts the number of lines in a project), and write it in C++.
I wish I could tell you that I have an awesome resource that shows you every C++ trick in the book, but truth be told, you are that resource.
Practice. Learn from your own mistakes. You are your best teacher.
Hi all I'm attending a university taught boot camp in the fall, but I'm taking the summer to self learn and educate myself as much as possible. I've started with python and after becoming comfortable with the basics I learned about codingbat. I'm able to do a lot of the exercises on there (but not all), and I was just curious as to how accurate a representation the questions on there are compared to what you would see in a real world interview?