Deprecated: Creation of dynamic property wpdb::$categories is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$post2cat is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$link2cat is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 554

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 595

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 535

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 544

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 960

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 980

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 992

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 1003

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 199

Deprecated: Creation of dynamic property Automattic\Jetpack\Connection\Manager::$error_handler is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-manager.php on line 91

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Instagram_Gallery::$is_wpcom is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-instagram-gallery.php on line 23

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Mailchimp::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-mailchimp.php on line 17

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 21

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$is_wpcom is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 22

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Gutenberg_Available_Extensions::$wpcom_is_site_specific_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/gutenberg-available-extensions.php on line 20

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 23

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_site_specific_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 24

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Subscribers::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/subscribers.php on line 15

Deprecated: Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38

Deprecated: Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38

Deprecated: Creation of dynamic property WPCOM_Widget_Goodreads::$shelves is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/modules/widgets/goodreads.php on line 33

Deprecated: DateTime::__construct(): Passing null to parameter #1 ($datetime) of type string is deprecated in /var/www/twodee/blog/wp-includes/script-loader.php on line 348

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_classic_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 347

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 349

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_block_side is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 350

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$panels_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 351

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$used_block_buttons is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 354

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 3030

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Warning: Cannot modify header information - headers already sent by (output started at /var/www/twodee/blog/wp-includes/class-wp-block-list.php:14) in /var/www/twodee/blog/wp-includes/feed-rss2.php on line 8
writing – teaching machines https://twodee.org/blog Mon, 13 May 2019 04:15:15 +0000 en-US hourly 1 https://wordpress.org/?v=5.7.1 Letter of Reference https://twodee.org/blog/15552 https://twodee.org/blog/15552#respond Sat, 24 Dec 2016 14:39:32 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=15552 [...]]]> Dear ██████,

I am writing on behalf of ██████, a former student of mine who is ready to strike out on his own after graduating this May. He has applied at your company for a Software Engineer III position and has asked me to provide a letter of reference. I wish to recommend him without equivocation.

██████ and I first met when he took an algorithms course with me his second year. I quickly discovered that he knew skip lists extremely well. I recall an assignment in which most students were submitting quadratic-time solutions, while his submission had much lower performance. I asked him how he achieved this. “It’s my condition,” he explained. In a web development class, he was unanimously crowned by his classmates as the “DOM Ox” for the way he plowed through the web services homework with HTML scraping. In software engineering, he adhered doggedly to the principles of agile software development, standing up his team at their daily meetings.

Looking back at some of his old exams, I do not think I’ve seen answers more clear than his. And he was usually one of the first to finish!

The summer after his junior year, ██████ interned at a reputable consulting company in our area. His project manager told me in the end-of-program evaluation that ██████ contributed significantly to some POS software, and that he brought a level of performance that she does not usually expect from interns. “He’s a rare breed. I can’t seem to work him too hard. He stops at nothing,” writes the supervisor. “It’s the least he could do.”

In closing, I cannot say enough good things about ██████. You would be extremely lucky to have him work for you.

Sincerely,

██████

]]>
https://twodee.org/blog/15552/feed 0
The Thrilling Adventures of Lovelace and Babbage https://twodee.org/blog/15362 https://twodee.org/blog/15362#respond Fri, 28 Oct 2016 13:24:12 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=15362 [...]]]> This is my third post in a series of reviews on technology-related graphic novels. I had hoped to participate in a special session on such novels at SIGCSE 2017, but the the special session was not accepted by the reviewers. *sniff*

The Thrilling Adventures of Lovelace and Babbage is subtitled “the (mostly) true story of the first computer.” Author-artist Sydney Padua has fallen in love with these two characters from Victorian England, and her exaggerated retelling of their efforts to build the world’s first mechanical computer is probably a lot more thrilling than the adventures themselves, which were fraught with failure and rejection.

Spoilers follow.

Synopsis

As with any comic book superhero, we start with the origin of Lady Ada Byron. Her drifter of a father was poet Lord Byron, but he skipped town a month after Ada’s birth, never to return. In retaliation, her mother channeled Ada into a program of anti-poeticism, providing her a strict education in mathematics and the sciences. At 17 years of age, Ada attends a party and meets Charles Babbage, a loud-spoken thinkerer-tinkerer who was 24 years her senior. She immediately falls in love—with his difference engine, a machine that can apparently compute powers and solve quadratic equations.

Soon after, Ada enters into an uninspired marriage with a man named King, because that’s the thing to do, and they have a few children. Consistent with society’s long, confused picture of womanhood and motherhood, the children seem to disappear from the rest of the story, presumably to be raised by people that are not her parents.

Meanwhile, Ada enters into partnership with Babbage, translating into English a paper on the Analytical Engine written by a future Italian prime minister. Writing original papers was not something that women did at that time. Babbage himself apparently did not hold to this norm, as he writes in his autobiography, “The late Countess of Lovelace informed me that she had translated the memoir of Menabrea. I asked why she had not herself written an original paper on a subject with which she was intimately acquainted? To this Lady Lovelace replied that the thought had not occurred to her. I then suggested that she should add some notes to Menabrea’s memoir; an idea which was immediately adopted.” These notes ended up being 2.5 times as long as the translation!

Babbage had a love-hate relationship with the British government, which funded his work, but not to a degree that allowed him to deliver a usable machine or even usable calculations—except for a high-quality table of logarithms. The Queen visits Babbage and asks, “Pray, Mr. Babbage—if you put the wrong numbers in, does the right answer come out?” Just this week I was reading a paper that classified the Queen’s supposition that a computer can gloss over the programmer’s mistakes and still execute the desired computation as an intentionality bug. Lady Ada had a clearer head, writing, “The Analytical Engine has no pretensions to originate anything. It can do whatever we know how to order it to perform.”

At this point, the reader is deposited into a parallel universe, where Lovelace and Babbage actually complete their mechanical computer. We go on to see Lovelace and Babbage in a series of vignettes, with the Analytical Engine being used to spellcheck a new novel, to scratch Ada’s itch for betting on horses, to save the world from financial crises, and to explore imaginary numbers. We meet many of the important scientific thinkers of the time, some of whom really did have contact with the two inventors, but others of whom the author has cleverly interwoven more appropriately than history itself did. In our universe, sadly, the Analytical Engine was never fully realized.

Themes

Some of Babbage’s words summarize the technological revolution which he helped advance: “In mathematical science, it happens that truths which are at one period the most abstract, and apparently the most remote from all useful application, become in the next age the bases of profound physical inquiries, and in the succeeding one, perhaps, by proper simplification and reduction to tables, furnish their ready and daily aid to the artist and the sailor.” His and Lovelace’s efforts to build the Analytical Engine were scorned by many who saw it either as useless or, ironically, too useful, displacing too much human labor. Few can deny that computation has become the commodity that Babbage predicted and the foundation upon which modern society is built.

The size of Lovelace and Babbage’s machine is greatly exaggerated in this book. It’s so cavernous that it has catwalks, and a leopard hides in its recesses! Ada is seen many times in its belly, donned in the gear of an HVAC technician. The real machine machine was not so big physically, but to the brains of Lovelace and Babbage and to any computer scientist, it certainly must have been.

Lovelace is heralded as the first example of a woman in computer science. Her suppressed poeticism bubbled up to see computers’ someday use in generating music. Her concern for presentation and exposition gave Babbage’s work more legitimacy than it would have had otherwise. Sadly, Lady Ada died of uterine cancer at the age of 36. Padua tells the account of what might have been for Ada, but her imaginative storytelling also predicts what might be for each of us, male or female.

Conclusion

Though not really related to the story itself, have you ever wondered what the writing process is like? Like how much time an author spends writing a paragraph, or what hidden logic is driving the author through the endless series of choices that is the writing process? Padua knocks down that fourth wall in this book. She’s a glass-bottom boat, taking us on a tour through the lives of this unlikely duo and all the while annotating her every art and word decision in a footnote.

This book teeters between fact and fiction so much that I could probably not assign it by itself in any of my classes. However, paired with another book on the history of computers, Padua’s account of the thrilling adventures would provide a refreshing break from our much slower history. Her parallel universe has a much higher density of ideas than our own.

One of the most compelling ideas that Padua makes manifest is the mixed-bagness of our heroes. Neither Babbage nor Lovelace had it all together, but they plowed ahead into something new, an arena of discomfort for most us. They did not make millions, but they made history.

]]>
https://twodee.org/blog/15362/feed 0
Secret Coders https://twodee.org/blog/15275 https://twodee.org/blog/15275#respond Sun, 09 Oct 2016 12:11:54 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=15275 [...]]]> My foray into technology-themed graphic novels began with a book about consumerism, but now we turn to a book on what I call developerism—the insatiable need to design and make your own stuff using the computer. Gene Luen Yang and Mike Holmes have published two books so far in a series called Secret Coders, which pays homage to a brief moment of educational brilliance in the 1980s. During that time, our schools actually taught young people to code using Logo. But the moment faded away, and fewer students now learn how to code in school. These books aim to fix that problem. Let’s have a look.

Spoilers lie ahead.

Synopsis of Book 1

The first book of the series introduces us right away to our heroine: Hopper Gracie-Hu. She is just starting school at the dreary Stately Academy. Not five minutes in, she gets in an altercation with three young men who splat her with chocolate pudding and one of whom (Josh) feels the need to remind her that she’s a girl. The school appears to be staffed by monsters of European vintage, but neither book 1 or 2 has elaborated on this. The worst part, however, is the four-eyed birds. Generally, only the outer two eyes are open. Despite all this, Hopper is bored by her classes.

At lunch she meets up with Eni, the owner of the chocolate pudding. He’s a big guy, and Hopper fears being pummeled for having spat some “lung pudding” back at him. But instead he is intrigued by Hopper’s number 7 earrings. The bird looking at them has its three rightmost eyes open. Eni deduces that the birds understand binary numbers, and that explains why the number 9 is displayed all over the school. Nine is 8 + 1 or 2^3 + 2^0, and the birds who see it only open eyes 3 and 0—which looks halfway normal. This evidence convinces Eni that the birds are robots and that someone is trying to hide that fact.

Through this mystery, Hopper and Eni become fast friends. They agree to look for clues in the creepy shed, which the gruff janitor had shooed Hopper away from earlier, saying, “These doors aren’t meant for the likes of you, you little hooligan!” (Is this comment hinting at the sexist poison that has for so long blocked women’s involvement in technology? I don’t know.)

Three birds share the combination to the shed’s padlock with their eye configuration, and Hopper and Eni discover within the most important character of the book: a programmable turtle robot. Eni also finds some printouts, of which Hopper says, “What is that? Looks like a computer threw up a bunch of letters and numbers onto a piece of paper!” The textual vomit is actually a computer program for clearing the sidewalk written in the Logo programming language. When Eni speaks ClearSidewalk, the turtle’s eyes light up, he exits the shed, and begins traversing the school’s sidewalks with a leaf blower in hand.

Hopper and Eni are delighted at their discovery until the janitor shows up and shines a 15 on the wall with a filtered flashlight. All the birds’ eyes open, and Hopper and Eni run for it. There seems to be no hope for escape, but then Hopper sees Eni’s basketball jersey with the number 10 on it. She folds it over so only the 0 shows, and the birds thud to the ground with closed eyes.

The next day at school, Hopper and Eni discover that they can program the turtle themselves by speaking aloud forward and turn commands. But Hopper goes a bit too far when she speaks PD (short for pen down). The turtle’s leaf blower activates and blasts a messy sandwich into the face of Hopper’s Chinese teacher. Hopper is sent to the principal’s office, where we learn that the Chinese teacher is actually Hopper’s mother, a fact which has been heretofore hidden from us. This thickens the family drama that has already been hinted at.

Eni joins Hopper in the principal’s office, and while waiting, they mentally trace out a routine named OpenSesame that Eni found in the printouts. It makes the robot trace a hexagon. The principal assigns them trash duty so “they will learn to stop being trash.” (Angry and funny don’t go together.)

After school, Hopper embarrasses herself at basketball practice. She had been talking up her skills, but Eni discovers that Hopper is only trying to relish the memories of her father, who loved basketball and called it “math in motion.” Hopper deeply misses her father, who walked out on his mother (and her) after a fight. As they walk home, Hopper sees a hexagon in the school courtyard, and Eni wastes no time in pulling the turtle out of his backpack. They run OpenSesame, and a staircase leading underground opens up. Just as they are about to descend, Eni’s friend Josh appears. Josh has been egging Hopper on ever since they first met, and he is not warmly received. However, Hopper is pretty certain that they will find skeletons with cash underground, and that Josh would be useful as bait.

Instead of skeletons, they find angry four-eyed birds and Mr. Bee, the janitor. It looks like their luck has run out, until Mr. Bee sees the “Gracie” on the back of Hopper’s jersey. (Basketball jersies stop many hurtling plot trains on a dime in this novel.) She asks if Albert Gracie is her father, which she confirms. Mr. Bee relents and shows his vulnerable side. He admits that the turtles and birds are his inventions, but he says no more until the kids write a program to trace out a spurred, benzene-like hexagon. That’s exactly where book 1 ends.

Synopsis of Book 2

In the second book, Secret Coders: Paths and Portals, Hopper, Eni, and Josh win over Mr. Bee by writing a Logo program that draws out what looks like a benzene ring. They learn that Stately Academy replaced an older school in which Mr. Bee himself was a teacher. The school taught students how to teach robots new commands. Mr. Bee says, “Our robots weren’t meant to be mere appliances. They were meant to be instruments of art!” When the kids ask why the school was closed down and demolished, he responds, “Because I was wrong. About both human nature and technology.” We don’t learn what he means by this.

Back home, we discover that Hopper has stolen a miniature turtle robot from Mr. Bee. She programs it to complete her Chinese writing homework. The next day, her mom sees the uniformity of the final product and sends her to principal’s office for cheating. The principal observes that a machine assisted in the homework, taking on a creepy and uncharacteristic warmth when he asks her if she used a robot. Hopper doesn’t trust him and admits to nothing. The principal assigns her several more weeks of trash duty with Mr. Bee, which at this point is not a punishment.

Josh and Eni join Hopper in her duties during lunchtime, and Mr. Bee teaches them about variables. They program a rectangular spiral and never do get around to taking out the trash. Mr. Bee says, “Robots are much better at those sorts of precise, repetitive tasks.” Hopper tactlessly applies this same argument in her discussion with her mother about Chinese homework. At basketball practice, she is cut from the team. She runs from the gym in tears, and Josh and Eni follow to comfort her. But then the rugby team shows up, and they appear to be hungry for human flesh.

The three heroes code up a quick spiral program on the turtle in Eni’s backpack, which ties the rugby players up in a hose. But more players come and nab the turtle, for which the principal had apparently been looking. For their efforts, the players will apparently get new rugby uniforms.

The next day, Mr. Bee teaches them about random numbers, which they use to draw wild square art. The kids hide the fact that their robot was stolen from them. Eni and Josh crush the competition at their basketball game, and afterward, Eni skips out on meeting with a high school recruiter to be with his friends. Josh and Hopper put aside their differences when Josh presents all three of them with “Coders” jerseys. Their numbers are in binary, and Hopper is 0111.

After an awkward kiss on the cheek, sounds of rugby players are heard. The three hide and watch the principal and rugby team march by carrying a tied-up Mr. Bee. They head to the underground turtle storage, and the principal demands to get his hands on the most powerful turtle, but we do not learn the reason. Instead, the book ends with Eni telling the reader to compose a program that will make the robot move and turn randomly to thwart the principal and rugby players.

Themes

The central message of the book is that learning how to program is the one superpower that you can sign up for. The narrative of the book is sprinkled with nods to the transformation that Eni and Hopper are going through as they write code for the turtle. When they first find it, Hopper annotates, “This is where we started changing into what we’d eventually become.”

The novel does not stop at just declaring the idea that programming is a power that can be acquired; it aims to help the reader acquire it. Most of the challenges that Hopper and Eni face are given first to the reader, who is encouraged to overcome them before Hopper and Eni do. The chapters and even the entire book conveniently end in the middle of these dilemmas to give the reader a natural disruption point. Instead of solving the problems, however, my oldest son just continued reading, as did I. Sadly, the author is trying to do what I have often tried to do as an educator: add interactivity to a medium that doesn’t support interactivity. I’m usually disappointed by my attempts, and I don’t think Secret Coders fares much better. An accompanying website may someday fix this situation, but it currently has little interactive content.

This first book paints a dismal portrait of formal education. Hopper loathes her classes. All the interesting things that Hopper and Eni learn happen on their own with the robot. This theme is consistent with the feelings of Logo designer Seymour Papert. Papert advocated for constructionism, the theory that we learn best when we build things that can be perceived by others. The student vs. school theme loosens a bit at the end, when Mr. Bee starts to open up.

Conclusion

Secret Coders is a book whose impact is hard for me to judge. I am filled with pro-Logo bias and many years of computer science experience. I am in the choir and it preached to me. I have no way to judge if it succeeds in its mission of sparking in its readers a taste for programming. I certainly enjoyed the book, especially the binary-eyed birds, but my enjoyment probably stems from my familiarity with its ideas and support of its goals.

When it really comes down to it, however, I think that pedagogic perfection is less important to inspiring the young than observable passion in the teacher. (As if we had to choose.) Yang certainly demonstrates that passion, and I think this book is one of many tools coming around that will help us return to and surpass the educational brilliance of the 1980s. Bring on the series, Gene and Mike.

]]>
https://twodee.org/blog/15275/feed 0
In Real Life https://twodee.org/blog/15161 https://twodee.org/blog/15161#respond Sun, 18 Sep 2016 11:49:54 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=15161 [...]]]> For SIGCSE 2017, I’m reading a bunch of graphic novels related to computer science and technology. First up is In Real Life, by Cory Doctorow and Jen Wang. I share here notes and reactions from my reading.

Spoilers lie ahead. I have to write as much down as I can, because the book is due back to the library soon. I won’t own it, but not because it isn’t worth owning.

Synopsis

Anda is new in town. She’s at the tender age of 16, that time where we start to outgrow our parents. She is not the slim, underdressed heroine that we find in graphic novels that want to sell. Rather, she is short and squat. Romantic love is not on her radar, but she hangs out with boys all the time—in the computer lab. This is a girl who’s about to change. She’s about to become…connected.

A “girl gamer” and clan leader named Liza visits Anda’s computer programming class and shares about an online game called Coarsegold. She invites all the girls in the class to join her girls-only clan. At home, Anda seeks her mother’s permission to join, saying the things a mother wants to hear from her introverted daughter, “A speaker came to my class today and said it would boost my self-esteem to play with a guild. It’s like a team sport.” Moments later, Anda is crafting her avatar, a Warrior named Kalidestroyer.

Other players quickly recognize Anda/Kalidestroyer’s skill. After she fells an army of undead with her spiked flail, clan member Sarge compliments her, muddying the distinction between avatar and human, “I like you, Anda. You’re like me, you’re bloodthirsty.” Ironically, Sarge hates to be called Lucy, her player’s name.

Sarge and Kalidestroyer join forces to destroy gold farmers, who violate the terms of the game by amassing resources to sell to individuals who don’t want to spend the time leveling up and collecting things themselves. Anda silently questions the integrity of this, but Lucy’s attention makes it hard for her to say no.

When Lucy dies in a battle, Anda continues the mission solo and slaughters a room full of busy farmers. But with the fog of Lucy lifted, she has a chance to see one of the gold farmers for who he really is: a 16-year-old Chinese boy trying to make ends meet. His name is Raymond. Though Lucy finishes him off after she respawns, Anda continues to meet with Raymond in the game, privately, learning of his 12-hour workdays at the computer, his injured back, and his lack of healthcare. Anda becomes determined to help him out.

But when Anda’s mother discovers that she has been chatting with “strange men on the internet,” she loses access to the game. While sulking in front of the television, she learns about strikes and collective bargaining, which she believes are key to fixing Raymond’s situation. Anda sneaks online at an internet cafe and tells him how he must organize with his coworkers and demand benefits from their boss. They agree to meet again the next day.

Raymond isn’t there the next day. One of Raymond’s coworkers tells Anda that Raymond was fired for conspiring against the company. When Lucy overhears their conversation, she charges Anda with conspiring with gold farmers. Lucy commands her tiger to go after the gold farmer, but Anda slices the tiger in half. This leads to a showdown between the two friends. Anda wins, if you can call it that.

The clan soon learns of Lucy’s and Anda’s duel and their raids on gold farmers, which violate the clan’s mission. Both of their memberships are suspended. All this turmoil coincides perfectly with Anda’s family vacation to the Grand Canyon. Anda is unable to work up a smile for the camera.

Back home, Lucy videochats with Anda. Lucy tells her that one of Raymond’s friends is looking for her. Anda sneaks out to the internet cafe to find him, but she has to create a new avatar since Kalidestroyer is blocked. She chooses the Sprite, the same class as the gold farmers. But her hopes are dashed when she realizes how weak her avatar is, and there’s no way she’ll be able to find Raymond’s friend with her low experience levels—until Lucy sends her a contact list of new clan members that had been training with them. Protected by their strength and resources, Anda finds Raymond’s friend, who chastises her for foisting Western ideas on a country that she doesn’t understand.

Still, he seeks her help in organizing his coworkers. On Anda’s request, the clan members distribute a manifesto to all Raymond’s gold farming coworkers. The manifesto calls for the employees to unite and seek benefits that will help them all. The plan works, and their employer concedes.

When the complete picture of Anda’s advocacy for Raymond and his coworkers is revealed, she and Lucy are unblocked from Coarsegold. At a parent night for her programming class, Anda is praised by clan recruiter Liza for standing up against bullying, which is enough for Anda’s mother to restore her internet access.

In the closing scene, Lucy and Anda are inducted as full clan members in a grand ceremony. Raymond shows up to dance with Anda. He has found a new gold-farming job, one that lets him spend time actually playing Coarsegold in order to harvest upper level resources. The ballroom empties when Lucy suggests they all go on a raid.

Themes

The book is called In Real Life, so we can pretty confidently say that one of its themes is the intermingling of the game and the outside world. Indeed, we see many examples of this:

  • Sarge commands a ferocious tiger named Danisa in the game, while her player Lucy commands a friendly cat named Danisa in real life.
  • While shopping with her father, Anda walks by the Health and Beauty section. In the next panel we see her coloring her hair red to match her avatar. The next day at school, Anda walks with the confidence that we have previously only seen her exhibit within Coarsegold.
  • The resources that the gold farmers collect in the game get sold outside of it for real cash. Likewise, Anda and Lucy get paid real money to kill gold farmers. Anda turns this “virtual blood” money into real snack food for her friends in a local gaming club.
  • When Anda learns the plight of a Chinese gold farmer who works 12 hours a day for meager pay and no benefits, she reverses from her in-game role of destroying gold farmers and begins investigating ways that she can protect them outside the game. Sarge has no tolerance for this humanitarian work, and Anda must step in and also defend the gold farmers in the game, this time from her own virtual boss.
  • Anda and Lucy end up suspended from the game for their harassment of gold farmers. The fallout in the virtual world effectively spoils Anda’s family vacation to the real Grand Canyon.
  • Immediately after Liza validates Anda’s noble defense of the Chinese gold farmers, Anda steps up her advocacy in other parts of her life. She locates the girl whom her gamer friends had dismissed earlier, and initiates a friendship.

Another major theme is the internet’s power to organize. Anda’s clan in Coarsegold draws in a profile of player that you don’t often find two of in the same hometown: a girl gamer. But within the game, scores of such women gather together in raiding parties. At the end, the clan members are able to distribute the manifesto out to the employees almost instanteously. Doctorow admits in the introduction that the ease of organizing is not necessarily positive: “thugs, bullies, racists, and loonies never had it so good.” He compares the cost and administration of activism in the 1980s the present day, robbing us of all our excuses for not taking a stand. These days you can still sit while taking a stand, says this book.

Doctorow additionally hopes, “that readers of this book will be inspired to dig deeper into the subject of behavioral economics and to start asking hard questions about how we end up with the stuff we own, what it costs our human brothers and sisters to make these goods, and why we need them.” I think this hope was clouded a bit by the fact that physical consumerism wasn’t a large part of the story. Sure, there was some ice cream, a few television binges, and an allusion to cheap manufacturing of zippers. But the connection between stuff and real human labor was an invisible bridge, if I ever saw one. Rather, the laborers were mostly gold farmers and the stuff was virtual stuff. Sadly, virtual consumerism just doesn’t tug at the heartstrings like physical consumerism. Probably because it’s all fake, and there are no chemicals and fumes involved. Maybe I’m just not young enough to be tempted virtual goods, but I don’t see them valued to the same degree as physical ones.

Conclusion

In Real Life shared the story of a girl who joined an online game to be somebody she was not in the physical world. Finally in a place where she was confident and respected, she had a chance to reveal her full human self, which probably wouldn’t have happened at school or even the D&D club. This is the power of the internet. It’s the door to many worlds, enough for each of us to be president or astronaut.

As a computer science educator, I could see myself using this book in an ethics course or in our orientation course for first-years. The technical content is low, but the conversation starters are many.

]]>
https://twodee.org/blog/15161/feed 0
Computer Science in High School https://twodee.org/blog/14818 https://twodee.org/blog/14818#respond Fri, 13 May 2016 01:45:48 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=14818 [...]]]> A student is working on a project about teaching computer science classes in high school and is trying to gather insights from folks about how it might be done. His questions and my answers follow.

Could you give a quick overview of what your process is for implementing these classes?

There’s a term sometimes comes up when people discuss curriculum: teacher-proof. This is one of those two-faced terms like “rightsize” and “right to work.” It complements the curriculum while denigrating the teachers: “These lessons are so good, not even the teacher can mess them up.” I believe that quality education requires the following of teachers:

  • A teacher must design and own her lessons.
  • A teacher must interact with her students.

A teacher-proof curriculum tries to route around both of these. Any educational reform that doesn’t put trust and responsibility in teachers’ hands is bound to have a short lifespan.

I believe teachers must be the ones to get computer science courses in schools. This means that they must know the content. There are many companies and non-profits out there developing learn-to-code platforms that students can use on their own. This is great, but the best of these also provide professional development for teachers so they too can learn the tools and how to incorporate them into classrooms. I’ve been trying to secure resources to host some of this professional development, and our proposed model looks like the following:

  • Teachers attend a “teacher camp” during the summer where they spend a few days working with their peers to learn some technologies. A key part of this camp would be watching students use these technologies and discussing with their fellow teachers what’s going on in the students’ minds and how they might respond. Teachers leave the camp with the task of designing some lesson plans.
  • Teachers return later in the summer for a technology youth camp. The camp is structured around the lesson plans they have designed. At the end of each day, they discuss amongst themselves how each lesson went.
  • During the following academic year, teachers integrate their lessons and others’ into their regular classrooms, sharing student artifacts and new ideas through social media.

Why do you believe high schools should offer computer science courses?

I offer a few reasons:

  • Computer science seems as relevant as any core subject currently taught in high schools. Computers pervade our workplaces and homes, and we will spend considerable time using them. It’s reasonable to think that we should learn to use them well and learn how to wrangle them to fit our needs. (Computer science == computer wrangling.)
  • If one thinks education should be vocational, computer science fits that criteria. If one thinks education should focus on liberal arts and mind expansion, computer science science fits that criteria. This is a field that should make everyone happy.
  • Much of our education system is delivered via instruction, where a teacher drops an information bomb on a classroom. Little of this information is retained. We can make make ideas stick better if we learn through construction, where students actively produce a simulation, an interactive narrative, a shape made from an algorithm, and so on. Such construction can certainly be done without the foundations of computer science, but virtual construction on a computer has a lot of advantages over physical construction: virtual resources don’t take up a lot space (an issue for many schools); deep learning requires exploring, experimenting, and the freedom to make mistakes (learning is necessarily a “wasteful” activity, which is hard to fit into a small budget); and coding in particular invokes higher-order thinking where one is constantly questioning and reevaluating design decisions made earlier in the construction process.

Do you believe these courses should be required for high school students?

Mandated classes have locked computer science out of schools for a long time. As much as I think taking computer science classes is a good idea, forcing them upon students would amount only to a regime change.

Also, student motivation for these computer science courses tends to be high, and I think requiring them will undermine the intrinsic motivation that we’ve enjoyed up to this point.

On the other hand, we struggle to achieve diversity in our field, and universal exposure to computer might help us find a better balance.

Does your process complete a teaching certificate for computer science?

My understanding of Wisconsin rules is that for a course to have a certain amount of technical content, the teacher of a computer science course must have a computer science teaching license. I believe only two schools in Wisconsin provide this licensure. I would love to see UWEC offer it too, and we have some great math education professors with strong foundations in computer science. We just don’t have enough of them.

Are the licensure rules appropriate? I think requiring specialty licenses is appropriate for standardized and common curriculum. Computer science doesn’t have that, and the licensure requirements effectively prohibit it from even gaining a foothold in Wisconsin schools.

That said, we would do whatever we can to make sure any professional development we offer counts toward the requirements of this licensure. We must work in the system we have in place until it can be changed.

What do you believe is the most difficult hurdle in regards to implementing these courses?

A former colleague told the story of a faculty member who held computer science courses for teachers in the summer. The intent was to equip teachers to offer computer science classes in their schools. However, most of the teachers who went through these courses gained enough skill that they quit teaching and got jobs in the technology industry. The contrast of working conditions and pay between these two careers is hard to deny. Unless we can plug this brain drain by giving teachers respect and a more competitive salary, we will have few teachers to carry computer science into the classroom.

]]>
https://twodee.org/blog/14818/feed 0
Changing Minds https://twodee.org/blog/14747 https://twodee.org/blog/14747#respond Thu, 05 May 2016 10:59:08 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=14747 [...]]]> I recently finished reading Andrea diSessa’s Changing Minds: Computers, Learning, and Literacy. My work on Madeup had me reading many books that mentioned this book, and I spent a good deal of time in diSessa’s earlier Turtle Geometry. So, it was only a matter of time before I read Changing Minds. In it, physicist diSessa discusses his work on developing a computational learning platform named Boxer, and as someone who’s trying to build his own such platform, I find myself thankful for him helping me steel my nerves against the rejections and skepticism I am bound to encounter.

My reading of the book is worth more if I publicly reflect on it, so I offer below some of the ideas that pinged around my head as I read Changing Minds.

Tools vs. Problems

The author notes that we educators assign problems that require students to exercise a particular tool or strategy we want the students to learn. But tools and strategies are devised in order to solve problems and are therefore secondary to the problems themselves. By assigning artificially contrived exercises, we reverse the order of importance. We make the problems secondary and tools primary. The terrible consequence of this reversal is that students do not learn to apply the tools and strategies since they’re used to having us pre-equip them before they encounter a problem.

When I think about how we might make problems primary, my mind quickly gravitates toward work. Work is where problems are king, right? Clients present their problems but don’t specify how the workers are to solve them. That’s the authentic learning experience we want to emulate in schools!

However, a talk I attended a few days back reminded me that problems are not actually primary in our workplaces. I mentioned to a fellow from industry that we were using Haskell in my programming languages class, and he suggested I use a tool that “might actually help students get jobs.” He was as caught up in the tool craze as we teachers.

But tools aren’t really what’s important to him and his company either. In our workplaces, both problems and tools are less important than solutions. Solutions are such a big deal that companies milk them for everything they’re worth, even socially engineering more problems for their solutions to fix than consumers knew they had. Legacy solutions are propped up for years because a new solution would be too expensive. Wheels are not reinvented. And neither are employees’ brains.

To maximize learning, we need a continuous flow of new problems sparking new solutions. We need to keep the solving going. This can only happen in the frivolity of an academic setting, where we are not concerned with costs and efficiency like our profit-minded friends. Furthermore, problems can never be primary if we don’t own them, if they come from our clients instead of ourselves.

So, if workplaces aren’t the best place for expanding our brains, what can we do at schools to make sure problems are primary? I don’t have an answer, but I know what I would like school to look like. A few years ago I taught a team-based, open-ended game development class. At the beginning of the semester, I asked everyone to draw an avatar representing how they wished to contribute to their teams. I drew an avatar too: I was the “Libarbarian,” with rippling chest and arms like tree trunks. But more important was the arsenal of books behind me. I wanted my role in this class to be clear to my students: I wasn’t in this to flex my knowledge muscles and dump lessons on them, just as a librarian doesn’t just dump books into your bag. Instead, you and the librarian have a conversation about your intellectual pursuits—your problems—and the librarian connects you to resources.

Ignore the disproportionate head. In this class, we were trying to knock down the crippling perfectionism that turns us away from opportunities for new learning.

Owning and Knowing

In chapter 3, diSessa recounts a workshop that he put on for teachers. At the beginning of the workshop, the teachers rebelled, stating that they already knew that university academics could do interesting things with Boxer. They rejected the canned lecture about others’ creations and wanted the workshop to focus on making sure they could do interesting things on their own in Boxer. The author writes, “Owning and knowing are fraternal twins. Owning leads to knowing and vice versa.” To feel like they knew Boxer, these teachers felt like they needed ownership of the lesson.

Computer science is a field where ownership comes naturally. I am making stuff, often starting with a blank code editor, and I care about that stuff so much I end up learning a lot. I am not just observing the natural world and trying to bend it to my will. I feel sorry for my friends in the hard sciences who spend more time observing than making. Sadly, though, I don’t think these folks think the ownership we enjoy in computer science leads to the kind of knowing they care about.

For example, last week my university held a poster day for the many student research projects that have been going on throughout the year. A couple of students had been working with me on Madeup, and we designed a poster that had nothing but images of 3D models that we had built on it. There was no null hypothesis, no table of data, no talk of methodology. When we submitted the poster for printing, the printing service expressed concern regarding our content, suggesting we print a cheaper banner since what we had didn’t look like a real research poster. We ignored the suggestion. During the actual poster session, some visitors said that our project didn’t really sound like research. I must have been sick the day in school where we learned what real research looks like, because this isn’t the first time I’ve heard comments like these.

We didn’t fit the expectations of research because of all the ownership that we had to get through first. We were building a complex piece of software that didn’t exist before. We couldn’t just go out to a park and count birds. We couldn’t just measure silt depth every week at different locations along the river. We were so caught up in generating the object of study that we didn’t have any time left over to study it. But that’s okay, because I gained a lot of new knowledge simply writing Madeup.

Logo’s Wane

In Turtle Geometry, diSessa and Hal Abelson provide a thorough discussion of using Logo to think about math and science. The book was published in 1981, before Logo’s wane in popularity. In the much later Changing Minds, published in 2000, diSessa explains why he thinks Logo didn’t bring about the educational revolution that some had predicted. He says that a new computational medium must do two things to achieve success:

  1. It must support menial, practical use.
  2. It must support a learning-use cycle, by which he means that as we learn the medium, it becomes more useful.

Logo, he claims, met the second requirement just fine with young learners. The first requirement is where it failed—at least with teachers. I never had the privilege of learning Logo in grade school, but I think I can understand why teacher buyin was never achieved. Everything I read about Logo focuses on its turtle drawing capabilities, and while turtle drawing is great for learning math and computer science and making 2D art to hang on one’s refrigerator, once you move past that, what you have left is a general-purpose programming language with no obvious application. Logo as a turtle-drawing language enjoyed a sweet but limited run. Logo as a general-purpose language was bound to suffer the same fate of being ignored as I believe all of our general-purpose languages will suffer.

This post mortem frightens me a little bit as I consider my own work on a Logo-like environment. But I’m comforted by two things:

  1. Many projects are labeled failures simply because they don’t meet their own goals. Nevermind the positive outcomes your project did achieve, if you don’t meet your own goals, your project is a failure. Logo was demonstrably excellent at motivating students and teaching programming concepts. But it was billed as a tool for teaching general problem solving, and when proving this quality became difficult, the criticism began to pile up. The good news is that I do not believe Madeup to have any particularly revolutionary value and have not been in the business of overselling it. Madeup is a simply a platform for computational making.
  2. From a teacher’s point of view, the virtual domain of Logo is a perhaps bit too artificial. The output of Madeup is, I believe, more menial and practical. We can make things that don’t just hang on a fridge. I think teacher buyin is more likely because we can produce tangible objects.
]]>
https://twodee.org/blog/14747/feed 0
Navigators Talk https://twodee.org/blog/7709 https://twodee.org/blog/7709#respond Sat, 28 Sep 2013 21:53:30 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=7709 [...]]]> My friend and Navigators campus director Jeff Clochesy gave me the opportunity to speak at Nav Night this past semester. Nav Night is a weekly fellowship time of the Navigators campus ministry.

I’m Chris Johnson, which rhymes with Wisconsin. For the past six years I’ve been teaching computer science at the college level. You folks are fun. I’m glad to be here at UWEC and glad to be with you tonight.

The way I got into computer science was through hatred. I hated riding the bus in middle school. We lived twelve miles from town, so for me it was two hours daily of bumps and jostles and fearing for your life and having others put chewing gum put it your hair because they thought it’d be funny. I convinced my mom to let me go to the library after school instead and then I’d ride home with her after work. She consented. At the library I became engrossed by stories and decided to be an author. As I filled my notebooks with bad fantasy, I realized that if I was going to send these off to a publisher, I’d need to type them up. Enter the computer. Mom brought home her work computer on the weekends for me. Instead of writing more, however, I made maps in paint programs, composed music, and built web pages. I took a programming class in high school, got a good scholarship to study computer science in college because I knew what an iterator was, and I soon started my formal training as a computer scientist at a school very much like this one. My very first semester I also became a Christian. I fell in with a group of guys that didn’t put gum in other people’s hair but prayed for each other instead. Computer science through hatred, Christianity through love.

To make a long story short, I finished college and went to graduate school because I wanted to teach impressionable people. Six years in, I still want to. Tonight I’d like share with you a bit of what a Christian professor thinks about when he’s not grading.

At the beginning of every semester, I ask my students some questions so I can get to know them better: “What’s the last unassigned book you read?” and “What would you do with your life if computers didn’t exist?” Some will write answers that make me think they’re Christian, as in these examples:

  • B. had just read the Great Divorce. F.
  • M. had just read the Bible. Dropped.
  • N. would spend more time at church. Dropped. Can you tell where this is going?
  • J. had just read Revelation Unveiled. He’d enter ministry. C.
  • Z. had just read the Great Divorce. B.
  • J. had just read Dave Ramsey’s Financial Peace and played in a worship band. B+.
  • T. had just read Isaiah. A-.
  • D. says he’d do whatever God sees fit. A-.
  • Z. had just read the Bible. A-.
  • N. would become a pastor. A.
  • D. had just read The Doctrines of Grace and would be a theologian or farmer. A.
  • J. had just read The Screwtape Letters. A.
  • T. had just read the Lost World of Genesis 1. He’d become an actuary or enter full-time ministry. A.

I strung you along there at the beginning. Most of these folks got really good grades. I like to see Christian students perform well in their classes and, for the most part, they do. The sad part though is that I only remember two of these students. One of those two invited me to his wedding! Shouldn’t I have known these other Christian students better? Shouldn’t they have emerged as leaders and peer mentors or shouldn’t they have at least talked with me as a fellow human being? What does a Christian student look like? I have few ideas.

Caring

Sometimes I feel like my atheist friends have an advantage over me. Their only hope is this world, so it seems easier for them to get excited about data and theories and writing papers and other academic junk. I heard a statistician give a talk one time, and he asked us, “What do you think students are for?” His answer was, “To generate numbers. And you know what I do with those numbers? I rub them all over my body.” He really likes his field.

Then one day I picked up this book by John Muir. He’s a Christian guy who one day decided to walk from Indiana to Florida right after the Civil War ended—and he a Yankee. The purpose of his walk was to botanize, to inspect plants. One night he stopped at a farm house in the South, and his host started questioning his expedition:

“You look like a strong-minded man, ” he replied, “and surely you are able to do something better than wander over the country and look at weeds and blossoms. These are hard times, and real work is required of every man that is able. Picking up blossoms doesn’t seem to be a man’s work at all in any kind of times.”

To this I replied, “You are a believer in the Bible, are you not?” “Oh, yes.” “Well, you know Solomon was a strong-minded man, and he is generally believed to have been the very wisest man the world ever saw, and yet he considered it was worth while to study plants; not only to go and pick them up as I am doing, but to study them; and you know we are told that he wrote a book about plants, not only of the great cedars of Lebanon, but of little bits of things growing in the cracks of the walls.

“Therefore, you see that Solomon differed very much more from you than from me in this matter. I’ll warrant you he had many a long ramble in the mountains of Judea, and had he been a Yankee he would likely have visited every weed in the land. And again, do you not remember that Christ told his disciples to ‘consider the lilies how they grow,’ and compared their beauty with Solomon in all his glory? Now, whose advice am I to take, yours or Christ’s? Christ says, ‘Consider the lilies.’ You say, ‘Don’t consider them. It isn’t worthwhile for any strong-minded man.'”

This got me thinking, “There’s a non-Christian over there fascinated by how salmon spawn. There’s one figuring out how our brains develop. There’s one studying how diseases spread. Since I’m a believer in the God who created all this, can my delight in such subjects be any less than the non-Christian’s? There’s a non-Christian making software to help people. Can I be less excited to do the same?” No. Everyday we walk around in the fingerprints of God, and we don’t even recognize it. Our lives down here do not need to be separated from our faith. In fact, the only way we’re going to enjoy this Earth is by viewing our time here as a means of pursuing God. Whatever your major, whatever your job, whatever your irrelevant gen ed, milk it. You don’t have to have achieve worldly success and land a stellar GPA, but a Christian student does have to care.

Part of caring is being responsible. That means getting enough sleep. That means homework. That means reading. That means talking in class. Because you want to. In Corinth, there were apparently some slaves who felt like they could be doing something better in life than being slaves. Paul writes to them, and does he say, “Slavery is a waste of time! Drag your feet, leave spots on the dishes, and do everything half-heartedly until you are free!”? No, he says, “Slavery! Awesome. Work hard.” You can check out his particular phrasing in 1 Corinthians 7.

Who knows? Caring may have more impact than you think. Muir went on to influence Congress to form the national park system.

Okay. Point 1: Christian students care about their studies. Let’s move on.

Treasures in Heaven

During my freshman year I started reading the Bible for the first time. I very quickly fell in love with some of the language that Jesus uses. Like when he says, “Store up for yourselves treasures in heaven, where moth and rust do not destroy.” Whenever my pants got a hole in them or a dish would break, I’d say, “Oh, well. Treasures in heaven, right?” I knew that pants and dishes were not treasures in heaven, because they could not last, but I’m not sure I could have told you what things actually were treasures in heaven.

Then one day I went to church and learned. It was probably the second service I attended that day. I usually went to two churches and two services to make up for my teenage years. Pastor Dan asked us, “What are treasures in heaven? Treasures in heaven are people.” He said it really forcefully. People last. Things don’t. Ideas don’t. People do.

My first summer of college I had planned to work at a state park and mow lawns. I just needed some time to be alone and not busy after my freshman year. Then some of my friends started telling me I should go be a camp counselor with them at a Bible camp for middle-schoolers. “Too many little people out of control,” I said. “They probably will put gum in my hair.” Anyway, they wore me down, I got yelled at by the state park guy for backing out, and I ultimately spent three summers at this Bible camp hanging out with treasures in heaven. Each week a couple of us counselors worked maintenance—we’d mow lawns instead of having a cabinful of kids. Those weeks were boring.

In between those summers, back on campus, I made sure I never loved the computer without loving people at the same time. I signed up to tutor computer science classes, I served as a conversation partner for a Japanese student, I joined the welcome team at my church and got to drive a golf cart out to pick people up at the remote end of the parking lot. When it came time to decide my career, I knew it had to be as full of people as it was of technology. But maybe not middle school people. I wanted to teach college students. Whoo!

Whatever you are studying here, make sure you are signing up for 3 credits of living life with other people each semester. In particular, there are two kinds of people I read about in my Bible that especially need our attention. The first is the fringe. The weird people, the ugly, the awkward, the poor, the older. The second is our enemies. The people who live above you and smoke pot. The folks that support Governor Walker. The folks that don’t support Governor Walker. And maybe I can throw in a third kind of people? Talk to your professors. Let them know that you hear them, ask them who they are. They may be rude and arrogant and aloof, but these professors don’t just go away at the end of the semester. They are eternal beings. Thank them. Invest in them.

Okay. Point 2: Christian students invest in people, the real treasures in heaven. Let’s move on.

Motivation

School was very empowering to me. I was finally becoming good at something! And I was headed off to graduate school in Tennessee to become even better. All this was fulfilling a dream of mine—of being useful and important, a dream which had been fueled by nothing less than a proverb:

Do you see a man skilled in his work?
He will serve before kings; he will not serve before obscure men. [Proverbs 22:29]

I’d read about Joseph, a smart kid who got recognized by pharaoh and ultimately saved Egypt and his family from famine. I’d read about Daniel, a smart kid who controlled lions. My favorite heroes were the smart ones, and I was looking forward to entering those ranks. I’d gotten good scholarships, had an internship at a national laboratory, had won a mug design contest. I was on my way.

Then in my second year of graduate school, my eyes started giving me trouble. When I looked at a computer screen, they’d flare up red. Painfully. And it didn’t go away. A whole year I battled this with ophthalmologists and scary eye drops. I tried to hide the fact from my professors and peers. I put a timer on my computer to force me to take breaks. Nothing helped. It’s hard to be a computer scientist without eyes. So, I quit. My wife and I moved back to Iowa and volunteered at a Bible camp for the summer to collect our thoughts.

Hadn’t God intended for me to get a PhD? Wasn’t my way so clear that it must have been God who paved it? Hadn’t I been working on this since the days when Mom brought the computer home from her work? Right before Jesus dies on the cross, he asks, “God. God. Why have you forsaken me?” That question echoed through my own head. I realize now that there’s a better place to start. First ask, “God. God. Have you forsaken me?”

For you see, things were better back in Iowa. My eyes calmed down. I could look at a computer screen. Things were okay enough that my advisor said, “Your eyes like Iowa better. You stay there, but let’s finish this PhD thing.” And I did. Working remotely was certainly not easy, but probably the hardest part was the fact that Iowa was mostly filled with obscure men. “Where are my kings?”, I wondered.

My eyes still weren’t perfect, so I had to treat them with care. Instead of reading books, I started listening to audiobooks. I picked up Tolstoy’s Anna Karenina. There’s a character in that book named Levin. He’s a very rational and well-to-do guy who struggles with faith because it doesn’t make sense to him. Faith didn’t fit his sense of reason. Then one day he talks to an obscure man, a peasant, who says something that clears his mind. Levin starts thinking:

He [the peasant] said we must not live for our needs—that is, we must not live for what we understand and what attracts us, what we wish for, but must live for something incomprehensible, for God whom nobody can understand or define.

He goes on:

If goodness has a cause, it is no longer goodness; if it has a consequence—a reward, it is also not goodness.

Levin was able to enter into a relationship with God when he stopped sizing everything in life up as a business venture.

I viewed my education as a business venture, a vehicle to importance and self-worth. I was more concerned about the reward of being intellectually advanced than in learning. I had turned a good thing into a selfish thing. When my goals were threatened, I floundered. After I relinquished my dream of serving before kings, I decoupled my education from my self-worth and I learned that obscure men are the very ones I want to serve. Jesus tells me the last shall be first. Whatever you do for the least of these, you do for me. I didn’t want to check people’s credentials before I valued them.

In thinking about what I wanted to share with you tonight, I was tempted to say things that appealed to my sense of reason. Like “Work hard at school so that you can have a big impact later on.” Or “Be a good student so that the world can see how respectable and responsible Christians are and maybe want to join in.” The problem is, our sense of reason is driven by reward. The desire for that reward overtakes us and cheapens the pursuit. The pharisees prayed out loud on the street corners. Their reward was to be heard and they got their reward—“in full,” Jesus says. I think I’d rather have God hear my prayers.

That brings us to point 3: we do things because they are good. Leave it at that. You care about your studies because caring about your studies is good. You love others because loving others is good. We don’t need more reward.

Conclusion

Here you are at this university, writing papers, listening to professors drone on, and finding ways to get cultural diversity credit. You may be passively floating along, you might wonder about the worth of it all, or you might be eager to move on to bigger things. I want to leave you with the thoughts of an English professor that you may know and maybe have just read like B., Z., and J. C.S. Lewis told the following to students who were second-guessing going to class when they could instead be fighting battles in World War II:

The work of a Beethoven and the work of a charwoman become spiritual on precisely the same condition, that of being offered to God… This does not, of course, mean that it is for anyone a mere toss-up whether he should sweep rooms or compose symphonies. A mole must dig to the glory of God and cock must crow. We are members of one body, but differentiated members, each with his own vocation. A man’s upbringing, his talents, his circumstances, are usually a tolerable index of his vocation. If our parents have sent us to Oxford, if our country allows us to remain there, this is prima facie evidence that the life which we, at any rate, can best lead to the glory of God at present is the learned life.

You are here at the University of Wisconsin, Eau Claire, with 11000 others, seeking an education. Your situation of being a Christian student suggests what you are to do while you are here. Love what you’re learning and invest in people. Why? Because these are good things and God is their source.

]]>
https://twodee.org/blog/7709/feed 0
Generating Digital Audio for a Pitch https://twodee.org/blog/8026 https://twodee.org/blog/8026#respond Mon, 26 Aug 2013 21:06:19 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=8026 [...]]]>
Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 3030

Deprecated: parse_str(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/class.jetpack.php on line 4255

Deprecated: Creation of dynamic property Jetpack_Carousel::$localize_strings is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/modules/carousel/jetpack-carousel.php on line 339
Sound is a wave of pressure that travels through the environment. My high school physics teacher Mr. Oppelt told me that pressure is force applied to a surface, and so when we say that music has a beat, we’re quite right. It “beats” on things. Like our ear drums. It beats on other things too, like canyon walls and microphones, and that’s how it gets around.

Sometimes the pressure that sound exerts is higher than what our ear drum is used to. Other times the pressure is lower. A sound wave will oscillate between pressure higher and lower than this equilibrium repeatedly. This leads us to a very simple sketch of a sound wave:

A simple model of a sound wave. H means the pressure is higher than the equilibrium. L means the pressure is lower. The pressure oscillates between higher and lower as time progresses.

We want to come up with a mathematical way to represent such a wave. Know any function friend that could help us generate a wave? One that goes above equilibrium and then below equilibrium all day long?

You’re probably thinking sine or cosine. Yeah, those will work. But they aren’t our only choices. However, let’s talk about our other choices another day. For this discussion, we will stick with your sine function. The sine of time t oscillates between -1 and 1 all day long.

Our first go at a mathematical model of a sound wave, using the sine function.

The number of oscillations per second determines the sound wave’s pitch. For example, there’s a note, which we call A4, that oscillates 440 times each second. That would make me sick, but A4 is tough.

How can we generate a sound wave for A4, one that oscillates 440 times per second? I’m not just going to dump the equation on you. I want you to think about it. Ask yourself some related questions:

  • How many times does plain old sin t oscillate each second?
  • How can I alter sin t so that it oscillates once each second?

Regarding the first question, by the time t = 1 second rolls around, sin t hasn’t even started its descent. It doesn’t complete its first oscillation until t = 2 * pi. The proportion of its oscillation completed at t = 1 is 1 / (2 * pi). That’s how many oscillations it completes each second.

Regarding the second question, we want to speed the wave up so that our modified wave does at t = 1 what the original wave did at t = 2 * pi. Well, we can just change our function then to scale t up. When t is 1, make it behave like t = 2 * pi in our original function. Our new expression is sin(2 * pi * t).

What if we want 2 oscillations per second? When t is 1, make it behave like t = 4 * pi = 2 * 2 * pi.

What if we want 3 oscillations per second? When t is 1, make it behave like t = 6 * pi = 3 * 2 * pi.

What if we want F oscillations per second? When t is 1, make it behave like t = F * 2 * pi.

What if we want 440 oscillations per second? Hey, we’re regressing. The general case was just given. Set F = 440.

For any given number of oscillations per second, our model of the pressure wave is sin(F * 2 * pi * t).

With this little formula, if someone gives us a time t and a number of oscillations F, we can tell them how much pressure the wave is applying at that particular moment. That’s interesting, but I want to use this knowledge to generate some digital audio.

Sadly, sound is not typically stored as compact mathematical formulas, probably because most sounds are not pure monotonic pitches and cannot be expressed so simply. Instead of formulas, we create a list or array of discrete samples. Sample i stores the pressure value at the time corresponding to sample i.

To digitize a sound wave, we record samples of the pressure at various time values. If we don’t record enough samples, we won’t capture the smoothness of the wave. If we record too many, we waste disk and increase network transfer times.

To adequately capture our sound waves, we usually have to store a lot of samples. I mean it: a lot. A medium quality sampling records 22,050 pressure values each second.

Now, we want to walk along the sound wave and sample the pressure values. First, we make an array large enough to hold all the samples we want:

samplesPerSecond = 22050
nsamples = durationInSeconds * samplesPerSecond
samples = new float[nsamples]

Then we visit each element of the array and drop in its pressure value:

for i in [0, nsamples):
  samples[i] = sin(F * 2 * pi * t)

But wait! There’s something wrong with this solution. It won’t even compile. Why?

We’ve never given t, the number of seconds, a value. i and t are kind of similar, but i marks the index of the sample we’re on, not a number of seconds. We need to figure out what sample i’s time value is.

For i = 0, what should t be? 0 seems reasonable.

For i = 1, what should t be? That really depends on how “long” a sample is, or how many samples we’re recording per second. If we’re recording 22,050 samples per second, then each sample is 1 / 22,050 seconds long. In this case, for i = 1, t is 1 / 22050. For i = 2, is 2 / 22050.

In general, t = i / samplesPerSecond.

for i in [0, nsamples):
  samples[i] = sin(F * 2 * pi * i / samplesPerSecond)

We now have a collection of digital audio samples for a particular pitch. Whew.

From here, we could head a number of directions: write the array out to a file and play it, figure out how to generate different values of F for notes besides A4, try different oscillating functions, combine and concatenate sample arrays to produce melodies, and so on.

]]>
https://twodee.org/blog/8026/feed 0
Learning Elsewhere: Tales from an Extra-curricular Game Development Competition https://twodee.org/blog/7085 https://twodee.org/blog/7085#comments Wed, 26 Jun 2013 18:19:40 +0000
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
http://www.twodee.org/blog/?p=7085 [...]]]>
Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 3030
Following is a draft of a talk I am to give at ITiCSE 2013. The work discussed was done several years ago at Iowa State University, during my first full year of full-time teaching. I wish I had more quantitative results, but its absence is sort of consistent with the premise that we cannot do everything as educators.

Let’s start with a little game. I will make three statements about me. One of them is not true, and you, the audience, must figure out which it is. Here they are:

  1. One reason I married my wife is because she reminds me of a character from my favorite game.
  2. I think every computer science program should offer game development classes.
  3. I unknowingly recreated the depth-first search algorithm in 5th grade, when I was 11.

What do you think?

After this talk I’m happy to talk to you about my wife and my 5th grade exploits. For the time being, I’d like to talk about why I don’t think every computer science program should offer game development classes.

Game Development Education Fever

I can list a few reasons why adding gaming curriculum might not be a good idea. They all really have to do with maintaining our integrity as teachers.

Unqualified

Many of us are simply not game developers. The whole education system works best if we teach what we know. Irish game developer Tony Kelly writes this criticism in an essay:

Perhaps the single biggest criticism levelled at the current crop of courses in Ireland is the apparent re-badging of traditional media and computer science courses to include the word ‘games’ somewhere in the title, while failing to adapt the content and instruction offered to deal with real-world issues the games industry, and by extension the course graduates, face on a day-to-day basis.

His sentiment is echoed all over the Internet.

Interestingly, our not being game developers doesn’t mean we don’t recognize what a game developer needs to know. Monica McGill published a report in 2009 on the “expectation gap,” which is the difference between what academia values in their graduating seniors and what industry values in their new hires. She found through a survey posted to 15 game development programs and a number of game studios, that both parties have pretty much the same expectations. The only significant differences were that those 15 programs gave less attention to scripting languages and concurrency than industry would have liked, and those programs placed more emphasis on computer graphics than industry wanted. For most other skills, academia and industry tended to agree.

This sounds like a checkered flag: let’s roll out the gaming curriculum. However, a few things give me pause:

  1. 15 is not a large number. McGill says the candidate pool was only 40. Those 15 schools might have been top tier game development programs. It may be that our own departments don’t know what industry values.
  2. Agreeing on paper is easier than examining real graduates. Let’s put together a study where we look at game development graduates from schools ranked like our own and see what industry thinks.

A fundamental problem stands in the way of our being qualified: a game developer develops games. Few of us have the time to be both an educator and a game developer. (Do you know how many hours game developers put in each week?) A number of institutions have dealt with the lack of qualified teachers by hiring real game developers as adjunct faculty, which is better than pretending to have the skills in house.

Our Motivation

Many of us snidely accuse programs that start offering game development classes as motivated by student tuition money. However, maybe we’re just mad we didn’t think of the idea first. McGill again chimes in on this with a real study on the motivation behind gaming curriculum in the US and the UK. She has this to say about American motivation for introducing gaming:

In the US, the interests of the students (both current and prospective) ranked as the highest motivating factor (41%) followed closely by the interests of the university or department (35%). The interests of faculty ranked at 18%. Of lowest consideration were the interests of industry (6%).

Industry push was only 6%. That seems dangerous to me. (The UK was a bit more balanced.) Think about what we’re doing: students are being given more leverage than industry on deciding our curriculum. Our governments will not be happy when they hear about this. We might lose some funding.

I heard Edward Tufte once encourage us not to pretend to know what motivates people. When we look at just our own motivations, we see that they are quite soupy. We can only expect that others’ are soupy too. Having said that, whatever the motivations are behind this video, we should not be fishing for students in this way:

http://www.youtube.com/watch?v=cjCo2I3ooK0

This approach is manipulative.

We Can’t Do That to our Students

A third reason we should think twice about adding gaming curriculum is that we may be paving our students way to an industry that may suck all the joy out of their lives, destroy their marriages, and make their children emotionally bankrupt. Consider these statistics from a recent survey of 1000 developers, conduct by Game Developer magazine:

  • 24% work more than 50 hours a week.
  • 10% work more than 80 hours a week during crunch mode.
  • 22% regularly work on weekends.
  • 52% do not feel adequately paid.
  • 23% expect to be laid off after their current project.
  • 62% would advise friends and family to get a job in the gaming industry.
  • 58% have confidence in their managers. (That seems high, doesn’t it?)

The Alternative

My thesis today is not, “Turn away from gaming.” Games are a major part of our students lives. The Pew Internet & American Life Project reports that 97% of American children play video games. Nielsen Games says 50% of young adults in the UK play video games. We’d be silly not to take advantage of games. What I propose is that, instead of us lecturing on about something we don’t know about, let’s use the resources we do have to build an unstructured learning environment outside of any course. For the rest of our time today, I will share about one such environment that I helped put on: a year-long game development competition.

Outside the Classroom?

The first thought that should be jumping into your heads right now is “We are educators. We have to assess, and to assess, we have to have control and structure.” I don’t disagree, as long as we’re in the classroom. But working outside the curriculum means we have freedom. Our careers are not on the line, so we can step back and put students in charge of themselves, which has all sorts of advantages.

What are those advantages? Here are a few:

  • Autonomy leads to increased student motivation. I’ve heard education researchers say this isn’t open for debate any more, so we can stop reevaluating it.
  • When we plan a lesson or especially a whole semester, we reverse engineer our knowledge on the subject matter. We tell ourselves, “To teach D, I first have to teach C. And C relies on B and A. B doesn’t rely on A, so the the order of A and B doesn’t really matter.” In order to become the experts that we are, we’ve organized the content knowledge in our minds. However, can our predigestion of the course material rob students of organizing the knowledge themselves? The answer is yes. (See chapter 2 of How We Learn for some evidence of this.)
  • Students demand different things of themselves than we do. At Games + Learning + Society a couple of weeks ago, Edd Schneider and Tony Betrus shared about a study of task completion in the game Grand Theft Auto. When a teacher assigned tasks to students, starting with easy and progressing toward hard, more tasks got done. But when students picked their own tasks, they accomplished fewer tasks but they completed more difficult ones.
  • We can find different motivators to keep students involved—ones that don’t demand hours of our day like grades do. Competition is one such motivator. It doesn’t work for everyone, but some of the bloodthirstiness can be overshadowed by grouping students in teams. Those motivated by social cooperation are happy, and those motivated by competition are happy.

Our Competition

Setup

Okay, let’s talk about our competition, so that you can tell me what we did wrong. It started off because I sat in on a 3-D modeling class taught by a design professor. He said, “You know, we’ve got students in our two programs that love games. We should do something together.” Later, when a grant notice for student competitions came through my email, we applied and were awarded the grant. We were going to hold a game development competition.

The birthplace of our competition was a 3-D modeling class, where I made this model of my son’s pull toy.

Since our motivation was to build bridges between our two programs, we decided that students would team up and that each team that entered would have to have a member from a technology major, one from design, and one from business, because that seemed important. Others were invited to join too, but at least these three were needed.

Games are very diverse these days, so we figured we’d need some categories to help us distribute prizes in different directions. We created three: PC/console games, serious games, and mobile/web games. The teams would have the academic year to complete their games, and then at the end, we’d bring in judges to evaluate them at a public exhibition. The top three teams in each category would get a cash prize, provided by the grant money. The prize money was split evenly among team members. We can never give money away with state funds. Thankfully, this grant was from a private foundation.

We wanted teams to form early, but we knew there’d be personnel issues to sort out. We required teams to commit their rosters and category to us by the halfway point of the year.

Execution

We started the year off with a visit from a fledgling studio that had just published an Xbox game. People were excited. There was a buzz in the air. We decided to have monthly visits from developers. Our next visit was from two alumni who had gone into game development. Sadly, we found out the day they arrived that they had been laid off. In their talk, they shared horror stories of the industry: long hours, failed marriages, canceled projects, and incompetent managers. Some participants were sobered by their honesty.

Apart from these talks, the students really just worked on their own. They brought in skills from their classes and did a lot of reading and searching. By mid-year, however, we saw that more students might finish if we added a little bit of structure. A second design professor decided to offer an optional independent study studio course so that teams would have some dedicated time to work together. There were no lectures and everyone got As.

The categories proved to be disappointing. We had 9 PC/console entries, 3 serious, and 3 mobile. Bad planning on our part. The serious games category was especially frustrating, because we had gone out of our way to solicit “bounties” from non-profits across the state to commission games. We thought students would love to have real clients. No bounty was claimed and not all of the three entries in this category had a complete game deserving of a prize.

The major requirements were also disappointing. The design and technology majors approved of each other, but few saw the point of having a business major. After a while, I started to agree with them. We really needed an advocate from within the College of Business, which we had sought but failed to secure.

Even so, teams persevered. 120 students registered on a team at the midway point. At the end of the year, we held a public exhibition in our student union, with 80 of the 120 still in the game. The exhibition day was busy and great. A designer from Disney Interactive spoke, we had cake, and a dean gave out prizes. Our award sculpture was a 3-D-printed trefoil knot.

Assessment?

When all was said and done, we tried to figure out what happened to our students through a survey. One-third of the 120 registrants responded. I’ll be honest, the survey is really lacking in quantitative results. I really wish I had an sidekick that was good at experimental design.

We wondered if bridges had been built across the three programs. So, we asked, “Suppose in future competitions no major requirements were imposed. How likely would you be to recruit a student with a ______ major?” For technology, 34 said very likely, 1 said flip a coin, and 0 said very unlikely. For design, 25 said likely, 1 said flip a coin, 3 said very unlikely. For business, 1 said very likely, 8 said flip a coin, and 15 said very unlikely. It looks like art and design cozied up pretty well. Poor business.

Even though this was extracurricular, we were hopeful it had a positive academic impact. We asked students about what effect the competition had on their studies. Their choices were non-exclusive. 31 said, “I love my major and want to learn more.” 11 said, “It contributed to my classroom learning.” 15 said, “I’d like to pursue a career in the gaming industry.” 6 said, “I am unfazed.” Only 11 said it contributed to their classroom learning, but 31 were well-satisfied with their major. The way I interpret this, given the context of the quotations I’ll share next, is that students judge their major based on idealized notions rather than their professors, whom they often regard dismally. The competition helped them see the skills of their major outside of a professor’s command. Less than half wanted a career in the game industry, which is good for where I live.

The most enjoyable part of the survey were the open-ended questions. We asked, “What did you learn?” A few said:

  • “I’m a kinesiology major, but what I learned from this project can be applied to any future job I’ll have. Every job involves being part of a team in one way or another.”
  • “I learned many things, including basics for 3D modeling, complex 3 dimensional movement algorithms, and matrix based math. And in addition to those concepts, I learned a lot of about game programming, such as how to create particle systems, basic artificial intelligence, rail based movement systems, animations, collision systems and artificial intelligence directors.”
  • “I learned that I have a much better work ethic than I thought, I just needed to the chance to work on a project I really cared about.”

We asked, “What was it like to be your own bosses?” A few said:

  • “We would not have survived without an amazing PM [project manager]. He was the bomb.”
  • “Great opportunity to have a project that was completely unrelated to school become something of so much passion. This competition made me hopeful in starting a business.”
  • “I am a very self managed person by trait, but not knowing exactly what I needed to do was a challenge. There is a bit of security in having someone else set the direction. I definitely liked being my own boss though.”

We asked, “How did you feel about the lack of structure?”

  • “I learned SO much more than a regular class. The environment in game design is one where you have no idea what you are going to need to do, but you just find out and do it. I even had a very nice 3d modeling and animation internship last summer and I would say I learned much more than that as well, second to none learning experience.”
  • “The competitive element gives me much more drive than I would have in a university lecture…”
  • “It felt like what I imagine the ‘real world’ will be like. I had a lot more freedom in what I was doing and could make things how I thought they should be. In a traditional university course you have a strict schedule to follow but it wasn’t the same for the competition. Also for the competition I felt like I had to try harder because if I failed it would effect other people. In a classroom it isn’t quite the same.”
  • “I honestly feel like I learned so much more practical knowledge in this competition than in my traditional classes. I was working hands-on, with people from different majors, in languages I had never used, to create something I was passionate about. It was a fantastic experience.”
  • “There’s no comparison between sitting in lecture and chasing A’s by doing the bare minimum requirements in homeworks to simply coming up with your own idea, evaluating it and tweaking the game dynamics, then designing, implementing, testing testing testing the code, making mistakes along the way, all powered by your own passion. When you have total control over a project and are only participating because you want to, you become so much more creative and motivated. The project becomes your baby rather than ‘that stupid assignment that I just need to kind-of-finish.’”

Conclusion

In closing, I can’t tell you exactly what each student learned from this competition, but we got them excited, they reported they learned something, they built interesting games on their own, they worked with people of other majors, and we all had some cake. Our interest in gaming was a response to our students’ interest. One way we could have responded was by offering a new course, but we would have been faking the whole way through. However, we are educators and have more than one tool in our belts. We met our goals through an unstructured competition, without planning a single lecture or pretending to be something we are not.

Games

Further Reading

]]>
https://twodee.org/blog/7085/feed 1