Closed codyloyd closed 7 years ago
for the most part, I think the existing WD101 JS section is adequate.. might need a little updating, but it's OK overall.
I think that breaking the basics out into separate lessons will make it higher quality and more accessible to more beginners. The js stuff in 101 is too much in one lesson imo.
FCC 'Basic Algorithm Scripting'
I'm not sure about this, ideally we would have exercises on site for the projects. Something they would perhaps have to do on their local machine.
goood point there.. perhaps we could roll a small test suite and create them ourselves like the test-first ruby stuff. Wouldn't be too hard... and would give the value of running locally.
I think thats the best solution 😄. We are going to do that with ruby basics too, so we should be able to reuse the same exercises for both courses.
there you go :D edited.
We can use some fCC's stuff for the JS course :thinking:
@OlehSliusar I think we could only use FCC for exercises and projects. FCC is brilliant but their in browser challenges is what puts me off. We want to get the student working from their local machine as quickly and as much as possible.
@OlehSliusar I always recommend to people that they go through FCC's jQuery, Basic JavaScript, Object Oriented and Functional Programming, Basic Algorithm Scripting, JSON APIs and Ajax, Intermediate Algorithm Scripting, and Advanced Algorithm Scripting courses (skip the projects and just do the lessons) for a good grounding in Javascript and a decent intro to jQuery.
As @KevinMulhern says, their in browser editor isn't very real world, but neither is the Codecademy one. That isn't a big deal for the lessons, but where I take issue is having their students use Codepen for their projects. I think they have some good projects (heck, I basically stole the pomodoro clock one for our pairing course) but if you want to try them, use the real world development environment TOP has you set up.
I agree with @KevinMulhern, as someone who has used FCC, The Odin Project, and Codecademy, one of the strengths of The Odin Project over the others is the opportunity to work locally and understand the technologies rather than just practicing syntax.
Might I recommend the first 3.5 hours of Understanding JavaScript the wired parts available for free on YouTube. I'm someone who was lost before I watched those videos , it made a tremendous difference to me as a new developer with no math background.
Though many people look down at this resource, something that helped me tremendously were these exercises http://www.asmarterwaytolearn.com/js/index-of-exercises.html and the book, more so the exercises than anything else.
It isn't perfect, but the way the questions are asked, the order they are asked in and the simplicity of it all makes it very easy to learn, apply and retain concepts. I struggled to find other resources like this.
One of the most frustrating things I have run into is the lack of practice problems to drill. Sites that have problems to solve usually focus on algorithmic/data structure type problems, instead of helping people develop language fluency.
Two insights from a perspective of someone learning JS right now:
Thank you for offering offering your insights @mannyhagman and @iansowinski 😄
@KevinMulhern, @codyloyd Hi I explored the Javascript course and I believe that students would greatly benefit from a lessons on Scope, Hoisting, IIFE, this keyword, preventExtensions, freezing and sealing, call, apply & bind. I would love to work on adding these to the existing curriculum. Nicholas Zakas is also well known name in Javascript community for authoring concise and skillfully worded Javascript books. We could add his books to the suggested reading list as well.
@Sandesh-bn several of these things are already on the list up there... but we GREATLY appreciate your input. for sure.
We aren't really intending to add things to the existing curriculum but re-write and refresh more or less from scratch.
we aren't quite to the point where we're ready to start the actual writing.. just planning at the moment. Take a look at the outline above and suggest where you think we should add whatever it is you think we're missing and I'll add it to the list.
Deeper JS topics Hoisting IIFE preventExtension, freeze, seal methods. Call, Apply and Bind Exception Handling
Suggested Reading The Principles of Object-Oriented Javascript(Intermediate) Understanding ECMAScript 6(Intermediate) Professional Javascript(Advanced)
Ajax/APIs Weather api: Darkskynet has a great api and their plans are free for small scale applications. StockPicker: Quandl is great for beginners who want to use financial information.
Potential resources: the basics of package json in node js and npm
Why not add Angular to the mix of js frameworks sunrise auntie end of the course, not only do we get knowledge on both, but also enable us to choose between the two based on which we get the most?
My personal opinion is that we should pick one to reduce bloat. Honestly, buy the time you get to this post of the curriculum you should be able to figure most of that stuff out on your own.
@codyloyd is right. At that point course should just introduce to ideas behind JS frameworks. For me Vue worked great thanks to it's simplicity, thats why I propose it (second argument is that it's getting more and more attention). After playing with Vue diving into react seems easier for me right now (although I'm just starting with it)
@Sandesh-bn thanks! I'm just getting back to this.. I'm adding a couple of those things, a couple of them I think will be implicitly discussed in other sections... and a couple I don't think are particularly relevant at this point.. but I really appreciate the feedback
Thanks!
May I suggest you to add https://watchandcode.com/ a practical JS course developed by Gordon Zhu?
Hey @tomasn4a, I've heard sooo many good things about that course. Thank you for suggesting it 😄
@KevinMulhern also a possible section dedicated for small JS projects, https://javascript30.com/ developed by Wes Bos
@tomasn4a ah another great one 😃
lol. @codyloyd I was going to recommend https://zellwk.com/blog/crud-express-mongodb/ for helping with teaching express but you already had it. :)
If it wasn't previously mentioned, I would suggest utilizing funfunfunction YouTube series on functional programming and higher order functions https://youtu.be/BMUiFMZr7vk
The current devtools resource is kind of ... meh. It requires you to download a glitchy chrome extension to complete the exercises.
I found this resource directly from google that better covers chrome dev tools.
Hey @JonathanYiv, is that the codeschool tutorial? I would agree that it isn't the best. How did you find the other assignments on that lesson?
Yes it is @KevinMulhern !
Codecademy was the best resource in my opinion. I felt the part which listed in-browser IDEs was useful but lacking.. substance(?). Project Euler was fun, although the complexity of the problems jumps up pretty quickly if you don't have strong math skills.
Aside from that, as mentioned in the original post at the top, it "should include lesson on running JS code (https://www.youtube.com/watch?v=t7t_5QT4mxg&)"
The current assignment just states "Solve these problem in repl.it if you aren't comfortable working with your own files" which I found was kind of dismissive. I installed node.js to run the files although I know you can also link to them in HTML files and open them in your browser. Maybe adding installation of node.js or something in the Installations Project would also help set the basis for the whole Javascript Course?
Sorry @JonathanYiv, looks like we've got our wires crossed 😄 I meant the other assignments on the dev tools lesson specifically. Although your feedback for the other lessons is very valuable so thank you for providing it 😄
This issue has been given it's own repo! Come visit at https://github.com/TheOdinProject/Javascript-Curriculum
This is the overview of our re-vamp of the existing Javascript(JS) course. At the moment it is in it's infancy so please feel free to leave suggestions in the comments such as:
Why this course is important.
Ruby and Rails are not dead or dying by any means, but the current trends in WebDev are increasingly focused on JS, and it looks like that trend is going to continue. Our curriculum does, of course have an entire JS unit, but being at the end of the whole curriculum it was put together rather hurriedly and some of it feels incomplete. In addition, many of the sections have become rather outdated since they were written almost 5 years ago. JS is changing, so our curriculum needs to as well.
It is conceivable that at some point in the future this JS course could actually shift to being the main focus of the curriculum rather than being secondary to the Ruby/Rails courses, so getting a good, solid foundation in this revamp is crucial.
Topics of Study (Units/Lessons for the course)
This is a rough outline of the course. Note that it does include the lessons that will eventually be included in WebDev101, so this course will be starting at ground-zero. We aren't quite to the point of planning individual lessons, so each of the points below could have one or more lessons and a project or two within them.
JS101:
Advanced JS
this
Other Stuff
I suspect that at some point we will want an entire course based on JS frameworks (backend stuff like Node/Express and front-end stuff like React) so for now, the "frameworks" lesson will basically be a teaser with general info and links to the basic "hello world" tutorials for each framework.
The following is a compilation of links, ideas and potential projects to complete for each section. I'll try to keep it updated as you all comment and share ideas.
JS Basics
DOM Manipulation
ajax/APIs
fetch
or some other 3rd party module (axios is popular)TDD in JS
tape
so unless someone gives be a good reason to use something else (I'm open to it!!) that's what we'll go with. I prefertape
for it's simplicity.ES6
I am hoping that we will not have to cover too much here.. Presumably many of the syntax things and features will be covered in earlier lessons.. however there are a few little details that need covered, including a section on transpilers. things to cover include:
Deeper JS topics
Once the basic syntax is down, Rails-track people can bow out.... but for those wanting to stay the course, or to do the JS-only track, this is where it gets deeper. Topics to be covered include:
OOP in JS
JS DOES NOT HAVE CLASSES. This section is important.. crucial even.
Functional JS
Other stuff..
...remainder is in progress