I'm going to be a teaching assistant, teaching web technlogogies. What should I know?
Published: 2018-01-24 22:37:34

---
title: I'm going to be a teaching assistant, teaching web technlogogies. What should I know?
published: true
description: My local polytechnic institute recently invited me to assist them in lecturing one of the courses. I'd like to know your feedback.
tags: 
---

Hello!

(Note: this may be quite long, but I appreciate your feedback)

As you might have read from the title, I've been recently invited by my polytechnic institute to help assist them in lecturing the classes for the "Internet Technologies II" course. To give some backstory about this course (and the degree it's a part of), it's the second course (of two) that's directly related with web technologies.

The first course focuses mainly on the 3 'pillars' of front-end web development: HTML, CSS, and JavaScript, and things like DOM manipulation, events and querying.
It then moves on to jQuery and Bootstrap, explaining the things that can be done with them. 
Finally, a brief introduction to Canvas and SVG (+ XML with JavaScript) is done, whose objective is more to develop the thought process, than the actual need to use these technologies directly.
The students are evaluated with a project that consists in a purely client-side application, usually sort of a "toolkit", with many "apps" that use the concepts lectured through the course (for example, a calculator, or a clock made with Canvas, or a color picker, or something like a calendar).

Not much is lectured about layout, when I attended the course, the only aspects that were lectured were table layouts and absolute positioning. I think that this has changed, but I haven't yet been able to talk to the professor to know more about this.

The second course (which is the one I'm going to help with) focuses on the back-end. Due to our partnership with Microsoft, and the market in Portugal, we focus on ASP.NET MVC (up to a few years ago, it was pure WebForms, but it changed due to the altering landscape).
Although I prefer to work with Node.js, I do agree that ASP.NET MVC is a good choice for the web framework to teach. It's powerful, well-structured, and well-documented. The objective of the course is to teach the students how to combine the contents of the first course, and combine them with the concepts of back-end routing to controllers and views, introducing models and CRUD concepts with Entity Framework and SQL Server, and finally, authentication and authorization.
Since this course is lectured by two different teachers, the back-end part only represents 2/3 of the hours of the course. The remaining third focuses on technologies such as JSON and AJAX (which are still fetched using ActiveX because the teacher doesn't set up a static file server), and more advanced DOM concepts.
In this course, the students have two projects: One focuses on the ASP.NET part, the other focuses on building an app that uses the remainder of the technologies lectured on the last third.

We only have about 14 weeks, each having 2 classes (a 2-hour one and a 3-hour one). Some classes are used for presentations, where the students present to the class what they've been working on, and so that possible mistakes can be caught early on (for example, making an "online store" application, but there is no support to save pictures for the products). In total, we have about 11-12 weeks that are used for actual lectures. This, times 5 hours a week, gives us a total of about 50-60 course hours, spread over a semester.

Knowing this, I think that the concepts taught on the 2-hour classes could be moved to the first course (perhaps in detriment of Canvas and SVG?), but perhaps for this year I'll leave them as-is (I'll use proper APIs though, not ActiveX).

Here are my ideas for this course:
- I've worked with some students that graduated from this school, and they often don't know much about layout. I should introduce them to the positioning methods, Floats, Flexbox, and ideally, CSS Grids. Media Queries are also a good idea, I often find that they don't know how Bootstrap works.
- I think that introducing them not just to get data using AJAX, I also want to show them how they can submit data with it. Perhaps I should show them Fetch? It's still not standardized as far as I know, but Promises are pretty much everywhere now, and perhaps this is a good proxy to introduce them.
- Note that I must be careful not to introduce things that are too bleeding-edge, the harsh reality is that most enterprise clients in Portugal still use old versions of IE.
- I often find that people don't know how to use the browser's Developer Tools. Perhaps I should show them how they work? Work with them in debugging the DOM, CSS, and JavaScript, in an app that's deliberately buggy?
- I also want to show them some "intermediate" concepts of JavaScript. Sadly, on the first course, not much is taught, and some features are dubious at best (read: `with`). Thinks like Arrow Functions, new APIs (which?), and perhaps, Classes (they come with a Java background to this course).
- Depending on how things evolve, I want to transition to the back-end, so that the topics can be taught with more time and detail, because there isn't much time to explain all the concepts of ASP.NET in ~30 hours. I'd like to go further into things like model/form validation, the basics of RESTful APIs, and going further into authorization, like returning subsets of data based on the user's privileges.
- I think that the two projects should be merged into one.
- Should I, if I had the time, show them the client-side frameworks that are "hot" right now? React, for example, is gaining a lot of traction in Portugal's enterprises.

Having read this (thanks!), is there anything you would change? I know that there is much that could be changed, but such things must be done one thing at a time. I'd also like to know what your recommendations are when it comes to lecturing classes. 
I am well aware that knowing about the subject is sometimes not enough for us to be able to teach about it in an effective way, so how would you go about it, if you were doing it?