First, of course you have to know either C/C++, as they're the only languages you can currently write NDS Homebrew in (apart from Assembly, but that's really hard).

For starters, you should watch this video by PolyMars:



Then read this:

Useful resources to help you out with starting to make NDS homebrew