More and more of our application code will live in the browser over time as JavaScript, and perhaps our server code will utilize the same language as well. Luckily, it's pretty easy to learn JavaScript. JavaScript is becoming more central to web applications.
With this in mind, it will be beneficial for non-developers to gain a better understanding of this language, and how it is used in the browser and on the server. We can start out simple, and work up to the level of proficiency required to aid in debugging web app issues, writing automated end-to-end tests. Perhaps you will find yourself developing a web application of your own.
I hope to hold 1 - 1.5 hour sessions every 2-3 weeks, depending on my schedule. Perhaps other developers can assist as well, schedule permitting.
- What is JavaScript?
- Why is it important?
- Objects, Functions, and primitives
- HTML tags and their JavaScript counterparts
- Browsers and JavaScript (implementation differences)
- What am I? Type determination & speculation
- Inheritence
- Scope
- Context
All tools should be web-based, simple to use but powerful, useful for collaboration and after-session reference, and demonstrative of the power of JavaScript.
- GitHub: to hold/serve code (in a public repo) from sessions for reference, and for participants to ask questions and request future topics
- codio.com: real-time collaborative coding, no-nonsense web-based IDE, and because it's cool
- slid.es: for (public) slides to drive the session content
I'd be willing to teach a topic.
Some links for learning JS that have served me well:
Others that I just found:
Interactive Tutorials:
Another idea is to set up jsfiddles with sandboxed environments. Small problems related to the topic being taught could be baked into the fiddle as exercises.
I also liked James Shore's test-driven teaching style where he would write a feature, and then write tests for it. The feature and tests were designed in a way that new concepts were covered as development went on.
I think that should be the goal. It's one thing to apply what you've learned to a small problem at hand, it's another to apply multiple things you've learned to a larger problem.