• I'm on the waiting list.  Will I get in?
    • Our goal is to accommodate as many as possible without reducing the quality of the course experience. In general, preference will be given to CS seniors & juniors, then EECS upper division and lower division students, then non-EECS students. The Registrar and the Department (specifically, Michael-David Sasson), not the instructor, control the waiting list.
  • I'm on the waitlist but I see there are still open spots.
    • The waitlist is managed by the registrar and by Michael-David Sasson.  In general we can't make specific arrangements for a particular person to be "plucked" from the list beyond the general preferences above.


  • What will the project be like?
    • Teams of 4-6 students will work with a real external customer (generally nonprofits and campus units) to design, plan, develop, test, and deploy a software-as-a-service application. Team size restrictions (both upper and lower bounds) may be given based on enrollment and other considerations.
  • Why will the project be super awesome?
    • You'll learn and use Agile/XP as the development methodology.  You'll use the same techniques and tools used by today's leading software companies, including Behavior-driven Design, Test-FIrst development, Agile/Extreme Programming, Pair Programming.  Don't take my word for it; we will have industrial guest speakers, including recent Cal EECS grads now in the software industry, who'll tell you how it is.
  • What platforms/languages/etc. can we use?
    • Ruby 1.9.3, Rails 3.2.19. (A lot of the homeworks and other materials haven't been updated to Rails 4 yet, plus Rails 4 and Ruby 2 still have a number of unaddressed bugs and security vulnerabilities.)
  • Can the project use another language/platform/etc. for the project other than Rails?
    • No.  It must be based on Rails because of the toolchain we use in the course.
  • What if the project is primarily a static-content website?
    • Such projects must have some nontrivial functionality that would not be available in an off-the-shelf CMS such as Drupal, Joomla, WordPress, etc.  This is rarely true for static-content sites.
  • Can I write a mobile phone app instead?
    • It's OK to devote part of the overall project effort to a mobile client part, which you'll do in JavaScript+HTML5. But the majority of the focus should be development on the server side.  We do not plan to provide software, dev kits, or TA support of any kind for things like iOS and Android; you're welcome to do that, but all team members will be responsible for knowing, understanding, and contributing to the development of the server-side part, regardless.
  • How will project groups be assigned?
    • You'll choose them yourself, but if you don't choose up a team by the stated deadline, we'll assign them for you.
  • Do I need to pre-choose a project group before the course starts?
    • No, but you can if you want. If there are people you like working with, you should hit them up sooner rather than later.
  • Can projects be proprietary?
    • During the course, your instructors, TAs, and even fellow students will need to see the project and parts of its code, and they will not be able to sign NDAs to do so.  (Note that content hosted on your project site can certainly be proprietary; you can construct fake/placeholder content for demos.)  You will also be expected to use various tools to analyze your code, and many of those tools expect to operate on code that is hosted on a publicly-accessible repository (unless you wish to personally pay to host it somewhere private, and pay for the tools, which are free to use on public repos but pay to use on private repos).  After the course, Berkeley rules say that your work is your own and you may do whatever you wish with it.
  • A colleague of mine has an idea for a project, or I have an idea for a project.
  • Can people not enrolled in CS169 be part of CS169 project teams?
    • All project team members must be students registered for credit in the class. You can choose to have others work on the project, but everyone on the team gets the same grade for the project, so you want people who have skin in the game. (That is, "Our non-CS169-student project member screwed up" will not be a valid excuse for problems in the project.)
  • But my favorite project partner is on the waiting list/not sure if they will get in!
    • Yeah, I know, that sucks. Unfortunately not much I can do about it. I really, really advise you NOT to depend on project team members who aren't enrolled in the class for credit. Seriously.

Have a question? Email the course staff or Prof. Fox and we can add the answer here.