- About SEAS
- Faculty & Research
- News & Events
- Offices & Services
- Make a Gift
Coding, in the key of C (and Python)
Shoulder to shoulder in the Northwest Labs, students gathered around laptops—200 at a time—at the CS50 Fair on December 8. An annual fixture at the Harvard School of Engineering and Applied Sciences (SEAS), the fair is an opportunity for students taking the introductory computer science course to show off their final projects to the wider community—and for others to see what programming is all about.
For Emilie R. Wong ’17, studying literature at Harvard Extension School, computer science offers a way to visualize and play music, using Google Glass. For William Anthony Greenlaw ’17, it's a tool to attract new recruits to the ballroom dance team. For Gabriel Amador ’16, studying organismic and evolutionary biology, it helps modernize a long-running study of the plant life in Harvard Yard.
Interest in computer science has been growing every year. With more than 800 students enrolled this fall, CS 50 became the largest course in Harvard College. Excitement about the field further increased in November, when the University announced plans to increase the size of the computer science faculty at SEAS by 50 percent, with support from former Microsoft CEO Steve Ballmer ’77.
And David J. Malan, Gordon McKay Professor of the Practice of Computer Science, is sending teaching fellow Jason Hirschhorn ’15 to help set up a collaborative version of CS50 at Yale University, where Harvard lectures will be live-streamed next fall.
Standing amid row upon row of long tables strewn with laptops, raffle tickets, helium balloons, and CS50 stress balls, Malan noted, “It should be an exciting experiment to try to execute a CS50 Fair not only in Cambridge but in New Haven next year as well.”
Students in CS50 have almost free rein to select a final project that appeals to their curiosity, although they are asked to "strive to create something that outlives this course."
"All that we ask," the syllabus says, "is that you build something of interest to you, that you solve an actual problem, that you impact campus, or that you change the world."
Putting names to faces
“I was always the kid at the museum who wanted to get the audio guide and listen to every entry,” says Jacob Rienstra ’17. A sophomore studying computer science, Rienstra has spent the last year and a half wondering about the old portraits that hang in halls across the campus, from Annenberg to Lowell House.
Noting that many have no plaque to identify them, he observes, “Harvard has a very long history… and a lot of people have shaped Harvard. Some of them are immortalized in portraits, but they’re not really immortalized because no one knows who they are.”
Knowing that a face on the wall belonged to a former house master would be a good start, Rienstra says, but rich historical details would be better. “Increase Mather,” he says, for example, “was involved in the Salem Witch Trials. One of his close friends was one of the judges at the trials, and he urged a more rational approach.” Knowing the stories behind the faces on the wall would bring history to life and could spark new conversations over a meal in the dining hall.
Rienstra’s CS50 project catalogs all of the portraits in Lowell House and makes historical information about each one available through a searchable website that draws on a database. He hopes to expand the project campus-wide, adding a feature that suggests nearby portraits based on a user’s location.
In homage to a sketch by the student comedy group On Harvard Time (Rienstra is a member), the portrait project is titled “Old White Dudes of Harvard.”
“That’s poking fun at the fact that there are a lot of white dudes in our history—and the ones who aren’t are usually pretty awesome people—but to open up a conversation about that,” Rienstra says. “It allows us to discuss where we have come from and where we have to continue to go.”
Jennifer Hu ’18 studied German, Latin, and Greek in high school—“and I know Chinese,” she adds casually. So when Problem Set 5 asked her to write a fast spellchecking program, she recognized quickly that part of the challenge arose from the difficulty of spotting irregularities in a highly irregular language.
German, she remembered, capitalizes the first letter of all nouns, so a computer presented with a capitalized word in the middle of a sentence could save time by comparing it to a list of only nouns, instead of searching the entire language for a match. She wondered: could there be a computationally “perfect” language that eliminates ambiguity and facilitates fast processing?
With her friend and classmate Kevin Loughlin ’18—the two first met at Visitas in April—Hu decided to find out.
For their final CS50 project, the pair wrote a program that reconstructed and optimized the English language. The structure of every word in their new language incorporates cues about the part of speech and where the word begins and ends. There are no homonyms or homophones. Adjectives and adverbs always follow the word they modify.
The result is a language thoroughly lacking in nuance—and that’s the point. When speed and precision matter, it doesn’t mince words.
“No one wants to take the time to learn something completely new that’s useless,” Loughlin admits. “The reason to learn our language would be that you can easily communicate with artificial intelligence.”
Most of the project work went into identifying constraints and designing the language carefully, Loughlin says. “They tell you all the time in computer science that CS is not about coding, and this is the first project where a huge part of our thought had to go—before we wrote a single line of code—into, ‘what do we want to accomplish with this task, and why do we want to do it in this way?’”
To demonstrate the benefits of the new language, Hu and Loughlin also ran experiments and statistical analysis on its performance. They found that their language could be spellchecked faster than English even when their words were longer, on average, than English words, and regardless of the location of the misspelled character.
“Already the fact that with spellcheck we’ve achieved some significant results bodes well for us in terms of going forward in the future research that we do,” Loughlin says. “We’re really hoping to turn it into something several years long.”
Loughlin had some coding experience when he arrived at Harvard, but it wasn’t like CS50. The courses he had taken in high school and during his gap year were enlightening, but uninspiring.
“It wasn’t my favorite subject in the whole world,” he says. “I think I saw computer science as something where you just perform mathematical operations. CS50 has done a great job in not only showing me the many different applications that computer science has, but [also] getting me to see that those applications are quite exciting.”
“I really came in thinking I was going to do raw math, and within two weeks of CS50 it blew my mind.”
Hu plans to study applied mathematics and linguistics. Loughlin intends to concentrate in computer science.