freeCodeCamp teaches through projects and hands-on exercises. Its official introduction says its courses, projects and certifications are free.
If you like practising directly in your browser, explore the curriculum and choose a first module that fits your level.