This is trite advise at this point, but the answer is "read code. lots of code.". You say that you "know" C/C++, python, java, and some assembly, but you likely know as much of those as I did when I graduated, which turned out to be approximately jack. Find an interesting opensource project, pull the code off github, and read it. After you've read it, try and understand how it works, and then tinker with it some. Do this for about six hours a day, and you'll be pretty good in about a year. If you end up submitting something to opensource projects, or record all of your code explorations on a blog and/or githumb, you can use that to get through the HR firewall when you finally look for a job as a software engineer. That might sound dour, but I found it to be worth the effort. Good luck.