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.
by Brian Scassellati
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
by Sam Green and Hugh Zabriskie
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
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.
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.
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
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
Meteor: a better way to build apps
by Roger Zurawicki
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!
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.
by Tomas Reimers 17 and Mike Rizzo
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.
by Roger Zurawicki
by Kevin Schmid
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.
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
by Kevin Schimd '15
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.
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!
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
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
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
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
jQuery: How to Make Your Website Shiny
by Alex Hugon '11
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!
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
Crash Course in Java
by Matthew Chartier '12
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.
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
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
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
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
Intro to Ruby on Rails
by Kevin Bombino '08
Warning: Rails has changed significantly since this seminar.