Learning by Writing Software
Using Basic Computer Programming as a Tool to Teach Other Subjects
Assumptions
My Idea: Learning by Writing Software
Lessons call for students to create computer programs that demonstrate knowledge unrelated to computer science. That is, I want to teach kids a concept by teaching them to write software that proves out that concept. That is, I want to teach kids basic programming in order to teach them grammar or biology or music.
Example
Suppose I were teaching poetic meter. I might have the students write a computer program to identify whether a line was in iambic pentameter.
What would a computer need to do that?
But what would the students learn while setting it up?
Objectives
Possible Enhancements
Methodology
Since my goal is not to teach computer programming per se, I wouldn't approach programming as a computer science class might. Practicing bitwise arithmetic and knowing heap memory from stack memory are not required.
I want to treat programming like a chalkboard or like Google. A teacher can use them without explaining why the chalk adheres to the slate or how Google searches billions of web pages in fractions of seconds.
Additional Examples
Assumptions
- Rudimentary programming is accessible to kids.
Some new computer-programming languages are easy to use. Young people learn software quickly.
- Programming is fun.
There's a real and immediate satisfaction in making a computer do something it couldn't before.
- Computer programming both requires and facilitates learning about other subjects.
In order to make a computer do something-anything-a person must first know how to do it herself.
My Idea: Learning by Writing Software
Lessons call for students to create computer programs that demonstrate knowledge unrelated to computer science. That is, I want to teach kids a concept by teaching them to write software that proves out that concept. That is, I want to teach kids basic programming in order to teach them grammar or biology or music.
Example
Suppose I were teaching poetic meter. I might have the students write a computer program to identify whether a line was in iambic pentameter.
What would a computer need to do that?
- A way for a person to enter a line of text.
- A stored list of words with their syllable counts and accent patterns.
- An ability to look up words in the stored list.
- A set of rules for testing iambic pentameter.
But what would the students learn while setting it up?
Objectives
- To set up the list of words and accents students would work through exercises "hearing" meter.
- They might disagree on the accents on some words and have to look them up: a lesson in "long" and "short" markings and in dictionary usage.
- While creating the list of words, they would discover that polysyllabic words generally have fixed accent patterns, but the "long" or "short" accents on monosyllabic words depend on context.
- Students would learn the distinction between meter and meaning: the computer wouldn't need to know definitions or pronunciations, just accent marks.
- Debugging the program would require them to test a line's meter by hand and compare their own results to their programs'-repeatedly. This would exercise their skills at manual scansion.
- While testing and using the program, they might discover that some words (dactyls, for instance) can never be iambic.
- Logical concepts: the "If . . . then" clauses, for instance, that are involved in all computer operations.
- Artistic expression in designing both the algorithm and the visual interface.
- Problem solving.
- Planning and implementing a design.
- Iterative editing ("debugging" to programmers).
- Keyboarding skills.
Possible Enhancements
- Once they built a working program, students could adjust it to detect anapestic dimeter.
- They could test it on lines of "real" poetry, both familiarizing themselves with the poetry and learning the limitations of such a rigid interpretation of meter.
- If the programs were designed to be "web-enabled," students could post the software to the school's web site where anyone could interact with it.
Methodology
Since my goal is not to teach computer programming per se, I wouldn't approach programming as a computer science class might. Practicing bitwise arithmetic and knowing heap memory from stack memory are not required.
I want to treat programming like a chalkboard or like Google. A teacher can use them without explaining why the chalk adheres to the slate or how Google searches billions of web pages in fractions of seconds.
Additional Examples
- History students could create a "computer career-test" for Elizabethan England. They could study up on some Elizabethan "jobs," from courtier to peasant farmer to blacksmith, and generate a multiple choice, interactive quiz along the lines of the Strong Interest Inventory to recommend a career. ("Do you like to work with your hands? Would you laugh at the king's jokes even if they weren't funny?")
- Students of grammar could program an online "Mad-Libs" type of software that would teach parts of speech while creating nonsense stories out of their input.
- Music students could write a program to transpose notes, entered as letters, from one key to another.
- Biology students could create software to predict the inheritance of dominant and recessive genetic traits via sexual reproduction.
- Chemistry students could write a program that would return a molecule's atomic weight by adding up the weights of its constituent elements.
- Students in an English class could follow a sample from one of my introductory programming books to generate amusing, random haiku. Variations could produce "poems" with alliteration or basic rhyme.
0 Comments:
Post a Comment
<< Home