Each fall, CS50 offers a series of seminars. Led by the course’s own staff as well as by HUIT staff and ABCD members, CS50 seminars are 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 2013

Amazing Web Apps with Ruby on Rails

by Gabriel Guimaraes

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

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

JavaScript for Web Apps

by Tomas Reimers 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/.

Node.js

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

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.

jQuery

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.

Emacs

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.

iOS

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.

Vim

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

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