Learn agile development with the help of an experienced mentor!
Through BerkeleyX, a partnership between UC Berkeley and EdX, you can take two courses, covering the introductory and advanced material in the book respectively:
- CS 169.1x covers how to use Agile, Behavior-Driven Design (BDD) and Test-Driven Development (TDD) to develop, test, and deploy a SaaS application using cloud computing and the Ruby on Rails framework. Prerequisite: Familiarity with at least one object-oriented programming language, such as Java or C++.
Enhance your course experience
with a live online Mentive
class: Collaborate with other students, ask questions and discuss the course content in interactive small-group meetings led by expert mentors.
Through your involvement in the course, you’ll also have a chance to participate in open source projects with AgileVentures, headed by Prof. Sam Joseph, who also facilitates the course! Read testimonials from students who have taken the course. More than 10,000 students earned certificates from these online courses in 2012.
Armando Fox created Mentive to improve online learning through weekly online classes that follow popular online courses. Mentive students choose among several live classes in different time zones and languages worldwide, where they can ask questions, discuss the course content, and benefit from the collective experience of everyone in the class. In previous runs of our courses, Mentive students were 12 times more likely to successfully complete the course than their non-mentored peers.
Is this class appropriate for beginning programmers?
No, we expect students to already be proficient in at least one object-oriented language, and to have mastery of basic concepts of OO architecture (encapsulation, inheritance, composition, polymorphism), and basic programming constructs (iteration, recursion, dealing with collections, data types and data structures). If you're not experienced with these concepts, you may find it hard to pick them up as you go.
Why are you using Ruby and Rails rather than a more popular language like Java or Python?
We believe it is critical to teach the importance of testing, of communicating with nontechnical customers, and of using all methods at your disposal to create code that is modular and reusable. Our colleagues in the SaaS industry strongly support these goals. The Ruby/Rails ecosystem has by far the most developed tools for unit and functional testing (rspec), integration testing (capybara), acceptance testing and customer communication (cucumber), as well as great tools for code analysis both quantitative (flog, simplecov, saikuro) and qualitative (reek, flay). And Ruby, as a language, includes a number of mechanisms that make it easier to architect your code for reuse (including higher order functions, internal iterators using yield(), mix-ins, and metaprogramming).
Can I complete the coursework using another language or SaaS framework?
Not if you want to be graded.
Is there a required book or other material?
Engineering Software as a Service (ESaaS) is a recommended book written by the instructors specifically to accompany this course. It is not free, nor required. We provide both information about the book and pointers to alternative free (and non-free) online and print resources on this site.
Can I get a certificate of mastery just by watching the lectures and taking quizzes online?
No. Just as in real software engineering, you will need to complete real coding assignments, and these will require you to find and use other (mostly online) resources, to get more detailed information than we can fit into 10-minute lecture chunks. Our industry colleagues assure us that this is a way of life for professional developers, so think of it as acquiring a valuable career skill. If this way of working makes you uncomfortable, you may find the course frustrating.
What tools and technologies will I learn?
You will learn and use cloud computing, unit testing tools, tools for converting customer requirements into integration tests, tools for analyzing your code, tools for managing your code among a small development team, and tools for agile project management. You will deploy a SaaS app to the cloud not just once but several times during the course. You will follow the same processes and use the same techniques and tools that SaaS professionals use. You'll be exposed to a lot of new tools, some of which may become obsolete in a year or less. That's the nature of the business, and we update the course content and the book regularly in response to such changes.
Homeworks are challenging programming assignments that build on and go beyond what is discussed in lecture. You should expect to have to consult other sources for the detailed knowledge you'll need to complete them. The homework autograders perform quite detailed analysis of your solutions and give you detailed feedback. You may resubmit the homework as many times as you like to improve your score, until the deadline.
Quizzes are multiple-choice and short-answer questions that test your synthesis of the material. You get only one chance to take each quiz. Since you cannot re-take a quiz, you should choose a time to take it when you can complete it uninterrupted.
Every homework and quiz has a "soft deadline" and a "hard deadline" that is 1 week later. Submissions by the hard deadline get full credit. Submissions by the soft deadline get a 25% penalty. Submissions after the soft deadline get no credit.
Can I submit homeworks or quizzes after all deadlines have passed?
Depending on EdX resources, the autograders for the homework assignments may or may not be running after the course closes. However, you can still take the quizzes and they will be graded, but you won't be able to get a certificate of mastery.