Options for giving math talks and lectures online
terrytao.wordpress.com
terrytao.wordpress.com
one camera aimed at you, and another one aimed at your desk, with some different scenes set up in OBS for focusing on you, the desk, or some powerpoint slides.
then let students use the textual chat feature. (just plain superior to taking audio from 20+ students simultaneously. that'll never turn out well.)
https://www.amazon.com/IPEVO-Definition-Document-Camera-5-88...
might be a nice way to aim a camera at your desk.
Half the students will already be on Discord and probably on Twitch too.
For a blackboard, why? With a computer you have infinite space as long as you're using some kind of note taking software. I know that I've abused OneNote's live editing feature to draw on my laptop screen via my tablet + pen. Plus everything electronic can be exported and shared.
I don't know that twitch is the best platform (honestly, it might be! It's used for this every day at a much larger scale than most schools imagine), but regardless, streamers have figured out pretty great and economical setups for streaming.
(Eg https://medium.com/@suzhinton/my-twitch-live-coding-setup-b2... but I'm sure there are many many similar publications, some which might be better for beginners)
On the other hand I've been trying to use google forms with little quizzes for periodic feedback and that's been terrible. No matter how basic a question you ask, some students will take 100x too long trying to research the answer on google or just hiding or who knows what. And you just have to cut half the class off with no responses if you want to move on in a reasonable time. Putting students on the spot by walking over to them in person is the only way to get some students to participate.
1) a video of me (using the selfie-camera on the iPhone) and
2) the screen content of my iPad, where I used the Pencil to write on PowerPoint slides.
What was my experience? I missed a live feedback, both during lecturing, and while answering questions. I sort of talked into the void. Luckily there were still students in the same room, so I got a visual response here. However I think the feedback could be improved very much if each of the remote students would also stream their video (all at once, without audio). I hope this allows to have a more 'class-roomy' experience, also among the students themselves. Is there anyone with a similar setup and experience?
Perhaps you could integrate some sort of chat for this?
1) I get a lot more eye contacts with the students this way versus using the blackboard, because I always face the students and never face the blackboard.
2) Beyond streaming the screen, there exist software that records and share what was displayed in previous slides. Students watching the video can then very easily (alt+tab) access another window where they can scroll to check previous slides. OneNote lets you do this for instance by sharing a notebook; the students can either access the notebook on a webpage (sluggish) or on their own OneNote app on a tablet. I typically have 1 notebook for each course and the notes taken during class are updated almost instantly (few seconds). Sadly OneNote has drawbacks: importing a PDF rasterizes it and the result is blurry/pixelated, and the latency for updating the notebook online is few seconds, so not good enough for online streaming.
3) Webex or similar conference software lets each participant send a video stream or a screen sharing stream. I intend to try this setup in the next few weeks: (a) me sharing a selfie video stream (b) me sharing my iPad screen where I write or annotate slides in OneNote, (c) the OneNote online notebook that students have access to in another window with all previously annotated slides, (d) hopefully the students streaming a selfie video of themselves to get visual feedback in the Webex meeting.
Raw streaming video isn't going to do you much good for even just a class of 20ish. But you do make me think of a crazy idea where each student has their camera on, and the client does facial analysis to do what would basically be sentiment analysis. Then just the sentiments get sent up to the streaming server (saving tons of bandwidth, which the clients may not much care about but the central server still cares about even in 2020), and the server composites the sentiments together and displays 3 or 4 synthesized faces representing the general sentiment. So you look at your 3 or 4 synthesized faces as you teach, and if suddenly 2 of them get a quizzical look on their face, you know that there's a non-trivial amount of the class you just lost. Or, alas, if 3 of the 4 of them are staring off into space, you know you've lost the class.
It would be a bit weird, but might be an interesting way to hack our human systems for facial reading into being able to read a virtual crowd.
Two possibilities come to mind; one is where the system reads sentiments, and then if it decides one of the faces is going to be confused, plays a pre-canned "confused" animation. Functional, easy, unless someone very skilled works at it it's gonna have a very 1990s animation feel to it, I suspect. The other is more complicated, but potentially more rewarding, where the system uses some more advanced AI and things like eigenfaces to synthesize a more continuous representation of what the crowd is expressing, which may do a better job of looking more human and may be a much more information-rich way of expressing the crowd's sentiments. In this case I imagine the system trying to maximize the number of real faces represented by the synthesized faces; I'd want to set it up so that a crowd of 90 neutral people, 10 bored people, and 5 confused people get the bored and confused a bit overrepresented, rather than just having 3 or 4 equally neutral faces.
You'll also see I'm pretty stuck on having more than one face, despite the fact I kinda expect any system that tried to do this would end up with just one, but I suspect that trying to represent an entire diverse crowd with just one face will wipe away too much information, both resulting in less information for the user, and also eventually the brain of the lecturer categorizing this as something other than a crowd of people. I think you need multiple faces for this to work, and you'd need to do something like what language analysts do to seek out the real information in a sentence and not be afraid to amplify some of the signals only a small minority are putting out.
Anyhow, the foundational tech for all this all basically exists now; this is definitely something a startup-class effort could do.
The process for using it goes like this:
1. Upload a blank exam and mark where names and answers are (so, e.g., they'll know where on each exam to expect the student's answer to 2(b)).
2. Scan and upload the finished exams. Most copying machines can handle this pretty easily.
3. Use an OCR-assisted process to match exams to names or student ID numbers. Without ID numbers, this took me under 2 minutes for 40-50 students.
4. As you grade each problem, you make notes and deductions as you go. e.g. "You forgot the +C, -1 point". If you see the same error again, you can use a hotkey to affix the same note and deduction to subsequent exams. You can also grade additively, if you prefer. And you don't have to deal with stacks of paper exams.
5. If you decide to alter a note, or that you were to harsh or lenient on a particular error, the changes are applied to all exams with that mark. This takes a lot of pressure off of your initial grading decisions ("Oh, shit, it looks like getting that was harder than I thought. Should I go through all the exams and lower their deductions?"). The notes support LaTeX math symbols.
6. Once you're finished grading, you don't have to tally and enter the grades. No more worrying about final-grade-altering addition errors. You can export the results as a spreadsheet. You get granular, question-level data on how everyone did. You can publish the results to students. If you choose to accept regrade requests, you can do so without worrying about post-return alterations of answers.
This is all without their upgraded AI-assisted service. It slashed about 75% off of the time I spent on grading and 90% off the stress of grading fairly and consistently. And it gets even better if you have multiple graders with their team service; no more coordinating the passing around of exams! Everyone can work at the same time.
It's an absolute godsend if you have a lot of grading to do. I can't recommend it highly enough.
Jupyter Notebook supports LaTeX (MathTeX) and inline charts. You can create graded notebooks with nbgrader and/or with CoCalc (which records all (optionally multi-user) input such that you can replay it with a time slider).
Jupyter notebooks can be saved to HTML slides with reveal.js, but if you want to execute code cells within a slide, you'll need to install RISE: https://rise.readthedocs.io/en/stable/
Here are the docs for CoCalc Course Management; Handouts, Assignments, nbgrader: https://doc.cocalc.com/teaching-course-management.html
Here are the docs for nbgrader: https://nbgrader.readthedocs.io/en/stable/
You can also grade Jupyter notebooks in Open edX:
> Auto-grade a student assignment created as a Jupyter notebook, using the nbgrader Jupyter extension, and write the score in the Open edX gradebook
https://github.com/ibleducation/jupyter-edx-grader-xblock
Or just show the Jupyter notebook within an edX course: https://github.com/ibleducation/jupyter-edx-viewer-xblock
There are also ways to integrate Jupyter notebooks with various LMS / LRS systems (like Canvas, Blackboard, etc) "nbgrader and LMS / LRS; LTI, xAPI" on the "Teaching with Jupyter Notebooks" mailing list: https://groups.google.com/forum/#!topic/jupyter-education/_U...
"Teaching and Learning with Jupyter" ("An open book about Jupyter and its use in teaching and learning.") https://jupyter4edu.github.io/jupyter-edu-book/
> "Zero to BinderHub" describes how to setup BinderHub on a k8s cluster: https://binderhub.readthedocs.io/en/latest/zero-to-binderhub...
If you create a git repository with REES-compatible dependency specification file(s), students can generate a container with all of the same software at home with repo2docker or with BinderHub.
> REES is one solution to reproducibility of the computational environment.
>> BinderHub ( https://mybinder.org/ ) creates docker containers from {git repos, Zenodo, FigShare,} and launches them in free cloud instances also running JupyterLab by building containers with repo2docker (with REES (Reproducible Execution Environment Specification)). This means that all I have to do is add an environment.yml to my git repo in order to get Binder support so that people can just click on the badge in the README to launch JupyterLab with all of the dependencies installed.
>> REES supports a number of dependency specifications: requirements.txt, Pipfile.lock, environment.yml, aptSources, postBuild. With an environment.yml, I can install the necessary CPython/PyPy version and everything else.
> REES: https://repo2docker.readthedocs.io/en/latest/specification.h...
> REES configuration files: https://repo2docker.readthedocs.io/en/latest/config_files.ht...
> Storing a container built with repo2docker in a container registry is one way to increase the likelihood that it'll be possible to run the same analysis pipeline with the same data and get the same results years later.