About the course

This course will focus on web programming. The first half will focus on the the basics of the Internet and the Web, HTML and CSS, and basic and advanced Ruby. The second half will focus on Rails. Teams (of size 2-3) will build a web application in the second half of the semester as the class project. Through Rails, we'll explore the "culture" of web programming such as agile methodology, testing, key aspects of software engineering, using web services and APIs, and deploying to the cloud.

Throughout the semester, teams will learn and use the same world-class tools that are used to deploy and build real world web apps such as Ruby on Rails, GitHub, Pivotal Tracker, Cucumber and Capybara, RSpec, PostgreSQL, Heroku, and New Relic.


Swapneel Sheth
swapneel [at] cis.upenn.edu


You should be comfortable with programming (in Java) and data structures - i.e., CIS 121, CIT 594, or equivalent.


Here's the tentative list of topics:

  • Basics of the Internet and the Web
  • Basic Linux/Unix Commands
  • Ruby - basics and advanced
  • Software Architecture, Software as a Service, REST, MVC
  • Software Engineering, Behavior Driven Development (BDD)
  • Ruby on Rails
    • BDD with Rails
    • Databases, SQL, and Rails
    • Controllers and Routing in Rails
    • Testing, TDD, Spec/Behavior Driven Testing in Rails
    • Views in Rails
    • Deployment and Monitoring


The guidelines for the final grade are:

  • 25% individual assignments
  • 35% team project
  • 20% midterm exam
  • 20% final exam


Armando Fox and David Patterson - Engineering Software as a Service