Mind to give a bit desription about your current knowledge background? Have you obtained any systematic training on algorithms & design, electronic engineering, computational linguistics ( Developmental approaches, Structural approaches, Production approaches, Human-computer interactive approach, Comprehension approaches)? Hard to say more before knowing you, but I would suggest you go with three steps: 1 identify what is your current level and make a learning plan 2. execute your learning plan 3. practice on real problem solution. BTW, it would be very helpful if you can find excellent teacher tutoring you and get good peers to discuss and learn with you together. There are many online courses, but you need to structure them in your knowledge base and need to know their quality.