TechWorkRamblings

by Mike Kalvas

202206282018 Curriculum design for software engineering

#wip #new #source

I 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:

etc. but also think about things like

Think about

Methods

  1. Required courses
  1. Elective courses
  1. After-school programs

“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):

  1. Explicit instruction
  2. Deep structural similarities between tasks
  3. 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:

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?

Goals, means, and avenues are the core.

See: the Bootstrap program