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
Agreed. I think there is a lot of cross-over with the basic constructs (primitives, conditionals, loops, lambdas, etc.) though. I also know that the popularity of grunt, karma, et. al -- none of which run on the browser -- are increasing. It would be useful to be familiar with both environments, but I am in favor of prioritizing the browser.
I think this is good to get started; practical usage is important too.
console.log
andconsole.dir
are indispensable for debugging so maybe having an exercise where participants use that strategy to solve a problem would be beneficial. For example, maybe you would need to see what was going on inside of an event handler -- maybe the code in the exercise has a typo on a property on an event or something -- and one way to solve the problem is to justconsole.log
the object and fix the typo.This way, you are learning, then applying what you've learned. This process (disclaimer: not a teacher) gets the information across in multiple ways which helps with learning and making more connections.
Baby steps at first, but it's possible. I think the course would have to be well designed and strategized for it to happen. I really do think that having a pre-built testing environment and using that as a tool for teaching would be beneficial at some point. Maybe just a small repo with karma and jasmine installed already where the students could use assertions on simple things.