1000 Programmers from Salta
On Friday November 12th 2021 I gave a talk to the teachers of the 1000 Programadores Salteños initiative, in Salta, Argentina. I chose a talk about pedagogy with Python, and took the opportunity to recall and reflect on what it was like to teach the Applications of Mathematics in Engineering course.
What did I learn teaching the MAT244/MAT281 course - Applications of Mathematics in Engineering?
- Consider the course as a (software) product where the students are the clients: stay in tune with the industry’s tools, ask for feedback frequently and iteratively improve the content.
- Experiment. Dare to let things not work out during class. Put yourself in a student’s shoes: don’t forget what it’s like to not know!
- Teach skills and competencies, over content. “Learn in case” vs “learn in need”.
- Don’t let evaluations be irrelevant. We can only inspire someone to learn on their own. Avoid traditional tests; it’s better for students to generate impact by solving a real problem for some community.
- Use real examples, attractive images and videos, interesting datasets, like the following:
- https://archive.ics.uci.edu/ml/datasets.php
- https://es.datachile.io/
- http://datagramas.cl/courses/infovis/resources/
In short, Don’t teach a course, start a revolution!
Disclaimer: I’m presenting the successful case. But I’ve also taught other courses without the same success: Mathematics 1 (calculus and algebra, first year engineering) and Introduction to programming (python, first year engineering). I’m not saying it’s easy. But when you manage to make changes, it’s satisfying and it impacts the students’ lives.
What new topics would I include in the course?
- Data engineering: The software engineer, data engineer, data scientist and similar roles are becoming more and more “full stack” and have to be self-sufficient in the use of data. Students (future professionals) need to know:
- Basic notions of SQL
- Basic notions of visualization (charts and dashboards)
- Basic notions of data pipelines and ETLs.
- Ethics: Ethics topics, the impact of algorithms in real life, GDPR and data protection.
- Advertising and the attention economy: In a scattered world bombarded with distractions, having focus is a superpower. Give notions of how advertising works and why all products want our attention 100% of the time. Notions of flow state and deep work.
- Community and open source: FOSS (Free Open Source Software) is present in every company. Contributing to FOSS is an ethical imperative (and a marketable skill). Finding and creating communities of interest. Participating in technology events, such as PyCons. Some possible tasks:
- Contribute to the documentation of an Open Source project
- Make a Pull Request on an Open Source project
- Edit a wikipedia article
In addition, I recommended some libraries and used a streamlit app to try teaching some Machine Learning concepts.
I think it was very entertaining; the hour flew by. At the end we had a lively exchange, although I would have liked to have a bit more audience… I think other teachers could have made good use of the content and the presentation
All the visualization options for the talk (in jupyter notebook) are in the github repository.
The web application is on github and (maybe online) at share.streamlit.