202206282018 Curriculum design for software engineering
#wip #new #sourceI want to teach computer science, what should I do?
vs
I want to make software, what should I do?
Need to ask questions about the desired solution to figure out things like goals, constraints, and methods before you can build that solution. In the education case, the “solution” is the curriculum.
Ask things like:
- What age are the students?
- What exposure have they had before?
- Is this required? An elective? An extracurricular?
- How long is the class? How often does it meet?
- Is it even a class or something else?
- How many students are in the room?
etc. but also think about things like
- Is there internet access?
- Is the teacher new to programming?
- Can the students type?
- Are there students with disabilities?
- Do the students have regular computer access at home?
- Do the students have regular computer access at school?
Think about
- Equity, Rigor, and Scale
Methods
- Required courses
- Don’t scale though, need certifications for teacher. The economy for experts means that they’ll go to Jane Street and learn a huge amount more than public HS
- Rigor has to take a hit because everyone has to pass the course to graduate
- Elective courses
- Not equitable. Hugely biased (currently) to white and asian males, failures and achievement gap #thread lead to further disparity.
- After-school programs
- Very inequitable, not rigorous
- Volunteer staffing is hard to maintain
- People would miss some classes and this (along with all STEM learning) is incremental (it builds on the previous lesson, so you can’t miss or fail) #thread
“Everyone should learn CS” is not the same as “Everyone should take a CS class”. Maybe the solution is integrated CS in normal coursework. For instance, algebra or economics could be taught through computing.
Algebra is the “Gateway to STEM” #thread. This is where students move from “math is hard” to “I can’t do math”. Math moves from “procedure, do this to get the answer” to abstract thinking where you don’t have a set point where you can “just do this”
Algebra is a graduation requirement and success is highly tied to income and ethnicity.
Integrative learning requires transfer though.
Transfer is when a skill learned in one context is used successfully in another
Requirements of transfer (it’s hard and surprisingly brittle):
- Explicit instruction
- Deep structural similarities between tasks
- A process for performing tasks
Use functional programming with sane number systems for teaching coding through algebra.
One of the key goals is to get students to realize that one phenomena can be expressed in multiple ways. There are multi-stage, multi-representational, and multi-viewpoint processes for teaching and design.
For instance, $f(x) = x^2 + 1$ is the same as a graph of an upward parabola is the same as a table of x
values in one column and f(x)
values in another, is the same as a picture of two set spaces with dots and arrows from the set A
to B
with $f$ moving points between them.
We can teach by using worksheets just like math.
Coding Thing | Math Thing |
---|---|
Type specification | Domain/range |
Test cases | Input/output tables |
“Code” | Symbolic form |
Multiple representations of code corresponds to multiple representations of functions.
Dependencies:
- Language does matter
- Curriculum
- Pedagogy
All matter and are deeply interconnected.
Don’t have to stop with algebra though. Can do a data science one in the context of stats, tech, social studies, or math classes. The students here produce reports of which the programming is a tool and a part, not the point.
There’s another program for physics.
How does this succeed?
- Focus on teachers: professional development, support, materials they need, problems, they encounter.
- Personalized game/curriculum design (gets students to take ownership through creativity)
- How to teach problem solving: worksheet style naturally appeals to all-but-computer-science teachers.
- Solves problems people actually have, not fun ones.
- No administrative detail is too small.
Goals, means, and avenues are the core.
See: the Bootstrap program