UC Berkeley Students
- Prof. Fox's offerings of CS 169, Software Engineering, use this book to teach you fundamental software engineering practices while designing, implementing, testing, and deploying a Web-based app using Rails
- We offer a subset of this material through the free BerkeleyX online courses CS 169.1x and CS 169.2x offered through EdX.
- Testimonials from students who have taken the course. More than 10,000 students earned certificates from these online courses in 2012.
MOOC Students: have questions?
If you took the open EdX course and have questions:
- Try this student FAQ for general questions about EdX courses (not specific to this course).
- If you have questions regarding exam results or certificates, use this contact page to reach EdX directly: the MOOC instructors do not have access to the certificate-generating infrastructure.
Questions specific to CS 169.1x/CS 169.2x:
Is this class about web programming?
No. It's about software engineering, but we use SaaS as the vehicle for teaching the concepts. If you're looking for the quickest way to get something running as a Web app, this course may try your patience. If you're looking to learn the techniques and tools used by companies whose lifeblood is SaaS development, this is a good course. Be prepared for novelty.
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, and once you begin taking it, you must finish it within a prescribed timing deadline, typically 30 or 45 minutes. 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.