CS 169 Software Engineering - Spring 2012 |
Why we advise you not to multitask in lecture
We do not control the waitlist. We cannot cherry-pick people from it nor change the priorities used by the registrar's office to process it. Therefore we're sorry to say we cannot usefully address any questions about your chances of getting off the waitlist; you must take that up with the registrar. Thanks for your interest.
Course Goals:
Students will:
- understand the new challenges, opportunities, and open problems of SaaS relative to SWS (shrink-wrapped software)
- take an SaaS project from conception thru planning, development, assessment/testing, deployment, and operations, experiencing the attendant challenges of each stage, using RoR for development and Cloud Computing for deployment
- understand and use agile development methodologies and tools, including low-fi UI sketching, user stories, behavior-driven development, version control for team-based development, and management tools for cloud-computing environments
- develop both technical and collaboration skills for working in "one-pizza" software teams
- understand and apply fundamental programming constructs and techniques including design patterns for software architecture, higher-order functions, metaprogramming, reflection, etc. to improve the maintainability, modularity and reusability of their code
Course Information, Contact, Materials
- Time & place: Tu & Th 11:00am-12:30pm, 101 Morgan
- Syllabus: detailed calendar of topics, deadlines, etc.
- Lecture slides
- Instructors:
- Richard Xia. Office hours: Thursday 4-5pm, Friday 1-2pm in 611 Soda
- Michael Driscoll. Office hours: Wednesday 10-11am, Thursday 8:30-9:30am in 611 Soda
- Staffed Lab Hours: TBA. Undergraduate alumni of the course will be available to help with hands-on issues (programming, deployment, software issues, etc.) including Allen Chen, David Eliahu, Omer Spillinger, and Richard Zhao.
- Contacting the Staff: See below for "Have a question?"
- CCN: 26605
- Prerequisites: CS61A,B,C or equivalent experience with functional & higher-order programming & object-oriented programming.
- Grading: 4 units, letter graded. Determined by:
- 33.3% - Five 30-minute, in-class quizzes.
- 33.3% - Six programming-related homework assignments (see “Homework Assignments”).
- 33.4% - Team Project. Details and deadlines here.
- Discretionary bonus points will be awarded for:
- Being unusually helpful on Piazza.
- Suggesting questions for quizzes and homework assignments.
- No final exam.
- Lecture webcasts are available on webcast.berkeley.edu approximately 2-3 days after the taping. These differ from the short videos for the online course, and Berkeley students may utilize either.
Required & Recommended Books
Required:
Recommended:
Courseware
We’ll be testing your code on VirtualBox VM, available for download here. The VM runs Ubuntu and contains working installations of Ruby, Rails, RSpec, etc.
We will be assessing your code using the VM, so we suggest that you develop with it. A version of the VM deployable on Amazon EC2 will also be made available. If you still want to work natively, we will provide a list of everything you need to install.
Courseware-related VM info is already at saasbook.info, and there will soon be info on what to install on your own if you go that route. Note that the course staff cannot provide support for helping you install stuff on your own.
Homework Assignments
Homework assignments are due at 11:59pm on the due date, which is usually a Friday; check the syllabus to be sure. Assignments submitted up to 24 hours late are penalized 25%, and submissions up to 48 hours late are penalized 50%. Assignments received later than 48 hours get zero credit, since we need to post solutions in a timely manner. Some assignments may be completed in pairs if noted.
Homework 1 Due Friday, Jan. 27 at 11:59PM
Homework 2 Due Friday, Feb. 03 Saturday, Feb. 04 at 11:59PM
Homework 3 Due Friday, Feb. 10 Monday, Feb. 13 at 11:59PM
Homework 4 Due Friday, Feb. 17 Thursday, Feb. 23 at 11:59PM
Homework 5 Due Friday, Feb. 24 Thursday, Mar. 15 at 11:59PM
Homework 6 Due Thursday, Mar. 15 at 11:59PM
(note: links will become active when homeworks are posted)
Quizzes
There will be five 30-minute, in-class quizzes. If you cannot attend class on the day of a quiz, please inform the course staff at least 5 days in advance and we will accommodate you.
Solutions to quizzes and homeworks will be distributed in lecture or section.
Course Project
Students will complete a course project in teams of four or five. Grading will be shared among all members (i.e. the project gets a grade, not each student separate), and we will require specific on each member’s role in the group. The project milestones are described further here.
Demo: May 10th, 8-11 am (the scheduled final exam slot for this class)
- Location: TBD
- Schedule and signup sheet
- Demo requirements and tips for success
Section Materials
1.23.12 (Big Ideas in Software Engineering, Ruby Calisthenics): worksheet
1.30.12 (Quiz 1 Review): worksheet
2.6.12 (SaaS Architecture): slides worksheet
2.13.12 (Rails & BDD): worksheet with solutions
2.27.12 (HW5 excerpt): worksheet
3.12.12 (Teams and Legacy Code): worksheet
4.2.12 (Quiz 5 Review): worksheet solutions slides
Project IP Info
If you are thinking of working on a project that may have future commercial applications (or pitching one that does), please bear in mind the following:
- According to UCB policy, intellectual property created by undergraduates belongs solely to them.
- According to class policy, project prototypes will be open-sourced under one of the various popular open source licenses (MIT, BSD, etc.)
- According to class policy, no NDA's will cover any aspect of a class project. All aspects of the project—ideas, storyboards, source code, test cases, GUI screenshots, code reviews—will be publicly viewable and accessible throughout the end of the class. What students choose to do with those products after the end of the class is solely up to them.
- All project team members must be students registered for credit in the class. No exceptions.
Have a Question? Here are some really good and really bad ways to get an answer, in order from best to worst:
- Search for the answer. Far too often students ask a question whose answer is available on this very page or on the top of assignment handouts. And the Internet is a wondrous place: see Online Resources below for some ideas besides the obvious (Wikipedia, Google, ...)
- Ask a fellow classmate.
- Ask on Piazza. Your question may already have been asked & answered, but if not, ask it and check back for your answer
- Ask a TA in discussion section, lab, or office hours (see above for hours and places)
- Ask Armando, Dave, or Koushik during office hours, or during lecture if there’s time
- Worst way ever: Email the course staff at cs169-s12-staff@lists.eecs.berkeley.edu (must send from a berkeley.edu address). Communication by email doesn't scale to 100+ students. This way is the SLOWEST way to get an answer, compared to all the above.
- Well, maybe there's one way that's worse than that: Email course questions to Armando, Dave, or Koushik personally. They're not as smart as the rest of the staff (well, Koushik is), and they get too much email as it is. Of course, emailing for an appointment because you cannot attend regular office hours is fine.
Info for Auditors, Spectators, etc.
Due to limited resources, we will only be able to grade homeworks/exams and allow project participation and coaching for students who are registered for credit for the class. Students auditing or wishing to sit in on the lectures are welcome to do so, space permitting, but thanks for understanding that we have to devote our resources to those taking it for the full 4 units.
Highly Recommended Resources, both online and in print:
Books highlighted in yellow are available free online, either because they are published under no-fee licenses or because they are available to UCB students via O'Reilly Safari Online (in the latter case you must access it from an on-campus IP address or configure your Web proxy to access it from off-campus.)
- For Rails, the framework:
- Agile Web Development With Rails, 3rd ed., by David Heinemeier Hansson (Pragmatic Programmers, 2008)- a more tutorial introduction to Ruby and Rails. Available as a PDF on their website or in hardcopy. Note: be sure to get the THIRD EDITION, as earlier editions don't cover the significant changes in Rails 2.0.
- The Rails 3 Way, by Obie Fernandez (Addison-Wesley, 2007) Available as print version or Amazon Kindle ebook version. Encyclopedic reference to everything Rails. Updated for Rails 3, which has lots of changes from Rails 2.
- Learning SQL: good start if you have no prior SQL experience.