Each fall, CS50 offers a series of seminars, designed to equip students with skills and savvy beyond the scope of the course’s own syllabus. Below are seminars from this year and past years.

Fall 2016

Fall 2015

AI Series

Recommender Systems

by Brian Scassellati

Self-Driving Cars

by Brian Scassellati

Awesome iPhone Apps with Objective-C

by Zack Chauvin

Learn the basics of Objective-C and Xcode to get started with app development for iPhone. In this tutorial, you’ll become familiar with the IDE used for iOS, the basic structure of an iPhone application, and some tips and tricks for jumping into development.

Building Apps for Mobile, Gaming, IoT and more using AWS DynamoDB

by Rick Houlihan, Principal Solutions Architect, AWS Database Services

Databases have always been the backbone of applications over the past several decades. With time the database technologies have evolved. In this session, we will talk about the evolution of databases from SQL to NoSQL and understand how the NoSQL paradigm is making a big difference in powering modern-day use-cases. We will also take a close look at DynamoDB, Amazon’s primary NoSQL database. We will go over the high level concepts and design patterns with DynamoDB, and focus on how you can build interesting applications for Mobile, Gaming, IoT etc. using DynamoDB. This Tech Talk will use AWS and online materials contained in the AWS Educate portal. To access the materials and get free credits to use AWS for your CS50 projects and more, signup in advance for a student membership at www.awseducate.com. Be sure to use your Harvard University email account when you sign up to get $100 in free AWS credits.

Contain Yourself: An Intro to Docker and Containers

by Nicola Kabar, Solutions Architect, and Mano Parks, Developer Relations Manager

Docker is the name on the tip of many tongues at the moment. It is an open-source containerization engine which allows developers to package up an application in a container along with all the settings and software required to run it, and deploy with a minimum of fuss. Tens of thousands of developers currently use Docker for their development, testing, and deployment workflows. This session will introduce the Docker ecosystem, how it works, and how to build, share, and deploy Docker containers.

Customizing Cloud9 and the CS50 IDE

by Dan Armendariz

The CS50 IDE is used by all students in CS50 and is easily customizable using the Cloud9 plugin system. In this seminar, we introduce the plugin system that is at the core of Cloud9; written in Javascript with NodeJS and the Cloud9 SDK, plugins allow modification to just about every aspect of the IDE. We will briefly discuss the architecture of Cloud9 that enables the plugin system to work, walk through sample plugin code to create menu items, dialog windows, and communicate with the underlying Ubuntu instance, and show some examples of the plugins created by CS50 staff for the IDE.

Exploring JavaScript and the Web Audio API

by Sam Green and Hugh Zabriskie

The Web Audio API is high-level, powerful versatile system for controlling audio in web applications and is built in to most modern browsers. Originally designed for online gaming, this JavaScript API has been used to support a multitude of music-oriented applications, including online synthesizers, drum machines, guitar tuners, and collaborative music-making tools. The seminar will go over the major components of the API and then dive into some code for a basic sequencer.

From C to Python

by Ross Rheingans-Yoo

Python is a popular language for everything from short, informal scripts to complex data-processing frameworks. Fortunately, the syntax is very similar to C, with just a few key differences. In this seminar, we’ll walk you through them, leaving you with the ability to write your own short (or long!) programs in Python, doing everything you already know how to do in C, only with fewer compilation errors!

Fun with Music and Programming

by Connor Harris and Stephen Krewson

Students who want to do final projects involving music have a wealth of free, open-source resources available to them but may not know where to look. This seminar will serve as a quick introduction to libraries and programs for several common tasks, including sound processing and analysis, MIDI synthesis, and music-score typesetting. The seminar will focus especially on Euterpea, a library in the Haskell programming language for algorithmic composition and MIDI synthesis; and on Lilypond, a LaTeX-like declarative language . No prior knowledge of Haskell is assumed; elementary concepts will be covered as necessary.

How (and Why) You Should Use Git

by Anna Whitney

Git is an extremely powerful version control and collaboration system, used throughout the world of software engineering (as well as in higher-level CS courses here at Harvard). Learn to use some of git’s incredibly useful features, and revolutionize your software development process—for your CS50 final project, future courses, personal projects, and career!

iOS App Development with Swift

by Dan Armendariz

An introduction to iOS programming using Swift, Apple’s new programming language for Macs and iOS devices. We will cover the basics of the language, using APIs in your app, and deploying your app to an iOS device. Development requires a recent Mac with OS X 10.10.5 or later and, optional (but recommended), a device running a modern version of iOS.

Python Web Apps with Flask

by Ezra Zigmond

Web frameworks like Django or Ruby on Rails are great for building large, production applications, but sometimes you want something simpler. Flask is a small, easy to use framework for creating web apps in Python. This seminar will demonstrate creating a small application using Flask along with peewee, a Python library that makes it simple to work with SQL databases.

Responsive Design with Bootstrap

by Neel Mehta

More people now visit the internet from mobile devices than desktops, but too many websites are built only with desktops in mind and look awful on mobile. Learn how to make your website look awesome on screens from tiny iPhones to giant iMacs using Bootstrap, the world’s most popular frontend web development framework.

Ruby on Rails

by Leila Hofer

Ruby on rails is an open source web development framework that is one of the most popular frameworks on the web. Rails has a lot to offer, but this seminar will focus on an introduction to rails and how to get a functional website up and running. It will review Model View Controller (MVC – you’ll be learning about this soon!) architecture and how to implement a basic MVC in Rails.

Statistical Programming with R

by Connor Harris

Statisticians, scientists, and data analysts often use R, an free, open-source interpreted language with matchless support for statistical analysis and data visualization. This seminar will provide an introduction to R’s syntax and capabilities, with special attention to common pitfalls and points of confusion. Examples will be tailored to those with only a modicum of statistical knowledge.

The Internet of Things

by James Whittaker, Microsoft Distinguished Engineer

Change is coming. The web is being consumed by apps. Search is becoming a victim of its own success. The Internet of things is upon us and in the distance quantum computing is clouding the horizon. These changes will mean a shift of wealth. New winners, new losers. New monetization methods. New uses of data and machine intelligence. Where will it take us? Where will this all end? Join Microsoft Distinguished Engineer James Whittaker for a presentation that begins 20 years in the past and ends 20 years in the future with insight into how society will work, if machines will take over and what’s left for humanity if they do.

Web Apps of the Future with React

by Neel Mehta

Forget PHP—React, developed by Facebook, is the future of web app development. It’s a powerful, easy to understand framework that lets you build entire web apps with nothing but JavaScript. There’s a reason it’s exploding in popularity and being adopted by apps like Instagram and Khan Academy—give it a try here.

Web Scraping with Nokogiri/Kimono

by Robert Krabek

There’s a lot of data out there on the internet that you might be interested in collecting but if you don’t want to manually copy it and there are no Application Programming Interfaces (APIs) available for that data, then you might need to scrape that information. Web scraping, helps collect that data by parsing the HTML of a web page and extracting the information you want. We’ll go over the basics of how to use Nokogiri, a web scraping library in Ruby, and Kimono, a chrome extension with basic web scraping capabilities, to extract the data you need from the HTML of a website and output it into spreadsheet.

Writing 2D Games in C using SDL

by Thomas Lively

SDL, the Simple DirectMedia Layer, is the cross-platform game library used in everything from small indie games to Valve’s blockbuster triple-A games to other applications with rich media needs. This seminar will teach you how to use this powerful C library to write your own 2D games. We will talk about the structure of game code and cover the installation and initialization of the SDL library, the creation and management of the game window, how to draw images onto the window, and how to handle keyboard and mouse input. By the end of the seminar you will have created a small demo that you can later build on as much as you want.

Fall 2014

3D Modeling and Manufacture

by Ansel Duff '15

The software/hardware harmony brings code to life. This seminar aims to familiarize students with elementary manufacturing techniques and provide students with access to CS50’s 3D printers. Whether you’re designing a holder for a mobile phone payment platform or reinventing the Hue lighting system, customized mechanical components transform a purely software backend to a physical product.

Amazing Web Apps with Ruby on Rails

by Gabriel Guimaraes '17, Stephen Turban and Zack Chauvin '17

Ruby on Rails is an awesome framework that lets you create web applications really fast, without having to worry about unnecessary details. In this seminar we will take a look at the Model View Controller paradigm and how this way of thinking can be applied to web programming, specifically using Rails. We will also discuss what a web framework does for you (and what it doesn’t do) showing an example of how Rails can solve many tasks of web programming automatically, leaving you more time to work on the real world problems your application is actually trying to solve.

Android 101

by Fred Widjaja '17

Learn the basics of building apps on Android, the world’s most popular mobile platform! We’ll also be going through how to code in Java and how to use development tools like Android Studio.

Breaking Through The (Google) Glass Ceiling

by Christopher Bartholomew

Do you have an interest in creating apps for the most controversial piece of wearable technology today? The rise and success of any wearable technology depends on one major element: apps. In this seminar, we’ll overview Google Glass’s three application design patterns: Periodic Notifications using Glass’s Mirror API, Immersion using the Glass Developer Kit (GDK), and Ongoing Tasks which utilize both the Mirror API and GDK. We’ll also provide helpful resources on interacting with and implementing REST web services, creating database structures for Google’s Open Authorization (OAuth), and setting up a standard Integrated Development Environment (IDE) for your chosen design pattern. If you’re planning on creating a Google Glass application, then this seminar will help you get started.

Build Tomorrow’s Library

by Jeffrey Licht

Get your hands on the full bibliographic data about virtually all of the 12.7 million items in the Harvard Library collection, plus millions of images, plus some extremely anonymized usage data, and more. All of this can be put to use in the apps you’ll learn to write that use the API of Harvard Library Cloud, a new open metadata server. Library metadata is rich, complex, and very human, so let’s dig in!

Building Dynamic Web Apps with Laravel

by Eric Ouyang '17

Laravel is a powerful and elegant PHP web development framework for building interactive websites, such as CS50’s own site! Learn about how to leverage this cutting edge development tool to create everything from simple APIs to sophisticated modern web applications.

CSS: Awesome Style and Design

by Allison Buchholtz-Au '15 and Tomas Reimers '17

CSS allows for the stylization of websites. This seminar will cover basic principles for web design from selecting HTML elements with CSS to positioning elements on the page and fully understanding the "box model." Additionally, we will cover common aesthetic improvements seen on websites such as rounding corners, background images, and custom fonts.

Data Analysis in R

by Dustin Tran

Data has increasingly become crucial for solving problems in industry and research. R provides a powerful and flexible toolkit for this sort of analysis: statistical modeling, machine learning, visualization, and the fundamental process of importing and manipulating data. This seminar will provide a quick introduction to using R and show the tremendous capabilities that the language has to offer.

Data Visualization and D3

by David Chouinard

Learn to convey valuable insights through interactive maps, charts and diagrams. We’ll explore D3, a JavaScript library, and learn the tools for producing interactive web-based data visualization.

Essential Scale-Out Computing

by James Cuff

Each day you interact with thousands upon thousands of processors, servers, storage systems and high-speed networks. You don’t see them, and you don’t physically touch them, but they are there, making everything happen behind the scenes. Everything is powered by advanced computing, from your morning news, movie and video streams, phone conversations, currency, financial markets, pharmaceuticals, navigation, traffic, weather, email and of course all of our social media updates. Each of us consumes vast amounts of data and computation on a daily basis. We also continue to push the boundaries of our science and discovery. Using ever more complex computer models to peer into the darkness of space or to understanding the genetic basis as to why were are human. All of this needs computing for it to work correctly, and it also needs advanced infrastructure and distributed computing architectures to work quickly. James Cuff is the Assistant Dean for Research Computing here at Harvard. His group runs more than sixty thousand high performance computing processors and more than fourteen petabytes of storage for science. On a global scale, this system is tiny. However, he will show you real world examples of the advances in computation science, physical infrastructure and distributed computing systems we are using each day, whether you are a particle physicist trying to reverse engineer the very fabric of the universe – or maybe you are just updating your selfie… So what will you learn from this seminar? You are all designing software for your final project. Facebook for example, was originally designed as a small single server PHP application. In order to make it scale to today’s hundreds of thousands of servers and billions of users took years. James will explain how both datacenter and systems architectures that now surpass electrical power usage of 10-20 megawatts – (enough to power more than 20,000 houses, nearly half of the City of Cambridge) enable today’s applications to scale. Each computation, be it add, subtract, multiply, divide, strcmp(), grep or memory hash lookup you make in your application now matters. You will be shown not only how distributed computing factors into your applications, but also how the actual energy efficiency of your algorithms matters. Designing, and thinking about how your application will scale from the beginning to potentially manage 10,000’s of page impressions a second is now the new normal.

Exposing Digital Photography

by Dan Armendariz

This seminar is a fast-paced introduction to photography. We’ll cover exposure, the impact of exposure values on a photograph, metering, the impact of the human visual system (illusions), and a discussion of modern digital imaging technology including sensor types, sensor sizes, and the limitations that arise from these properties. By the end, you should have a better understanding of the compromises that make up all forms of digital photography from smartphones to digital SLRs and walk away with some tools to find the balance that captures the photograph you want.

Futuristic User Interactions: An Introduction to Leap Motion

by Armaghan Behlum '17 and Tomas Reimers '17

The leap motion is a device that allows users to interact with the computer by moving their hands in front of it. Students will learn how to write code that takes advantage of the leap motion and build websites that the user can interact with using simple hand gestures.

How to Build Innovative Technologies

by Abby Fichtner

Ever wonder how startups are able to create innovative, disruptive technologies that are successful in the market? In this seminar, you’ll learn lean startup and agile development practices that can be seen time and again in the small percentage of startups that make it big. Using examples from Facebook, Dropbox, Pinterest and more, you’ll learn tips for how to find your initial users and validate your ideas. As well as techniques like kanban, emergent design and continuous deployment to help you build your product and get it out there as quickly and efficiently as possible.

Introduction to Amazon Web Services

by Leo Zhadanovsky

Learn about cloud computing with Amazon Web Services. During this talk, we will discuss the various Networking, Compute, Database, Storage, Application, Deployment and Management services that AWS offers. We will demonstrate how to launch a full three tier LAMP stack in minutes, as well as how to setup a simple web server on AWS. We will also discuss several use-cases, demonstrating how customers such as Enterprises, Startups, and Government Agencies are using AWS to power their computing needs.

iOS App Development with Swift

by Dan Armendariz

An introduction to iOS programming using Swift, Apple’s new programming language for Macs and iOS devices. We will cover the basics of the language, using APIs in your app, and deploying your app to an iOS device. Development requires a recent Mac with OS X 10.9.4 or later and, optional (but recommended), a device running iOS 7 or later.

Learning iOS: Create your own app with Objective-C!

by Tianyu Liu '16

Ever wanted to build your own iOS app with Objective-C but didn’t know where to start? Learn the basic introduction to iOS and get started making your cool apps on the App Store.

Light Your World (with Hue Bulbs)

by Dan Bradley '14

As seen in the first week of lecture, Hue bulbs are light bulbs you can control wirelessly. They can do pretty amazing things, if you know how to program them properly. In this seminar, we’ll create a small JavaScript web app that can turn Hue bulbs on and off as well as change their color. We’ll also more broadly touch on APIs and Ajax calls.

Meteor: a better way to build apps

by Roger Zurawicki

This is a hands-on introduction to Meteor, a JavaScript and Node.js framework built for the future. Meteor is an open-source platform for building top-quality web apps in a fraction of the time, whether you’re an expert developer or just getting started. Meter rocks because: you write in the same language on both the server and the browser; 50 lines of code gets you a working chat app; your app will work in real time; you get an awesome package system; and you can run your app natively on iOS and Android. Find out more at https://www.meteor.com/

Fall 2013

Amazing Web Apps with Ruby on Rails

by Gabriel Guimaraes '17

Ruby on Rails is an awesome framework that lets you create web applications really fast, without having to worry about unnecessary details!

Computational Linguistics

by Lucas Freitas

As computers become more and more present in our lives, making our interactions with them more intuitive and natural is essential. Computational linguistics refers to the field of computer science that uses computer science to do interesting things with natural language. Examples of large computational linguistic projects are Siri, the Jeopardy winner Watson, and Google Translate. This seminar will give a brief introduction to the field, and will include Python demos to show the potential of that area.

Introduction to iOS

by Rhed Shi '15

Learn how to program iOS applications using Objective-C and XCode 5.

JavaScript for Web Apps

by Tomas Reimers 17 and Mike Rizzo

Learn about APIs and libraries available in Javascript that are useful when writing web applications.

Leap Motion SDK

by Dan Gill and Michael Sutherland

Getting Started. Important Details. Tools and helpful tips. Community developments. Community resources. How to engage with Leap for help Q&A.

meteor.js: JavaScript on the back end

by Roger Zurawicki

A better way to build apps. Meteor is an open-source platform for building top-quality web apps in a fraction of the time, regardless of your comfort level. We will cover the basics of server-side JavaScript and how to get started building cool real-time web apps! More information at http://www.meteor.com/.


by Kevin Schmid

Node.js is a powerful JavaScript library that allows you to create programs that deal with input and output. That includes network data and file streams, so it’s great for creating web servers! Come hear all about Node.js: how it works, where it works best, and how you could use a Node.js server in your final project! In this seminar, we’ll show some examples of Node.js servers and discuss server performance.

Sleek Android Design

by Jordan Jozwiak

Learn about Android design patterns and how to deal with so many different device versions, sizes, and pixel densities. We will talk about fundamental mobile designs principles, Android-specific concerns, and responsive design for phones and tablets.

Web Security: Active Defense

by Luciano Arango '16

Is my new website, or web application secure? How do I make sure it’s secure or test if its not? In this seminar we’ll put up a website that’s not yet, ahem, ready, and split the attendees into two teams. Team one’s job: exploit all the vulnerabilities in the code; team two’s job: patch them up before team one gets there. We’ll be guiding the challenge by exposing the different mistakes that become security problems, how to spot them quickly, and how to patch them up correctly.

Fall 2012

A Programmer’s Introduction to APIs

by Billy Janitsch '15

APIs allow you to programmatically access data from websites in a useful form. Facebook, Flickr, Tumblr, Google Maps, Freebase, Wikipedia, last.fm, Digg, and even CS50 all have APIs that you can use to work with a variety of interesting data. Have another source in mind? There’s probably an APP for that. Oops, I mean an API. All familiarity levels welcome, and those in search of ideas for a cool final project are particularly encouraged to attend.

Android Apps (Now with Jelly Beans!)

by Jordan Jozwiak '14

As of September 2012, Android had a 68% market share on smart phones(iOS trailed with only 17% share). Android has matured substantially inthe last few years and is undoubtedly here to stay. What are thedifferences between iOS and Android? How has Android changed with therelease of ICS and Jelly Bean? And, most importantly, how can you getstarted developing for Android using Java and Eclipse?

Defending Behind The Device: Mobile Application Security

by Chris Wysopal

Risks to mobile devices are similar to those of traditional software applications and a result of insecure coding practices, privacy violating design, and malicious intent. But mobile devices aren’t just small computers: they are designed around personal and communication functionality. This makes the top mobile applications risks different from the top traditional computing risks - and an easier opportunity for those with malicious intent. This presentation will discuss the threat landscape and how developers and enterprise IT can tackle mobile app risk.

ICT4D: Technology for Good

by Alisa Nguyen '15 and Joy Ming '15

Information Communication Technology for Development is a field where technology is applied to areas such as global health or mobile health, education and literacy, food production and distribution, and more. This seminar will demonstrate how technology can create things that are not only flashy and awesome but can change the world.

iOS: Writing Apps like a Boss

by Tommy MacWilliam '13

Looking to create a project your friends and family can download on the App Store? Learn how easy it is to write software for iPhone and iPad. Topics include Objective-C, XCode, and design patterns, and sample apps include tic-tac-toe and a sports news reader.


by Vipul Shekhawat '14

Javascript is a client-side web programming language, used to create all sorts of functionality on websites. This seminar focuses on jQuery, one of the most widely used Javascript libraries. jQuery allows programmers to easily select and manipulate elements on an HTML page, animate elements effortlessly, send HTTP requests to servers, and much more. According to builtwith.com, over 24 million websites use jQuery, including nearly 60% of the top 10,000 websites on the Internet. Make web programming a lot easier — come to this seminar and learn jQuery!

JavaScript Frameworks: Why and How?

by Kevin Schimd '15

JavaScript! It’s awesome when you want to add interactive, client-side features to a website. But coding large projects in JavaScript can be difficult: it’s tough to keep track of events, and maintain organization of the code! Enter in JavaScript frameworks, which are useful in solving these kinds of issues. In this seminar, we’ll dive into the details and aspects of some frameworks, and discuss what kind of design challenges they address. Some knowledge of JavaScript, such as events and objects, is ideal, but not necessary.

Kohana: A Lightweight PHP Framework

by Brandon Liu '14

Web frameworks are absolutely essential for making websites: They organize your code so that it’s more maintainable, and they take care of common problems like user input sanitation and data model validation so that you don’t have to reinvent the wheel every single time. There are dozens of web frameworks out there, but Kohana is one of the easiest to learn, while still providing plenty of features. It’s written in PHP, so there’s no need to learn a new language! The seminar will be a live-coding session, building a blog from the ground up using Kohana. Students are free to code along, but I will be moving quickly to cover more ground.

Make an Attractive Website with CSS

by Ben Shryock '15

Learn to make websites even sexier than CS50 Finance with the use of Cascading Style Sheets (CSS). CSS allows precise control over visual appearance of a page, from overall layout to details such as font and margins, all from a single style sheet.

Pattern Matching with Regular Expressions

by John Mussman '12

Regular expressions are templates that allow computers to find and match patterns in text. Pattern matching is useful when analyzing user input on consumer websites, cleaning experimental data, or mining source texts for statistical information. This seminar gives students conceptual strategies for converting patterns into regular expressions; practice using the Python re library to solve puzzles; and background to use the many implementations of regular expressions in command-line tools and languages including Python, Perl, Ruby, Java, C#, PHP, and MYSQL.

Preparing Your Site for the Web

by Yuechen Zhao '15

Designing and launching a website today is a more complex than simply whipping up some HTML and CSS. You must also take additional steps to ensure that your site is ready for the web, as websites are being viewed on different browsers and platforms by people all over the world. How can you be certain that your site will thrive under all conditions? Topics to be discussed include cross-browser/platform compatibility, web security, error handling, and performance optimization.

Surviving the Internet

by Esmond Kane

This seminar will be a truncated version of the National Cyber Security Awareness Month presentations available here: http://hvrd.me/Rx1Se9 During this year, a record number of popular online service providers, ranging from email, to social media, to cloud file sharing, were compromised resulting in our data being exposed. Now, more than ever, we need to be mindful of the need for constant vigilance when it comes to computer security. To protect yourself from cyber risks, here are some things you can do: 1. Ensure your computer has been set to automatically update 2. Enable your computer’s operating system firewall 3. Install antivirus software and ensure it is set to automatically update 4. Install HTTPS and anti-tracking extensions 5. Only save your passwords to a password safe, never save passwords to your browser 6. Select a unique password for each of your accounts, do not use a common password for all of your accounts 7. Use two-factor authentication for accounts that offer it, for example, Google, PayPal, Dropbox, Facebook and many others offer free or low cost two-factor authentication 8. Be suspicious of opening email you were not expecting, or from someone you do not know, and never reply to an email asking for your password 9. Consider encrypting your hard disk using your computer’s operating system encryption program, for example, FileVault or BitLocker 10. Back up your hard disk; make a local backup AND make an online backup of important data.

Technical Interviews

by Kenny Yu '14

This will be a workshop presenting the format of technical interviews, which are common in the recruiting process for software engineering roles at many tech companies. I’ll be presenting tips and resources on getting through the interview, as well as walking through hands-on examples of representative problems you might see in interviews.

Unix Shells, Environments

by Douglas Kline

Unix shells consist of and depend on environments and other provisions that differ from those of other operating systems. Unix offers several different shells which have some things in common with each other. One, bash, is now becoming available on other operating systems and may become shell-lingua franca. Understanding the bases of the shells, their various capabilities, and how they differ from each other can greatly increase one’s capabilities of using Unix and also illustrate the history and development of the shells and the operating system in general. Understanding how they differ from shells of other operating systems can promote understanding of both and forestall confusion and mistakes. I intend this primarily as a practical seminar as the topic isn’t really theoretical and the broader historical implications have more to do with the irregular, idiosyncratic origins of Unix rather than principles of computer science.

Vim: Speed and Power at your Fingertips

by Brandon Liu '14

Vim is one of the most popular text editors used by programmers. It is generally agreed that Vim allows for faster text editing than any other application, but there is a misconception that Vim has a extremely steep learning curve. With the proper instruction and guidance, you’ll find yourself coding in Vim in no time, faster than ever before! This seminar will start with a showcase of what Vim is capable of, and then break out into a hands-on workshop where everyone gets their hands dirty with some Vim practice!

Web Development: From Idea to Implementation

by Billy Janitsch '15 and Ben Kuhn '15

So. You have a great idea for a website. What’s next? This seminar will guide you through the process of web development, from designing a solid architecture to creating a functional and beautiful user interface. Topics include project management, planning/prioritizing features, iterating over designs, and an overview of useful libraries and frameworks. We’ll move quickly, but all familiarity levels are welcome. We’ll be happy to field questions during and after the seminar.

Windows 8 App/Game Development with HTML5

by Edwin Guarin and Chris Bowen

Are you thinking about what you want to do for your CS50 final project? Attend this session to learn how to build a Windows 8 App and/or game in HTML5. If you decide to use this for your final project, we will help you publish it in the Windows store (using a free Windows Store developer account we give you) and provide some technical guidance during the hackathon. You will also have a chance to win a Windows 8 slate device or XBOX 360! Don’t miss out!

Fall 2011

Accelerating Science with the Open Science Grid

by Ian Stokes-Rees

In the mid-1990s, the high-energy physics community (think FermiLab and CERN) started planning for the Large Hadron Collider. Managing the petabytes of data that would be generated by the facility and sharing it with the globally distributed community of over 10,000 researchers would be a major infrastructure and technology problem. This same community that brought us the web has now developed standards, software, and infrastructure for grid computing. In this seminar I’ll present some of the exciting science that is being done on the Open Science Grid, the US national cyberinfrastructure linking 60 institutions (Harvard included) into a massive distributed computing and data processing system.

Acing Your Technical Interviews

by Tony Ho '14

At Harvard, there aren’t many programs that help people practice their interviews, especially if there is coding involved. To help with this, I would like to teach people about resources that are out there that can help with making sure everyone can ace their interviews.

Most coding interviews are like another coding competition. I would like to start by talking about resources like Project Euler, Poj, USACO, Codeforces, Topcoder. Then I will move into the broad topics that everyone needs to know to answer simple questions. Finally, I will end with a hands-on period where we will try some problems and go over some problems that I have personally seen and find very interesting.

Android Application Development

by Jordan Jozwiak '14

Learn the basics of the Android Application Interface and developing Java applications using Eclipse.

appLab.Phone(Mango) Session One

by Edwin Guarin of Microsoft

You will learn how to get started on that next great app for the Windows Phone. Session One will attempt to cover: Introduction to Windows Phone 7.5 for Developers; Building Windows Phone 7.5 Apps with Visual Studio and Silverlight; Getting Started with Sample Code and other resource; Publishing and Monetizing your App in the Marketplace at no cost. For this seminar, install the Windows Phone 7.5 SDK from http://create.msdn.com/en-us/home/getting_started. And create a free Dreamspark and AppHub account using the instructions from http://bit.ly/r2dqFr. This will give you the ability to publish your phone apps and monetize for free.

Beyond Google Maps: Spatial is Special

by Kirk Goldsberry

There’s an ongoing geospatial revolution happening right now. Unfortunately, despite the rapid rise of geospatial technologies, here at Harvard there are few if any courses that focus on Geographic Information Science. I propose to lead a brief seminar that introduces the basics of GIScience and hopes to inspire students to generate exciting new spatially aware mobile applications that pick up where popular location-based services such as Google Maps and [http://en.wikipedia.org/wiki/Yelp,_Inc. Yelp] leave off. Since a large percentage of "apps" have a spatial component, this topic should be of interest to students looking to design new mobile computing software.

Building Applications in C#

by Mike Teodorescu '11

This seminar is a concentrated introduction to C# and will cover object-oriented programming in C#, collections in C#, exception handling, regular expressions, XML parsing, file I/O, and debugging in Visual Studio. By the end of the course, students should have a solid grasp of this powerful language, which is packed with handy shortcuts and libraries.

CSS for a Beautiful Website

by Charles Bandes

Proper use of CSS allows a tremendous degree of control over both the layout and visual design of a web page. Careful application of style sheets can be the difference between a basic page and a really polished site.

Develop for the BlackBerry… Like a Boss

by Jason Hirschorn '14 and Marta Bralic '12

Learn how to develop applications for BlackBerry smartphone. Imagine integrating the BBM platform into your application or coding the next Brick Breaker. The possibilities are endless!

Educational Software

by Katie Vale

Interested in writing software to support teaching and learning? This session will discuss how to plan and execute an instructional project, including how to do requirements gathering, how to choose development platforms, and how to assess your project. The instructor has over 20 years' experience in designing and producing educational software.


by Matthew Chartier '12

Emacs is an alternative to gedit which empowers you to write code more efficiently. Extensible and highly customizable, Emacs allows users to streamline their editing process by modifying the editor itself to suit their needs. Topics covered will include keyboard shortcuts to navigate text files quickly, using buffers to more effectively work with code spanning multiple files, and automating repetitive and tedious editing tasks on the fly.

From Innovation to Production: Making It Work is Just the Beginning

by Dennis Ravenelle

Thomas Edison is credited with saying that invention is 1 percent inspiration and 99 percent perspiration. Getting an innovative solution from the lab (or the garage) into a real production environment can be an arduous process. But until something delivers real value in a real-world environment, it’s just a novelty. Here are some things to consider.

Getting a Job in the Tech Industry

by Matthew Chartier '12 and Melissa Niu '13

A seminar to discuss opportunities available to Harvard students in the tech industry and details about the interview process. The seminar will consist of a presentation and Q&A session with a panel of students with prior experience interviewing for and working in positions in the tech industry.

Getting Started with Node.js

by Beardsley Ruml

An introduction to Node.js, a server-side JavaScript environment with non-blocking IO, and its most popular modules, such as Express (built on Connect) and Socket-IO. The opportunities for real-time browser-based interactions will be demonstrated with a new open-source implementation of backchan.nl. (See http://www.github.com/bruml2/backchannel/)

Git Magic: Versioning Files Like a Boss

by Tommy MacWilliam '13

Tired of sudoku_why_is_it_3_am.c and sudoku_OMG_FINALLY_WORKS.c? Learn how software is developed in the real world with git, a distributed revision control system. Track down bugs faster, manage file histories, and deploy code with efficiency and confidence.


by Larry Ehrhardt

Quick tour of iOS and how to build a tab-based app with a view, table, and web view.

jQuery: How to Make Your Website Shiny

by Alex Hugon '11

Stolen from jQuery’s site: "jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript."

What this means for you is that you can make your websites prettier, more interactive, and more dynamic than ever. If you’re considering making a website for your final project, you should check jQuery out!

Ruby on Rails

by Lexi Ross '13

Ruby on Rails is an exciting new web development framework that lets you build awesome, dynamic websites in a short amount of time. Ever used Twitter or Groupon? Then you’ve used a Rails application. The Rails framework utilizes the Ruby programming language, so we’ll be learning basic Ruby syntax as well as the tools you need to get started building a Rails app. Bonus: Ruby is insanely fun to code in!

Search and Browse Superpowers: an Introduction to Solr

by Ben Gaucherin

Search and browse capabilities are core to most applications these days. This seminar will review basic concepts behind search, including the more recent development known as faceted search. We will then use Solr, one of the most popular open-source faceted search engines, to see how one can incorporate advanced search and browse capabilities into an application.

User Experience (UX) Design

by Julia Mitelman '13

Ever stumbled upon a product that frustrated you because you couldn’t figure out how to use it? Learn how to create products that are intuitive and convenient—no user manual necessary! A sneak peek of CS179, this seminar teaches you what you need to keep in mind when making products so you can create a great best user experience—because it’s always the designer’s fault!

Web Security

by Carl Jackson '13

You know how to build websites, but do you know how to make them secure? We’ll teach you about some of the most common Web Security vulnerabilities and how to fix them.

Fall 2010

Beyond Git: Forging SDLC

by Esmond Kane

Given the forthcoming launch of the forge.gov SDLC portal, building on the already deployed forge.mil, collaborative development lifecycle portals are officially mainstream. The presenter will speak to the goals, quirks, maturation and future of a 6-year software development hosted portal for academia et al. in Harvard. The Harvard ABCD Forge is available at forge.abcd.harvard.edu.

BlackBerry Application Development

by Tian Feng '11

Learn the basics of the BlackBerry Application Interface and developing Java applications.

Crash Course in Java

by Matthew Chartier '12

Comprehensive introduction to the syntax, features, advantages, and limitations of the Java programming language, relating back to C. Introducing basic topics in object-oriented programming.

Creating Awesome Websites with Ruby on Rails

by Tommy MacWilliam '13

Ruby on Rails is a web application framework for the Ruby programming language. With Rails, interacting with complex database structures is a snap and site organization is literally done for you, allowing you to focus on creating an awesome website rather than worrying about petty low-level details. In this seminar, we’ll take a look at the Ruby programming language, the MVC design pattern, and how to create and deploy a killer Rails website in minutes (that’s right, minutes).

Data Visualization and Graphics with Processing

by Mike Teodorescu '11

Used in visualizing the human genome, social networks, word maps of presidential speeches, Processing provides a complete framework for interactive visual applications. The seminar is structured as a tutorial to enable you to get started quickly with the Java-based Processing and off to a final project! A survey of visual applications using Processing will be made to give you more implementation ideas for your project.

Developing Apps for iOS: iPhone, iPad, and iPod Touch

by Scott Crouch '13

In this seminar, students will learn the fundamentals of Objective-C, Xcode, the iPhone and iPad simulator, Interface Builder and Instruments. Topics in Objective-C include the model-view-controller paradigm, basic syntax, memory management, Core Data, and UI elements. Students will learn the basics of creating simple, table, tab bar and split view controller applications.

Educational Software Development

by Katie Vale

Interested in writing software to support teaching and learning? This session will discuss how to plan and execute an instructional project, including how to do requirements gathering, how to choose development platforms, and how to assess your project. The instructor has over 20 years experience in designing and producing educational software.

Linux Demystified

by Jeremy Cushman '12

Come learn about arguably the most successful collective action effort in the history of the world. Dive into the tool used by the pros and learn what it takes. Bring along your laptop so you can play along.

Modern Client-Side Web Programming

by Filip Zembowicz '11

Recent developments in the HTML5 and CSS specifications as well as powerful JavaScript libraries like jQuery have extended the realm of possibilities of what can be displayed in a browser. This seminar will be a high-level overview of the new possibilities, such as embedding video directly, using a canvas to draw arbitrary objects, dynamically storing data in the browser using localStorage, and animating and transforming your webpages to your heart’s content.

Search Engine Optimization (SEO)

by Katie Fifer '08

Ever wondered how Google picks certain websites to show up before others in search results? Ever wondered how much traffic (and money) is at stake when it comes to being number 1 on Google? Come learn how to optimize your website to make it more search-engine-friendly and boost your search engine ranking. We’ll cover everything from html tags, to URLs, links, keyword strategy, and overall content.

SMS 101: Mobile Applications for ALL Types of Phones

by Jeff Solnet '12 and Punit Shah '12

This seminar will cover the basics of developing SMS-based mobile applications. We will discuss and demonstrate how to use the Zeep Mobile and TextMarks Lite APIs, in conjunction with PHP scripts, to develop interactive SMS applications. SMS (i.e. text messages) is a nearly-universal technology on cell phones. It allows developers to create mobile applications that are cheap and compatible with all phones, whether you’re using a smartphone (iPhone, Blackberry, G1) or your parents' old black-and-white Nokia. If you’re thinking about changing the world, SMS has been a useful platform for the developing world where few serviced populations have access to advanced mobile devices. Farmers in many African countries are now able to get up-to-date pricing and other agricultural data thanks to SMS applications. In Kenya, mobile (SMS) banking is rapidly changing the way Kenyans create and conduct business. Whether you’re interested in updating Shuttleboy or solving world peace, this seminar will be a good starting point.

Socialize Your Apps with Facebook Platform

by Keito Uchiyama '11

How to get started with Facebook’s Platform product, including use of the Graph API and how to use the SDKs in PHP. An overview of the features in the API and examples of possible integrations.


by Gabrielle Ehrlich '13

Learn how to use Vim, a text editor. It’s awesome.

Fall 2009

Amazon EC2

by David J. Malan '99

Overview of Amazon EC2. How We’ve Used It. What It Costs. Q&A.

Android Apps with App Inventor

by Alex Hugon '11 and Filip Zembowicz '11

App Inventor for Android is a Scratch-like environment that lets you create new mobile applications. With it, you can explore communication, location-awareness, social networking, and massive Web-based data collections. This is a great way to try out mobile apps, and to collaborate with a community of developers at Google and other colleges participating in the App Inventor alpha.

Android Apps with Java

by Kent Rakip '11

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications that run on Android-powered devices.

Beginning iPhone Development: Resources, Tips & Tricks

by Winston Yan '10 and Jonathan Yip '12

Interested in developing an app for the iPhone or iPod touch? This seminar aims to not only be a tutorial on beginning iPhone development, but will also 1) introduce a number of resources we’ve found useful during the development of Rover and 2) provide you with a number of tips, tricks, and customizations that we’ve learned through trial and error. Hopefully from our experience, we can make your life a lot easier!

Building Social Applications with the Facebook Platform

by Keito Uchiyama '11

When you "SuperPoke" someone on Facebook or play "Farmville", you’re using applications built on the Facebook Platform, an extensive infrastructure designed to make it easy for developers to leverage the social graph of the world’s largest social networking website. Now that the Facebook Platform is available outside facebook.com as Facebook Connect and in many other languages beyond PHP, an increasingly large number of notable websites are using the Platform to add the social element to their websites and other applications. Learn how to create such an application yourself and join the social web.

Dynamic Websites on Rails

by Greg Brockman

Ruby on Rails is a framework for building web applications that makes complicated tasks easy, fast, and fun. By taking care of low-level details such as talking to your database as if it were an object, Rails frees you to deal with the interesting parts that make your site unique to you. In this talk, we’ll go through some of the basic concepts of Rails, ultimately building a dynamic application in mere minutes. Give in to peer pressure and join sites like Hulu, Twitter, and Jobster in riding the Rails.

Hadoop for Large-Scale Computation

by Zak Stone '04

Welcome to the era of Big Data, in which petabytes of information are accumulating at an accelerating rate and desperately need you to analyze them. Computation on billions of web pages or photos or log entries requires new tools and a new way of thinking about programming; this seminar will introduce you to Hadoop, the most prominent open-source ecosystem of tools for working with exciting new large-scale datasets.

Interactive Data Applications

by Mike Tucker '03

Build an interactive, data-driven application using Endeca's commercial-grade data tools with XQuery, a standards-based programming language tuned to working with XML.

Endeca provides a platform for search applications that allows users to navigate through data based on record attributes. This means that you can take any dataset that you have in mind and open it up to the world with the type of high quality text search and faceted navigation that you find on the top e-commerce and media sites including HomeDepot.com, NewEgg.com, NewsSift.com and Time.com.

Endeca provides access to these features and more through APIs that are exposed in a standard query language for XML databases called XQuery, in which you can write arbitrarily complex programs. These programs can then be hosted in your Endeca application as web-services, meaning that they can be invoked from your Ajax or Flex-based User Interface.

Scraping Data from the Internet

by Keito Uchiyama '11

Stocks, sports scores, dining menus—there’s a plethora of information out there on the Internet that’s not available by easily accessible Application Programming Interfaces (APIs). Web scraping, or screen scraping in general, helps extract that data by parsing the HTML on web pages, making data from any website on the Internet accessible to your application and prime for mashing up in whatever creative way you can imagine. We’ll go over an example, CrimsonDining.org, which uses robust scraping to retrieve menu data from Dining Services. The techniques covered in this seminar will apply to any programming language or framework.

Visualizing Data and Data Art with Processing

by Filip Zembowicz '11

Processing is an open-source programming language based on Java and designed with visualization in mind. It is for students, artists, designers, researchers, and hobbyists for learning, prototyping, and production of graphics, both static and interactive. It is used intensively in the class CS 171: Visualization, taught by Hanspeter Pfister. This tutorial will cover basic processing fundamentals, including loading data, drawing complex shapes from primitives, physics, and handling user interaction. These programs can then be run online or through downloadable executables.

Visualizing Data Interactively: A Primer on Actionscript, Flex, and the Flare Visualization Library

by Filip Zembowicz '11

Large datasets are everywhere nowadays: information on populations, biology, voting, prices, and distances are just a few of the various categories of data easily accessible online. However, many of these resources suffer from poor user interface design—it is hard for a user to see the information holistically, to see patterns in data, to observe how the data changes over time, and to remain engaged with static blocks of text and images. Information visualization allows for the facile design of engaging ways to explore data. In this tutorial, I will introduce Actionscript (the language that powers Flash animations) and Flex (an Adobe product that allows rapid development of web-based flash apps), specifically focusing on how the Flare visualization library can be utilized to load, display, and interact with quantitative, qualitative, and relative data. Examples of beautiful visualizations: http://www.visualcomplexity.com/vc/.

Adobe has recently announced that the forthcoming Flash CS5 will be able to run on iPhone — this represents a tremendous opportunity for getting into the mobile wave.

Voice Application Development

by Wellie Chao '98

Provide information and services to users over the phone using speech synthesis, dual-tone multi-frequency (DTMF) capture, and public switched telephone network (PSTN) connectivity. Build voice telephony applications using scripting languages such as Perl and Python configured with XML. FreeSWITCH is a SIP-compliant softswitch that lets you talk to other softswitches, softphones, IP phones, and (via SIP) the PSTN to reach (or be reached by) any mobile phone or landline around the world. The CS50 Shuttleboy Voice application (617-BUG-CS50 / 617-284-2750) is built on FreeSWITCH. Organizations such as Delta Airlines, Capital One, Citibank, and even Harvard use interactive voice response (IVR) systems to provide information to customers such as flight times, bank balances, and dinner menus, and to allow customers to perform transactions such as booking tickets, transferring money, making payments. With FreeSWITCH and your favorite programming language (C/Java/Perl/Python/PHP/Javascript/Ruby/etc.), building such systems is a snap. In addition, FreeSWITCH has some cool features such as receiving faxes, sending dynamically generated faxes, integration with Google Talk, mixing of audio streams from multiple sources such as other phone lines for conferencing or local files/shoutcast.

Fall 2008

Accepting Payments with Google Checkout

by Mike Tucker '03

Advanced Ajax and JavaScript

by Josh Bolduc '11


by Brett Thomas '10


by Patrick Schmid

BlackBerry Apps

by Brett Thomas '10


by Andy Lei '09

Facebook Apps

by Linfeng Yang '11

Firefox Add-Ons

by Brett Thomas '10

iPhone Apps

by Vivek Sant '11

Java 3D

by Sanjay Gandhi '10

Java Swing/AWT

by David Wu '11

Real-world PHP

by Keito Uchiyama '11

Ruby on Rails

by Aaron Oehlschlaeger '11 and Linfeng Yang '11

Fall 2007

C++/Object Oriented Programming

by Thomas Carriero '08

Choosing the Right Languages/Libraries

by Kelly Heffner and Paul Govereau

Event-Driven Programming

by Kelly Heffner

How to Write SMS-Based Programs

by Chris Power

Intro to Ruby on Rails

by Kevin Bombino '08

Warning: Rails has changed significantly since this seminar.

Network Programming

by Paul Govereau

OpenGL (Graphics Library)

by Paul Govereau

SDL (Graphics Library)

by Thomas Carriero