Looking for a discrete mathematics course by programming

148 Views Asked by At

Background: I am a totally blind programmer. That is, I cannot see at all. I am using a screen reading software to read texts, but not images. I am unable to get a computer science degree. Now I am a full-time web developer but I am still very interested about computer science so I am learning as much as I could on my spare time. This post was inspired by section 2.3.3 of SICP https://sarabander.github.io/sicp/html/2_002e3.xhtml#g_t2_002e3_002e3. For many years I am trying to find ways to study discrete math. There are many free wonderful resources and courses. Unfortunately, everything I could find (E.G. MIT OCW, Book of Prufe) uses math rendering that can't be read by my screen reader. After much searching, I believe in the web at least, the mathjax library is the only library that allows my screen reader to read equations (there could be more, but I am not sure). Unfortunately, mathjax is not available on pdf format. And all lecture notes I could find are all in pdf format and have equations that is ignored by my screen reader.

Then, I have thought of bypassing my notation problem completely. Maybe there is a course that teaches discrete math through programming just like how SICP did it with sets. I know SICP does not intend to teach discrete math, but I feel that the same idea could be applied when actually learning discrete math. I am hoping that by using this approach, even though the mathematical notation are invinsible to my screen reader, I still have some code (maybe written in a functional language?) that I could play with to understand the concepts. I am counting on abstraction here (E.G. I am confident that objects in graph theory can be represented as data structures).

I would like to ask: is there such a course? Can anyone recommend a course like this? Like a discrete math and programming combination? Topics I am interested in are combinatorics, asymptotic notation, number theory, graph theory

Also, I am aware that bypassing math notation is extremely dangerous to do. After all, reading and writing prufes almost involves reading math notation. I have come to accept that this might be my (or my screen reading software)'s limitation that cannot be fixed at the moment. I will settle for learning the concepts enough to at least being able to pruve the time complexity of my own programs.