Related
im a noob to programming and since school is now over i would like to get started with some android dev. But first want to learn a Computer language, which one would be ideal for Android Dev?
It's not hard at all I don't know any languages and I made my own rom I have advanced knowledge in cmd though, but I guess if you had to pick on I see a lot of XML documents so try that.
c++ hands down.
EDIT:
Wait didn't read all of your post.
Android apps are written in Java...end of story.
There is a MonoDev thingy somewhere that lets you write in C# and convert...but I am not sure how well that will work.
To get started in programming and actually have a comprehension of what you are doing. c++ and console apps.
You can't do GUI until you understand what is going on in the background.
EDIT #2:
Beers are getting to me, and I am gettin lng winded.:
Google Dev site has a VERY good tutorial on setting up Eclipse (The prefered Android Dev IDE) and also some decent tutorials on writing an app.
Hello World doesn;t count in Android, Elcipse write the whole dam program for you by detalt.
english ftw
Kcarpenter said:
c++ hands down.
EDIT:
Wait didn't read all of your post.
Android apps are written in Java...end of story.
There is a MonoDev thingy somewhere that lets you write in C# and convert...but I am not sure how well that will work.
To get started in programming and actually have a comprehension of what you are doing. c++ and console apps.
You can't do GUI until you understand what is going on in the background.
EDIT #2:
Beers are getting to me, and I am gettin lng winded.:
Google Dev site has a VERY good tutorial on setting up Eclipse (The prefered Android Dev IDE) and also some decent tutorials on writing an app.
Hello World doesn;t count in Android, Elcipse write the whole dam program for you by detalt.
Click to expand...
Click to collapse
ok so java is the way to go, then from there learn c++ ??
did not know that google mobile apps where created using JAVA.
cool...
Kcarpenter said:
c++ hands down.
EDIT:
Wait didn't read all of your post.
Android apps are written in Java...end of story.
There is a MonoDev thingy somewhere that lets you write in C# and convert...but I am not sure how well that will work.
To get started in programming and actually have a comprehension of what you are doing. c++ and console apps.
You can't do GUI until you understand what is going on in the background.
EDIT #2:
Beers are getting to me, and I am gettin lng winded.:
Google Dev site has a VERY good tutorial on setting up Eclipse (The prefered Android Dev IDE) and also some decent tutorials on writing an app.
Hello World doesn;t count in Android, Elcipse write the whole dam program for you by detalt.
Click to expand...
Click to collapse
Julianmgn said:
ok so java is the way to go, then from there learn c++ ??
Click to expand...
Click to collapse
C++ should be anyones first language. It forces you to use your head and the compiler does very litte for you.
If you don't have any care to do any other type of programming your life..or make a career out of it...sure just learn Java...
Theory works the same for all languages...but C++ forces you to be a [email protected] Very unforgiving...more forgiving than plain C...but still.
Kcarpenter said:
C++ should be anyones first language. It forces you to use your head and the compiler does very litte for you.
If you don't have any care to do any other type of programming your life..or make a career out of it...sure just learn Java...
Theory works the same for all languages...but C++ forces you to be a [email protected] Very unforgiving...more forgiving than plain C...but still.
Click to expand...
Click to collapse
thank you sir you've been most helpful and i do plan on making a career out of this...i just wanted to know what i should start with to put my foot through the door...thanks
Kcarpenter said:
C++ should be anyones first language. It forces you to use your head and the compiler does very litte for you.
If you don't have any care to do any other type of programming your life..or make a career out of it...sure just learn Java...
Theory works the same for all languages...but C++ forces you to be a [email protected] Very unforgiving...more forgiving than plain C...but still.
Click to expand...
Click to collapse
Completely agree. My first formal language was C, then C++. Do object oriented C++ first, because it will make you appreciate Java. I am a Java/J2EE dev, but my data structures class was in OO C++ and I am thankful for every day I can write Java and not have to worry about pointers, memory allocation and segmentation faults. I have done some embedded C, which is the other end of the spectrum cause you are doing everything by direct addressing of memory, which is also kinda fun.
If you want to go straight into Android development, than yes you can make the jump to Java, and the SDK does allow for both XML based UI design, and Swing-like. Just make sure you read up on garbage collection within the JRE(Make sure you understand what weak and soft referances are) and also there are some talks from Google IO in the past years that touch on some good practices.
BTW, XML is not a programming language, it is a markup language. It is most commonly used in serializing data, mostly because it too is object oriented. One alternative to XML that is becoming more popular due to the increasing amount of AJAX applications is JSON. Also, if you do any XML parsing, make sure you know the difference between a DOM based parser(JDOM) and an event-based parser(SAX), using the right one can drastically increase performance.
lineman78 said:
Completely agree. My first formal language was C, then C++. Do object oriented C++ first, because it will make you appreciate Java. I am a Java/J2EE dev, but my data structures class was in OO C++ and I am thankful for every day I can write Java and not have to worry about pointers, memory allocation and segmentation faults. I have done some embedded C, which is the other end of the spectrum cause you are doing everything by direct addressing of memory, which is also kinda fun.
If you want to go straight into Android development, than yes you can make the jump to Java, and the SDK does allow for both XML based UI design, and Swing-like. Just make sure you read up on garbage collection within the JRE(Make sure you understand what weak and soft referances are) and also there are some talks from Google IO in the past years that touch on some good practices.
BTW, XML is not a programming language, it is a markup language. It is most commonly used in serializing data, mostly because it too is object oriented. One alternative to XML that is becoming more popular due to the increasing amount of AJAX applications is JSON. Also, if you do any XML parsing, make sure you know the difference between a DOM based parser(JDOM) and an event-based parser(SAX), using the right one can drastically increase performance.
Click to expand...
Click to collapse
thank you sir's, i will then start on c++ right away lol...well tomorrow haha
yeah cuz this is my career path of choice and i now know how to get started thank u lol
If you wanted to get started in programming apps for Android then you might as well start with Java since that is what it uses and will get you going the quickest.
If programming is something you would like to pursue then I would recommend a slightly different longer route.
First and foremost is stay away from doing anything visual. You want to just program console apps. The visual GUIs come later after you have an understanding of programing and it will only confuse you this early on.
For a complete newbie I would recommend playing around with some form of BASIC. You don't really need to but I feel it helps to start understand the ideas of programming.
From there I would highly recommend regular old C. C code will actually work in C++ but I recommend C so that you stay away from some of the stuff in C++. Mainly the Object Oriented parts of C++.
First you need to learn about data types, variables, arrays, loops, and functions.
After that then I would recommend jumping into C++ for a little bit to program some classes. Just to understand classes a little bit. Then I think move over to Java to start to fully understand object oriented programing and learn more about problem solving, algorithms, recursion.
And then after that... well, by that point you probably will know where you should be headed but it will probably involve going back to c/c++ for some more advanced programing, optimization, a better understanding of how everything works down to the compiler and OS level interprocess communications.
centran said:
If you wanted to get started in programming apps for Android then you might as well start with Java since that is what it uses and will get you going the quickest.
If programming is something you would like to pursue then I would recommend a slightly different longer route.
First and foremost is stay away from doing anything visual. You want to just program console apps. The visual GUIs come later after you have an understanding of programing and it will only confuse you this early on.
For a complete newbie I would recommend playing around with some form of BASIC. You don't really need to but I feel it helps to start understand the ideas of programming.
From there I would highly recommend regular old C. C code will actually work in C++ but I recommend C so that you stay away from some of the stuff in C++. Mainly the Object Oriented parts of C++.
First you need to learn about data types, variables, arrays, loops, and functions.
After that then I would recommend jumping into C++ for a little bit to program some classes. Just to understand classes a little bit. Then I think move over to Java to start to fully understand object oriented programing and learn more about problem solving, algorithms, recursion.
And then after that... well, by that point you probably will know where you should be headed but it will probably involve going back to c/c++ for some more advanced programing, optimization, a better understanding of how everything works down to the compiler and OS level interprocess communications.
Click to expand...
Click to collapse
that makes sense...thank you sir very helpful but do u think it would be ok if i just jump into C then C++
Julianmgn said:
thank you sir's, i will then start on c++ right away lol...well tomorrow haha
yeah cuz this is my career path of choice and i now know how to get started thank u lol
Click to expand...
Click to collapse
Don't bother trying to figure out any of the C++ graphics languages, just do some programs with command line interfaces. I would also suggest that once you figure out the basics that you concentrate on object oriented C++ as it will make for an easier transition to Java, but you should also learn the difference in pass by reference and pass by value, which also involves learning about pointers. Also, learn make early on as it will make compilation easier. The Java equivalent to make is Ant when you get there.
This seems to be an okay book to get you started.
I wouldnt suggest working on all data structures, concentrate on some of the more common ones like linked lists and b-trees. In Java, a lot of these are already implemented, but it is good to know how they work. If you want a real challenge try and do a skip list. It is very difficult, but if implemented correctly you should be able to take a file filled with millions of data points of randomized data, read it in and index it for instantaneous search in under a minute.
Julianmgn said:
that makes sense...thank you sir very helpful but do u think it would be ok if i just jump into C then C++
Click to expand...
Click to collapse
That should be fine. Stick to C to learn the basic stuff and then you can then learn some of the object oriented stuff in C++ like classes. That will help you when you move over to Java. You can then start to learn the more complicated stuff.
Like lineman78 said, Java implements some complicated data structures like stacks and linked lists and a bunch of others. Do not use those! When you are making the leap from C++ to Java you are doing so to learn to code those things for yourself.
Oh, and don't let people put you off to C. If you are sticking to the very basics I feel it is a good way to start. Then after you learn a bunch of stuff you can come back to C to learn some of the harder stuff.
centran said:
That should be fine. Stick to C to learn the basic stuff and then you can then learn some of the object oriented stuff in C++ like classes. That will help you when you move over to Java. You can then start to learn the more complicated stuff.
Like lineman78 said, Java implements some complicated data structures like stacks and linked lists and a bunch of others. Do not use those! When you are making the leap from C++ to Java you are doing so to learn to code those things for yourself.
Oh, and don't let people put you off to C. If you are sticking to the very basics I feel it is a good way to start. Then after you learn a bunch of stuff you can come back to C to learn some of the harder stuff.
Click to expand...
Click to collapse
thank you and to all of u for ur help...C it is then C++ then java lol
These are my sole opinions and no one else's, take this as you will.
With programming, you shouldn't be bound to a specific language when you first begin; rather you want to learn the semantics and syntax of programming. Whether you start with C++, C, or Java shouldn't make too much of a difference, especially since all three languages are essentially all derivatives of each other.
Java is the highest level language and as such is considered to be a standard language all CS/MIS students have to take nowadays. When I was freshmen in college, I started with C++, but the very next semester -- the CS/MIS department said that C++ would stop being offered and that Java would take its place as a beginner level course.
I'm not saying C++ isn't still used to, because that's not even remotely true; however almost all Universities now teach Java as a beginner CS course for new students, mainly because it's a high level language and it allows for students to learn OOP (Object Oriented programming).
Since your end goal is to develop applications for Android, it's probably best you learn Java, since all the Android apps are built using Java and XML.
Your best resource is the Internet.
You can find University Lectures all over the web. The OpenCourseWare project has grown a lot and allows for the entire world to get an education. For FREE. If you don't know it is, you can go HERE to read more. Basically though, it's a collaboration of the top Universities (MIT, Standard, CIT, Harvard, etc) to provide there coursework and almost all classes they offer to the world. These universities record all there lectures and host them either on their sites or on Youtube. They also provide all the materials you'll need to learn alongside everyone else, as if you were in the classroom yourself. You can go at your own pace; stop, rewind, pause the video if you're stuck, and take as long as you want on the assignments. It's a great way to self-teach yourself programming; plus the Internet will most definitely give you the answer to any questions you get stuck on.
I'm currently doing the Beginner Java course that Stanford is offering (as a refresher). The professor that teaches the course is exceptional and you'll see that my sentiment is echoed in the comments section on Youtube. Stanford's way of teaching Java and especially OOP allows new students to slowly, but surely grasp the OOP concepts (as they can be a little difficult to understand at times). You should benefit from this, just make sure you follow through and do it.
Stanford Java Course
Here's a list of other helpful resouces:
Cosmolearning - Intro to CS
All of MIT's CS Lectures
Google Books -- You'll find endless amounts of books, just search the language you want to learn and have a go.
Good luck.
I was a computer science major for one semester. lol. We started with Java.
the CS/MIS department said that C++ would stop being offered and that Java would take its place as a beginner level course.
Click to expand...
Click to collapse
My university started allowing students to use Java, but still taught in Contrast++ after I finished. It is 2 different teaching styles, and I prefer low level first because it makes you think about things that when you go to a high level language like Java become trivial but useful in optimization. Granted, it is a steeper learning curve this way and I can see why someone would argue that starting with a higher level language is a better approach. But there are things a lot of people do wrong in Java because they don't understand the basics. The most common result is a memory leak or concurrent modification exceptions. Personally, my path was TI-83 programming, BASIC, C, PHP, OO C++, Perl, Java, Javascript.
-------------------------------------
Sent via the XDA Tapatalk App
my progrmmaing path was:
C -> C++ -> Java
also learned
vb,Vb.net and C#.net ,Java Script,PHP
I would recommend starting with C++ (with atleast basics )and then switch over to Java.
go to EDUmobile.org. They offer an Android development program for about 200 bucks with certification ath the end. They also offer iphone.
Sorry if this has been posted but I couldn't find one and if posted in wrong section
Im trying to become a developer but I am stuck at hello android and don't know what to do from there if anyone can show me a way to develop apps easily please help out and this is my first post too =]
Sent from my overclocked Cyanogenmod htc evolution 4g sucka
cesarcerros31 said:
Sorry if this has been posted but I couldn't find one and if posted in wrong section
Im trying to become a developer but I am stuck at hello android and don't know what to do from there if anyone can show me a way to develop apps easily please help out and this is my first post too =]
Sent from my overclocked Cyanogenmod htc evolution 4g sucka
Click to expand...
Click to collapse
You're stuck getting Hello Android to work or whate to do after hello android? Do you know any development languages such as Java or C#? (you'll be writing android apps in java, but C# is really MS version of java with a few syntax differences) If not, are you familiar with object orientation? If not, it's gonna be tough dude but if you're smart and pick stuff up quickly you can learn by reading.
Pick up some books and look at youtube videos.
Sent while sitting on the toilet.
Alright thanks its just that helloandroid project wouldn't start right but I will look up massively on how to start a different way or just try to find the solution and youtube always helps and anyone knows how to make roms looking to make aosp
Sent from my overclocked Cyanogenmod htc evolution 4g sucka
There's a few free Eclipse and Java books out there that a beginner will understand especially if you already understand the concepts of object-oriented programming. Eclipse IDE itself will need a book as it's full of plugins and tools you need to understand to compile your project effectively.
It's going to be a very very long and slow road.
This may help, a series of YouTube videos for beginners.
http://eclipsetutorial.sourceforge.net/totalbeginner.html
I've been thinking the same thing, learning to develop for Android. Since I have near zero experience programming (save for a VB class in college) I decided I would be better off hiring someone to write what I want.
Just keep in mind though, Hello World is just where people start.
You may want to check out the android Appinventor. It's made by Google, and is in beta testing now, but it's a graphical way of programming for android. Though there isn't any code involved and won't be good/used outside of Android, it does a good job imparting the logic of programming.
I'll give you some tips that I've learned over the years as a developer.
First if you haven't done any development before I highly advise obtaining a book. True there are tons of web tutorials out there but personally I find a good author can do wonders in learning how to develop software. Anytime I want to learn a new platform I pick up a book on that platform. Of course you can find a ton of books used but another great source is a library. If you're in college with a computer science program chances are your library will have a couple of books on Android development. Your public library probably has some books on the subject as well. If all else fails see if you have a friend who will loan you a book.
Reading about development is only part one, part two is hands on. You can read an entire book on developing software and walk away with no knowledge. You can mindlessly follow the examples in the book but I find it best to use the examples in books as a guideline. In other words take the idea in the book and morph it so you're working on something original. Trust me here, you'll learn a lot more doing this instead of just mindlessly following the examples.
Next thing you'll need is a problem. Why? Because you need something to write. I find myself most motivated to write software when I either have a problem or something else has one and a checkbook. What do you want your phone to do? Are there applications out there that solve your problem but you think you can do better? Think small and easy since you're still new. Realistically you're not going to be able to make a web browser from scratch as your first project but you can certainly make a database of movies you own.
One thing that is debatable is whether you should learn to write something quickly or well. Frankly I'm in the school or writing something quickly and ignoring "correctness" when you're new. People new to programming spend too much time worrying about doing things "correctly" (very important when you're developing actual software) instead of learning how to do things in the first place.
Your code may not be readable, may not be optimized, and may crash every time an invalid input is entered into a field but you'll learn from those things. I think most people who end up hating programming do so because they spent too much time on worry about the little things and thus seeing no results for their work. Once you have the basics down you can concentrate of the details of optimizing code, validating inputs, and making your code readable.
Honestly not matter what you write you'll look back at it in embarrassment ten years from now anyways.
Ok thanks will look for a book
Sent from my overclocked Cyanogenmod htc evolution 4g sucka
cesarcerros31 said:
Ok thanks will look for a book
Sent from my overclocked Cyanogenmod htc evolution 4g sucka
Click to expand...
Click to collapse
Buy a Java book that also covers Object Orientation basics and principals. (you'll also need to understand some XML to do android programming) If you want to make kernels/ROMS, definitely look into Linux and shell scripting. (you can find most of this info online though)
By the way, I heard the "Java in 24 hours" book is pretty good.
Sirchuk said:
By the way, I heard the "Java in 24 hours" book is pretty good.
Click to expand...
Click to collapse
it might be good, but it wont teach him how to actually code. Most of those books are made for people that know other languages like javascript/php/c/etc.. and are wanting to move to java and learn the new syntax.
I have no idea as to what you know. So ftw.
Write what ever you decide in a pseudo code, first.
Two things will fall out of that, a design, and java methods of implementing the pseudo language ( as you decide what java syntax does your psuedo code) which invariably returns you to (1) the design. I think it's called iterational refinement, or some such other bs.
So don't get bogged down, now that you know hello, make it start "right"...
You all do realize that eclipse was a machine.. a sunny>dg joke.
I am interested in learning how to develop windows mobile software, firmware, apps, and more. I own an HTC HD2 with custom ROM, I also have android installed on it. Do any developers know where I can learn the tools and code so that I can start developing my own stuff?
I am a pretty quick learner, I am very interested in codes/developing. The only developing I have learned and mastered is web design. I know HTML, PHP, PERL, Ajax, JS, MySQL, and much more.
So if anyone knows about anything that could help me, please help me out.
And feel free to check out my website
-TechBurrow.com
TechBurrow said:
I am interested in learning how to develop windows mobile software, firmware, apps, and more. I own an HTC HD2 with custom ROM, I also have android installed on it. Do any developers know where I can learn the tools and code so that I can start developing my own stuff?
I am a pretty quick learner, I am very interested in codes/developing. The only developing I have learned and mastered is web design. I know HTML, PHP, PERL, Ajax, JS, MySQL, and much more.
So if anyone knows about anything that could help me, please help me out.
And feel free to check out my website
-TechBurrow.com
Click to expand...
Click to collapse
A good as place as any to kick you off with the basics...
http://www.xda-developers.com/windows-mobile/tutorial-a-13-year-olds-guide-to-programming/
No doubt once you've done a little of the basics, you'll be well away.
You could have a look at the answers to this post.
http://forum.xda-developers.com/showthread.php?t=787325
Look familiar?
I'm looking for a simplified approach to tablet development for the a500. I'm currently looking into flash builder ( seems like I need the full Adobe suite to really leverage it, so too much $ ). I'm dabbling in Eclipse, but am not too psyched about learning a new IDE. I grabbed the Mono for Android trial but it's not really ready for tablets as of yet. I've been building in the Buzztouch interface, exporting and recompiling in Eclipse with some success, but it's really not tablet focused. It seems like the app Inventor isn't ready for tablets either.
Has anyone encountered a tablet-centric toolset out there? I'm looking for only very simple functionality, nothing elaborate needed. Honestly, if it even supported simple HTML iFrames I could get by with it. I'm fine with web based tools if needed, maybe something with templates for the Acer, Xoom, and so on... I can work in VS 20xx, Eclipse if I have to. any suggestions would be really appreciated. thanks!
My suggestion is to use eclipse and official SDK. Because when you use third-party tools or workarounds like flash/htlm, your apps look non-native, break when the user updates his device with a newer os and. It causes a lot of frustrations - people hate such apps and recommend all their friends not to use them. At least I always do.
So I advise you to learn java and eclipse. You may even have to use these tools from time to time not only for android because java no matter how it sucks is everywhere. Besides, you get a lot of advantages when using sdk and java api like saving settings, gettinge events like app close/hibernate and so on. The learning curve may differ from flash but java is certainly much more useful. Although given that you know C# (as you're suggesting mono) and javascript/actionscript (as you're using flash) learning Java will be easier, although Java is corporate crap built on spike solutions and rejecting progressive stuff.
Actually you should ask mods to move this thread to android development or off-topic. I am sure you more people will share their opinions on the matter there
thank you for your reply... you are right, the smart thing to do is stop whining and learn the tools C# C++, flash ... I guess the idea of having to learn something else isn't the end of the world, but I was hoping a toolset would lighten the load a bit. thanks again
angus454 said:
thank you for your reply... you are right, the smart thing to do is stop whining and learn the tools C# C++, flash ... I guess the idea of having to learn something else isn't the end of the world, but I was hoping a toolset would lighten the load a bit. thanks again
Click to expand...
Click to collapse
pssst.. hit that thanks button for sp3dev.
angus454 said:
thank you for your reply... you are right, the smart thing to do is stop whining and learn the tools C# C++, flash ... I guess the idea of having to learn something else isn't the end of the world, but I was hoping a toolset would lighten the load a bit. thanks again
Click to expand...
Click to collapse
I don't think his suggestion was for you to learn C / C++ or flash. Based on your OP, he figured you might know them well and that knowing them might help ease the learning curve learning Java. You will still have to learn it though.
As he rightly said, for an uninterrupted user experience, always stick to the native development tools. No easy way out unfortunately.
you know, I should just write the program myself and release it up here for others to benefit from... thanks for the thank reminder; done!
Hi everyone! I am currently a student going into my senior year of my bachelors in computer science. Over the years I have wanted to get into android os development but just never seemed to know where to start with it. I have a very strong programming background of C++, php, some javascript, actionscript, visual basic (and .net), and a handful of others too.
Does anyone have any good resources in getting started with things? Or even better yet, would anyone be willing to sit down over skype or the like and have a chat and tutor/teaching sessions with me?
Thanks in advance for any of your guys help, it will be very much appreciated.
AzureShadow said:
Hi everyone! I am currently a student going into my senior year of my bachelors in computer science. Over the years I have wanted to get into android os development but just never seemed to know where to start with it. I have a very strong programming background of C++, php, some javascript, actionscript, visual basic (and .net), and a handful of others too.
Does anyone have any good resources in getting started with things? Or even better yet, would anyone be willing to sit down over skype or the like and have a chat and tutor/teaching sessions with me?
Thanks in advance for any of your guys help, it will be very much appreciated.
Click to expand...
Click to collapse
Welcome to the game
IMO you probably won't find someone willing to sit down and teach you this stuff. It's kind of a learn as you go thing for most of us, and for others they won't even post on these forums until they've mastered coding lol.
I'm a noob myself, and certainly not a programmer. I came on here not knowing much, but then started learning very specific things for my particular phone. That's where you should start. Learn everything there is to know about your phone and start making apps/roms just for your device. You certainly need to know, and understand, the build numbers for these phones and realize that not every ROM, modem, kernel, etc. is compatible with all phones.
There aren't too many resources other than the required tools... for example, if you don't have the Google Android SDK bundle then you need to get it. You need the AVD Emulator for app emulation unless you're going to test everything on your own device. If you're looking for a relatively easy way to compile a ROM into a ZIP so it's working and flashable to your phone then there are Android "kitchens" that will do that for you. They themselves require their own tools to work, but they're pretty straight forward.
This particular kitchen by dsixda works well, even though it says it's not being updated anymore. It supposedly works for all GS4 variants, but I have personally confirmed that it works for the GS4 jfltespr variant by Sprint.
http://forum.xda-developers.com/showthread.php?t=633246
If you use that and follow the instructions, you can decompile a base ROM to work with it and see how everything is set up, add or tweak a few things as you like, recompile it back to a ZIP and then flash it to your phone and see it in action.
Good luck.
I would LOVE to see a kitchen on android itself
Sent from my SGH-M919 using xda premium
My one piece of advice here - because Android development is so multifaceted that there are any number of ways to start, and if you're down in the platform, often you need to know a lot to be productive:
If you want to play in kernel space, I suggest playing with some microcontroller development boards, like AVR. Arduino hardware is great, but the Arduino IDE does too much handholding. Take a more "down to the metal" approach like using AVR-GCC to target Arduino hardware. This teaches you how to think about voltages, currents, drive conflicts (pushing and pulling a bus at the same time is Bad), etc.
Oh yeah, and grep is your friend.