66 karma · joined December 19, 2018
I highly encourage you to take "didicatically useful" as a bar to aim for, rather than "not making mistakes".
I think it's a cool tech demo, but if you're positioning this as a course that's ready to be consumed by students, I think doing the quality control is not optional.
- The voice is clearly TTS, which I think really loses something. Not having variation or stressing particular parts with intonation is a big deal in teaching. The beginning of lecture 5 has a pause in a weird spot (surface).
- The intro to the first lecture is already unnatural: "And that's of course now we're going to start working with functions of more than one variable."
- The scaffolding in lecture 1 is off to a bad start. The lecture tries to rope the student in with a question, but the question uses the notion and notation of a vector that has not been introduced yet. This reeks of a prompt "use a (motivating) question to introduce the topic", but a question that cannot be understood by a student does not help.
I also think the idea here is to apply it to bosses who's self-worth seems to be tied to putting their mark on the product without being burdened by knowledge. (Because they'll want to change something regardless of the state)
I recommend the natural number game (also mentioned above) for a casual introduction to the mathematics side, just to get a feeling.
If you are serious about learning lean, I recommend Functional Programming in Lean for learning it as a programming language and Theorem Proving in Lean for learning it as a proof assistant
Many people in the Rocq community see this as a no-go and some argue this will cause the system to be hard to use over the long run. In the Lean community, the interest in type theory is at a much lower level, and people see this as a practical tradeoff. They recognize the theoretical issues show up in practice, but so infrequently that having this axiom is worth it. I consider this matter to be an open question.
If you look at what's being done in the communities, in Lean the focus is very much on and around mathlib. This means there's a fairly monolithic culture of mathematicians interested in formalizing, supplemented with some people interested in formal verification of software.
The Rocq community seems much more diverse in the sense that formalization effort is split over many projects, with different axioms assumed and different philosophies. This also holds for tooling and language features. It seems like any problem has at least two solutions lying around. My personal take is that this diversity is nice for exploring options, it also causes the Rocq community to move slower due to technical debt of switching between solutions.
Trying to formally prove something and then failing is a common way people find out they forgot to add an hypothesis.
Another pitfall is defining some object, but messing up the definitions, such that there's actually no object of that kind. This is addressed by using test objects. So suppose you define what a ring is, then you also prove that real numbers and polynomials are examples of the thing you defined.
I joined binwiederhier for a while in developing Syncany and he invited me for an internship at his current employer.
The experience I gained both in contributing to Syncany and said internship helped me indirectly land the role I'm currently in, and my open source experience in general helped me land a cool engagement where I got to do some innovative open source projects.