Quantcast
Channel: Fast Company
Viewing all articles
Browse latest Browse all 4679

How Rikers Inmates And Columbia Students Built A Twitter Bot--With No Internet

$
0
0

Not long ago, a team from Columbia University set out to build an automated Twitter bot in a place with no Internet access—part of a 12-hour class for people with no prior programming experience. They held the class at New York's Rikers Island in an ongoing effort by Columbia's Center for Justice to provide educational programs for young people incarcerated at the jail complex. Teenage inmates worked alongside Columbia students to learn the basics of Python, put together tweets about their personal experiences, and contributed code to Rikers Story Bot, which randomly selects and posts a tweet from the group every day.

"A good portion of the code that made it into the bot was written in that class," says Dennis Tenen, a software engineer turned English professor and one of the course instructors.

Since Rikers doesn't provide Internet access to inmates, the instructors couldn't stick to a standard coding school curriculum. The class relied a lot more on physical materials than most introductory programming classes. For example, instructors brought in printed tweets—including tweets by musicians Drake and Meek Mill, and from President Obama and the New York City Department of Correction—for students to study before they wrote their own. And with fewer computers than students, the classes included physical demonstrations of programming tasks, like looping and sorting papers.

"Everybody kind of gets into it, and really what they're learning is the basics of algorithmic thinking and the basics of control structure," says Tenen.

The goal wasn't to turn the students into professional-grade programmers in just a few classes, Tenen emphasizes, but to introduce them to the basics of programming and reasoning about algorithms and code.

"It's really to give people a taste, to get people excited about coding, in hopes that when they come out, they continue," says Tenen.

Each member of the class also got a title, like developer or editor, that they'd be able to use on a job or school application, he says. And when they did sit down at the computer, Tenen says the Rikers inmates were often more willing to experiment than the slightly older Columbia students.

"In many ways, they seemed like kids that were just very eager to learn to put into this system where their voices weren't being heard," says Thomas Brown III, a Columbia senior who participated in the class.

They learned to use the IPython interactive development environment to scour built-in documentation and experiment with how the language works.

"You frequently can kind of take a string object and press down [in the IDE] and see all the methods attached to that string object, and then just try them," says Tenen. "You see string.capitalize and go, 'hmm, what does that do?' And you have to actually try it—and once you try it, that kind of experimentation encourages learning."

Having an explicit goal—building the Twitter bot—helped the class focus its limited time quickly on learning to do concrete tasks, instead of getting bogged down in abstract discussions of syntax and algorithms.

"Instead of speaking abstractly about programming, we right away talked about strings, and how there's 140 characters, so you have to check for length," says Tenen. "That specific thing was understandable to the students."

And focusing on personal storytelling helped keep the students engaged, and helped the students from Rikers connect with those from Columbia.

"We had a young man in our group that was a poet, so every time we would come into the group he would bring all these thoughts and ideas that he had been [cogitating] on over the rest of the week that he wanted to share with the world," Brown recalls.

It took a couple of sessions, but the two groups found they had a lot to discuss, especially since some of the Rikers inmates grew up near Columbia's Upper Manhattan campus.

Tenen says the students would ask each other things like: What's your favorite burrito? "Those were kind of the most special moments—just seeing people talk to each other candidly about whatever, about the weather, about food, about just daily frustrations."

The group focused on writing tweets around a few hashtags, such as #RikersIsntHome, says Cameron Rasmussen, a Center for Justice program director who worked on the project.

"It's using the hashtag as an overarching story that they could write to," he says.

The writing assignments had their own unique challenges too, with some of the participants behind bars and subject to jail censorship—but the students generally kept their messages work- and prison-appropriate, he says.

"I think there is a real issue of censorship, and we talk about that openly," says Rasmussen. "We want to develop their critical thinking skills and their critical observation skills, but we also can't be outwardly saying horrible things about the Department of Corrections."

Riker's IslandPhoto: Flickr user Russ Nelson

The Center for Justice has previously taught other hands-on classes for young people at the jail through its Justice-in-Education Initiative, including a music production class and one helping students develop a business plan, he says.

The program isn't the first behind-bars programming class—California's San Quentin and Folsom state prisons host a six-month coding boot camp, and the Montana Department of Corrections recently announced it's working on a plan to teach programming to inmates. One challenge at Rikers, though, is that the inmate population is relatively transient, since the jail only holds prisoners awaiting trial or serving short sentences, which makes it hard to offer more in-depth classes.

"There's not a stable culture—it's people coming in and out all the time," says Tenen. "How to do education in that environment is a challenge in itself."

The Center for Justice hasn't stayed in touch with the inmates in the class but hopes to be able to do so with future groups, says Rasmussen. The group plans to hold a second coding class this December, potentially focusing on interacting with the couple of hundred followers the Story Bot has acquired—and on acquiring more.

"Some of them are prominent lawyers, some of them are prominent activists," Tenen says of the Story Bot's followers. "For the next iteration of this workshop, that would be a fun thing to think about: Who would they want to follow? Who would they want to respond to?"

'); window.ga('send', 'event', 'User' , 'Interaction' , this.key + ':ArticleView:newsletter:fail'); window.ga('rollup.send', 'event', 'User' , 'Interaction' , this.key + ':ArticleView:newsletter:fail'); if (index === data.response.errors.length - 1 ) { var successfulSubscribes = newsletters.diff(failedSubscribes); $(successfulSubscribes).each(function(index) { $form.parent('div').prepend('
Thank you! Please check your inbox to confirm you subscription to '+ (this.charAt(0).toUpperCase() + this.slice(1)).replace('Fastcompany', 'Fast Company')+ '!
'); window.ga('send', 'event', 'User' , 'Interaction' , this + ':ArticleView:newsletter:success'); window.ga('rollup.send', 'event', 'User' , 'Interaction' , this +':ArticleView:newsletter:success'); }); } }); } else { $form.parent('div').html('
Thank you! Please check your inbox to confirm!
'); $form.parent('div').removeClass('error'); window.ga('send', 'event', 'User' , 'Interaction' , 'fastcompany:ArticleView:newsletter:success'); window.ga('rollup.send', 'event', 'User' , 'Interaction' , 'fastcompany:ArticleView:newsletter:success'); window.ga('send', 'event', 'User' , 'Interaction' , 'events:ArticleView:newsletter:success'); window.ga('rollup.send', 'event', 'User' , 'Interaction' , 'events:ArticleView:newsletter:success'); } }; function _formFail ($form, error) { if (!$form) { return; } console.warn('error: ', error); // Use message from server response var message = JSON.parse(error.responseText); if (message.response && message.response.message) { message = message.response.message; // Error message not provided } else { message = 'Please enter a valid email address.'; } var $parent = $form.parent('div'); // Remove other errors first var $errors = $parent.find('.alert-box'); if ($errors) { $errors.fadeOut(300, function() { $(this).remove(); }); } if (message && (message.code === -100)||(message.code === 220)) { message = 'Please enter a valid email address.'; } // Append new errors $form.parent('div').prepend('
' + message + '
'); $form.find('input').prop('disabled', false); }; }); })

Viewing all articles
Browse latest Browse all 4679

Trending Articles