DEV Community

André
André

Posted on

I'm going to be a teaching assistant, teaching web technlogogies. What should I know?

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?

Oldest comments (2)

Collapse
 
fnh profile image
Fabian Holzer

It is very laudable that you are putting so much thought into how you could improve the course you are describing. Judging from the curriculum you have outlined, you focus - for my taste - too much on knowledge with a rahter short "life span".

Whatever library or framework you teach today, will be outdated in a short period of time.

Think a bit more highly of your students, they'll surely be smart enough to figure out a CSS framework. Use the scarce resource, the time you have, wisely and bring in some more fundamental concepts. The basics of user interface design and human-computer interaction for example; and for the technologies part: creating useable APIs (how many frontend devs complain about badly designed backend services?).

Transferable skills are harder to teach admittedly than, say, a slide deck that parrots the content of the MDN Web Docs. But those will still be valuable and in demand, when nobody talks about ASP, Bootstrap or React anymore.

Collapse
 
redroserade profile image
André

Thank you for your time and feedback!

I agree with you, I'd rather focus on the fundamentals, rather than whatever is 'hot' right now. Teaching frameworks and libraries instead of the core concepts can even be dangerous, because they can become formatted to only knowing that, or not knowing what's going on 'behind the covers'.

When I attended the lectures from this course, jQuery was introduced. I refused to use it, because I thought it was more important to know the core APIs, so my end-of-course project was a single-page app, done purely with whatever the browsers had to offer at the time in 2013, and zero libraries. It taught me a lot about how to do things with what I had, and it didn't hamper me when I used jQuery or Bootstrap or whatever else at work.

One of the things I did discuss with the other teacher that will lecture this course was that API design is something that we should invest our time on. Especially because I, too, have found terribly-designed APIs at work.

As for using ASP.NET MVC, I merely think of it as a gateway for explaining client-server interactions and how data flows from the client all the way to the backend. I find its concepts to be easily translatable to other languages (having worked with Express, Spring, JAX-RS, Flask and so on).

Speaking of React/whatever is 'hot' right now, I didn't plan to teach it, merely to show what's possible today, the 'state of the art', if you may. But I agree, knowing the core concepts makes you a lot more flexible when it comes to developing new things, whether you choose to use a framework/library or not.

And finally, no, I don't want to do a copy-paste job of MDN docs, I'd rather show them to how they can find such technical documentation, so that they learn how to find it. (Too often I find recent graduates not knowing what to search for in order to overcome an issue).