Seminars

on the CS50 Wiki

Jump to: navigation, search

Below are CS50 seminars. Report any broken links to sysadmins@cs50.net.

Contents

Fall 2009

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

Android

by Brett Thomas '10

ASP.NET

by Patrick Schmid

BlackBerry Apps

by Brett Thomas '10

Django

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

Personal tools