I've currently hit a plateau and want to get better at coding in C and Java. I want to improve, but I think I hit a plateau on my learning curve. I can't find any "advanced" tutorials on the net; most of the things that are introductions that I already know. I don't really know where to go from here to get better. How do I get past the plateau? Would reading through the Linux kernel's source help? Is there a site, or something with advanced exercises or tasks to do? Not something that requires expert knowledge, and nothing basic, but something in the middle. Something with programming puzzles or riddles, that take a couple of hours at most, but not months.
By advanced, I mean that I already know the syntax pretty well. I haven't mastered it, and still make mistakes here and there, but I wouldn't be completely useless without my IDE of choice (Eclipse). In Java, I have a basic grasp of collections, the Swing library, and the JDBC library. I also have some basic experience with ant and junit. I can make basic 2D games, and utility programs with local database connectivity. I'm reading up on Java's sound API.
As for C, it's pretty rusty. I do know the syntax, and know how to use make, but I don't know many libraries. I've tinkered with sqlite3, and made a simple pacman type game that runs on a win32 console a few years ago, but I never really advanced past the basic syntax. Also, I recently learned about function pointers.
Basically, I've gotten the lessons most books have in their first few chapters, but don't really know where to go from here. I am aware that the best way to improve is to code, but I don't really know what to code. I don't really want to keep making the same kinds of programs again and again, but I can't think of any short, but new project.