RubyOnRails.berkeley.edu

393 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
393
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

RubyOnRails.berkeley.edu

  1. 1. UC Berkeley RubyOnRails.berkeley.edu Armando Fox, Will Sobel, Alex Bain, Arthur Klepchukov, Dave Patterson
  2. 2. Why? • RoR great candidate for authoring future Web applications – High level of abstraction => allows innovation below rich interface – High level programmer productivity => fast gratification without sacrificing pedagogy • Software eng. courses lag industry practice – Shrinkwrap => DADO; current courses focus on D, largely exclude ADO – Write it yourself => integrate large building blocks & extend existing open-source packages – Write once & ship => continuously refine/fix/deploy – Keep up with the latest trends like Facebook API and OpenSocial
  3. 3. Developing RoR Expertise at Berkeley Best practices for RoR development, deployment, scaling Best practices for RoR development, deployment, scaling Courses & extracurricularsCourses & extracurriculars Instructional computing infrastructure Instructional computing infrastructure • Investigation of RoR performance and scalability (with Sun) • 1-day short course • Undergraduate project course • Meetups • Future SW Engineering course •Real-world deployment environment for students
  4. 4. Short Course & Meetups • 1-day intensive intro to RoR concepts – well attended by faculty, industrial sponsors • “Meetups” (East Bay Ruby Meetup) now hosted in Soda Hall (thru Summer 08) – http://ruby.meetup.com/81/ • Mailing list: ror-announce@lists.eecs.berkeley.edu
  5. 5. CS98/198: Web 2.0 Development in RoR • Aimed at early undergrads (~soph/jr) – prereqs: programming structures in Scheme, basic OOP skills (at level of Java or equivalent) – Goal: positive gratification for putting skills to use early in your CS career developing something you want – Learn marketable skills and develop good programming habits • Objective: small-group (2-4) to develop a web application of your own design and choosing – Weeks 1-2: finger exercises in Ruby/Rails, intro. to Web technologies, intro. to relational databases – Week 3: Present project ideas, form groups – Week 4: Do user stories, CRC cards to “floorplan” development milestones – Week 5-11: intermediate checkpoints, final demo
  6. 6. Teaching Web 2.0 Development Cycle • Goal: Industry-realistic intro to Web 2.0 development – Agile: user stories, velocity, CRC cards, – Management: testing/test-first,SCM using Subversion – Interactive: CSS/XHTML separation, JavaScript, AJAX – Deployment: Capistrano, Apache, Mongrel, MySQL
  7. 7. Teaching Ruby • Heavily functionally-flavored – minimalist, consistent syntax & semantics for OOP (inherited from Smalltalk) • Provides “useful”, concrete context for reinforcing key ideas from introductory CS programming course – render chunk of Web page => closures – “enumerable” objects of varying types => iterators – convention over configuration => reflection, higher order functions/metaprogramming • i.e., opportunity to reinforce important but subtle CS concepts & show them in action
  8. 8. S07, F07, S08 iterations • 2 projects with external customers – Yumify: http://www.yumify.com/ – Hesperian: http://hesperian.rorclass.org/ • hire strongest alumni to help run course & help with other RAD Lab RoR projects • connected to “Web 2.0 Entrepreneurship” course (Center for Enterpreneurship and Technology, UCB College of Eng.) – If register for both, get 1 unit credit towards Management of Engineering & Innovation Certificate • Driving improvements in Instructional Computing environment
  9. 9. Instructional Computing Enhancements • Joint work with Shel Waggener (UCB CIO), Bill Allison et al., Instructional Svcs. & Tech. • Goal: emulate real-life development/deployment environments for Web apps – Campus-wide TextMate editor license – Campus-wide Subversion repository via CalNet authentication – Shared Hosting and MySQL instance for Web apps • Future: EC2-like, virtual-machine-based student deployment environment
  10. 10. Future: Software Engineering Using RoR/Python? • Goal: software engineering pedagogy in context of network service development • Medium-to-large project/team management, agile development • Deployment, measurement, scaling/optimizing • Discussion with Paul Hilfinger – Summer 08: planning – Fall 08: CS 194 with CS upper division credit – Spring 09: CS 169?
  11. 11. Conclusion/Discussion • Bet on RoR (with RAD Lab extensions, improvements, ...) as DC integration language • Create courses, extracurricular activities, community/expertise around RoR • Early success: students can choose own projects, get working prototype in ~8 weeks, exposure to industrial practices/tools • radlab.cs.berkeley.edu/wiki/R oR

×