Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Inverse Live Coding: A practice for learning web development (computinged.wordpress.com)
127 points by Oatseller on April 5, 2019 | hide | past | favorite | 28 comments


Not meant to be an attack and possibly I am missing something but if I paid to take a course at a university and the person teaching it was only ever a step ahead of me at any time... I'd have never taken the course.

This style of teaching (I feel) gives the illusion of confidence that the student is on the right track although its barely more than blind leading the blind.

Possibly an unpopular opinion but I have been tricked by folks like this in the working world and academia...I feel it is the source of much of my frustration with CS as a profession.


> I finished my first semester teaching at the University of Michigan. I taught EECS 493 User Interface Development all on the Web. It was a tough class for me since I had never before this class used JavaScript, jQuery, or CSS. I learned a lot, but I also had to teach it.

> I could not live code in this class. I didn’t know the material well enough. It took me too long to code, and I couldn’t recover from mistakes in front of the class.

Does it bother anyone else that the author was teaching something they weren't proficient in? Is this normal for colleges?


Yes, this bothers me greatly, particularly since in 2018-19 you could throw a pebble in any direction and hit someone who knows JS/jQuery/CSS/HTML. You almost have to go out of your way to find someone who doesn’t. I’m sure this guy is great at other things but students are paying thousands of dollars for this education.

I only remember having one prof who clearly didn’t know the material. He spent most of every class just copying code onto the board by hand, then trying to talk about it a bit. I really didn’t learn much in that class. Unfortunately it was the foundational C++ class at my university and really kind of handicapped me in successive classes that were also taught in C++.

My alma mater? The University of Michigan.


> in 2018-19 you could throw a pebble in any direction and hit someone who knows JS/jQuery/CSS/HTML.

You could, but they all have jobs doing actual programming. Universities pay sub-poverty wages to adjuncts to teach most of their classes and so this is what they get. It sounds like this person at least cares and is working hard to teach the material.


>Does it bother anyone else that the author was teaching something they weren't proficient in? Is this normal for colleges?

Yes, it concerns me - but it doesn't really surprise me (my own UG CS experiences have really disillusioned me with regard to how much of a priority teaching quality really is, particularly in research-intensive institutions). It doesn't sound like the author had much say in the situation "I also had to teach it", so unsure if the department is the root problem here.

But it's doing a disservice to students - particularly given in the US they'll be paying much, much more than the tuition fees here in the UK (which I think are excessive as it is). It's not good enough. If you're going to offer a class that's more practical, covering real web technologies, do it properly or don't offer it at all. We risk teaching poor practices otherwise and I've seen these lead to real security issues when students enter industry and want to put these skills to use.


I'm from a country where it's not too rare to see teachers in their 60s, who pretty much taken deep roots in the university, reading lectures in monotone without ever touching practice on the subject in the ‘real world.’ The lag of universities behind modern technology has become a matter of frustrated laughter here, and a widespread position is that a degree is only for the resume, with you forgetting everything you ‘learned’ on the day you graduate.

And my belief, as far as I gathered from hearsay, was that ‘Western’ approach was different, what with having professors who actually work in the field between lectures. So I was, uh, rather surprised to read this.


It bothers me that jQuery is in the mix. That has to be unlearned, it is a layer of abstraction that really is not needed. A decade ago jQuery was great but I am increasingly finding Stack Overflow answers of the 'in jQuery...' type being answered with a polite 'yes but no thanks, I want to do it in javascript'.

What does bother me is the lack of education regarding the HTML elements. How often have I seen anyone with a MDN page reference for an element? That never happens! Yet it is the dictionary and there aren't a lot of elements to remember unless you are trying to draw SVG shapes with masks, arrow heads on them and fancy fills.

Is there a good place to get a good idea of what is being taught to students these days? I am sure that the basic HTML elements are being skipped over and I would not mind confirming that.


In this case, he should have recruited students who are well versed in these things to help conducting the course as TAs. He could have only taught about the principal/design, and let the TAs teach the real coding part.

I found this approach is very effective for students because they basically learn the skills from their peers or even roommates, and if they are friends on campus, they can ask questions any time outside of TA hours. My alma mater has an excellent undergrad TA program where students who performed well in the course are recruited to be TAs when the course is offered later again.


This does happen most of the time, and UM has quite a large TA group. He almost definitely had TAs and the majority of the learning is around discussion/recitation sections and practice. In this case, he also wasn't developing the course from scratch either. So, the content in the course was built by those more familiar with the web.


The major crisis in university CS Ed is that there are nowhere NEAR enough qualified professors to teach all the subjects. There will not be enough in the next 5 years, assuming there is no radical change in qualification expectations. There are simply not enough PhDs being granted to keep up with the demand of students, and not enough students want to stick around and teach when they could be making tons of money in industry instead.

Universities have a short list of options. Having instructors who are smart and understand the material but may not be masters of it? That's a really good situation to be in, compared to the worst case scenarios. Sure, maybe Mark doesn't feel comfortable live coding in front of a classroom for web dev (a skill, by the way, that changes dramatically every year). But he's someone who cares about teaching, plays around with his teaching strategy, and is smart (I mean, he's freaking Mark Guzdial). With those three facts, his students are in a significantly better situation than the average university class.

I had to teach "Intro to Algorithms" the past two semesters. I got an A in that class when I took it, and I'm able to solve most problems from the textbook. Does that mean I can stand up in front of the class and solve any question from the textbook? Absolutely not. Does that make me less qualified than Skienna or Djikstra? Absolutely. Does that mean I can't teach the class? I don't think it does. I can build and grade assignments, I can lecture in class, I can answer most reasonable questions that students have, and I can build good exams that fairly measure my students' knowledge. I'm sure my students would prefer to have an instructor who can do all of those things and also be able to perfectly answer any possible Algorithms question they may have. But unfortunately, that person doesn't exist at University of Delaware - or if they do, then they're teaching one of the other required courses, and we couldn't spare them to teach Intro to Algorithms. It's just the way things are with hiring. I don't think my students' careers are going to suffer because I can't whip out a proof for the reduceability of Vertex Cover to 3-Sat live in front of them.

Ironically, I would feel extremely confident about live coding for a Web Dev course. Hopefully I get a chance to teach one at some point, because I'm pretty sick of teaching Intro to Algorithms :)


> and not enough students want to stick around and teach when they could be making tons of money in industry instead.

Especially not since there typically isn't a good university career path for teachers. Research is generally valued a lot more when it comes to getting a permanent position etc.


It's true, but that will have to change if they want to start handling the volume of students we're being asked to handle.


In this case we can probably assume the author is proficient in several other languages, as well as in pedagogy, so nah.


I'm sure it bothered him, too. Keep in mind that the goals of university courses are not just to learn the material but to learn how to learn something. I know it bothers faculty members when they barely feel ahead, but at the same time -- teaching well is as much about understanding pedagogy as it is about understanding the content. And there's a lot of computer-science specific teaching techniques that would transfer to this course.

In an intro course, you seldom get into the super advanced parts of that topic. He's still a very distinguished CS instructor, and even if a student were to ask some question about, say, a CSS cascade question, he'd be more than capable of looking up the answer and explaining things, even if he doesn't know something on the spot.

I'll add that when live coding, you need to generally be more than just comfortable explaining a topic -- even if you understand say, using jQuery callbacks with AJAX requests, you'd probably avoid teaching it live until you know how to recover from errors in reasonable ways or exactly where in the docs you need to look. It's not that you couldn't figure out the solution, but you want to be comfortable debugging something on the order of seconds of to a minute or two so you don't loose lecture time.


This is a format that I've thought for some time would work exceptionally well in technical interviews: rather than ask a bunch of questions, have a small set of problems that start from a working piece of code in need of work.

This removes some of the subjectivity from a completely open-ended coding assignment, as well as reducing the amount of effort required, because you can do a few small problems rather than a single huge one that typically involves working over a weekend.

The only downside is it's a lot more effort to set up than either an open assignment or a standard Q&A-based interview. You don't want to throw anyone into real production problems for a variety of reasons. The initial setup has to be understandable within a few minutes of code review.


Everything I've ever read or heard about technical interviewing in the past 5 years basically says your idea (and other work sample-type things) is the way to go. And it's kind of obvious when you think about it. Seeing how someone works in practice is almost always going to tell you a lot more about their potential effectiveness as an employee compared to only asking them a bunch of questions or having them solve a puzzle or whiteboard a CS algorithm.


Thanks for all the great comments!

It's true that I was just a step ahead of the students. However, I was using course materials designed by people who knew the material, I had veteran TA's (who could answer the questions), and I do have over 30 years of teaching experience. This was an advantage when teaching this class. I could figure out when the lecture slides weren't enough for me to understand, so I added more to them to make them understandable for the students. My expertise is in teaching: Figuring out how to make things learnable by students.

In the end, the Web programming part was only a portion of the course -- the rest of it was on design and development process, architecture, and issues like accessibility, all of which I am more familiar with. (For example, because I'm an old Smalltalk programmer, I can explain where MVC came from and strengths/weaknesses better than many.)

The course evaluations were very positive. I think the class worked.


I have struggled with the speed at which I can write code live in class. It is hard to do it fast enough to keep students interested. It is also difficult to show even moderately complex programs from start to finish.

I have created a tool that allows me to move quickly through my code where students can still see how the solution evolves. I can comment at interesting points in the development of the code and attach hand drawn pics and screenshots. Here are some examples:

https://ourcodestories.com/markm208/Playlist/All

(Click on the >> button to move from comment to comment. These work best on a big screen)

I show some of these in class before asking the students to work on a related problem. I require the students to view the rest outside of class.

My students really like these. They prefer them to textbooks (no surprise) and videos covering similar material.

The tool to create these 'playbacks' is free and open source (currently a VS Code plugin). I have also created the site to share these with others. I am looking for feedback.


What’s the name of this VS Code plugin?



I've been involved in coding education for about 7 years and this is the approach I've always taken. It works!

At https://www.missionbit.com/ I taught a web development class for a while and we'd start with a pre-built but very simple web application. It was a "social wall" that displayed a list of messages and had a textbox that let people create new messages.

It used a real database, was ready to deploy on day 0, but did only that one thing (two endpoints, one database table, etc.).

Over the class students would add new features (liking, sorting, user authentication, etc.).

It works well if the project(s) connect!


I had exactly one prof who would live code in class, and I learned the by far the most in his classes. Highly recommend this approach to anyone teaching anything code related.


Do you attribute your learning the most to the live coding? If so, what was it about it that helped you?


Yeah that's my experience as well. I went for a B.A. so I was able to take a larger variety of CS courses than the average B.S. student and it still was only my Web Applications professor that did live coding with web2py and Vue.js


I really think the inverse model of teaching is a great one.

The classic model just seems so turned around. Using class time for live teachers to deliver static content seems insane. And then making sure during the time when students have the most questions(at home doing the work) is also the time when they it's the hardest to ask teacher's questions.


I can only adore live-coders. If somebody watches my screen I get paralyzed.


In college: They give me options for the implementation (theory first, then practice based on that theory).

In real world: They give me the goal, let me find the theory.

It's the finding the right theory for the implementation a goal is the toughest part here for a graduated.


I really enjoyed this method and feel that I benefitted alot from the peer programing aspect - that part was key.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: