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