InstructorsPito Salas
Class TimesTuesday and Friday 12:30PM - 1:50PM, Friday 2:00pm-4:50pm (recitation)
Office HoursGo to this link to reserve an appointment:
PrerequisitesCOSI 12b and COSI 21a
HomeworkHomework assignments for every class; Major Software Engineering project; Team assignments. Success in this 6 credit hour course is based on the expectation that students will spend a minimum of 12 hours of study time per week in preparation for class (readings, papers, discussion sections, preparation for exams, etc.).
Grading0-100 based, weighted by type of submissions. No tests.
Email contact:

Course Description

You’ve programmed, maybe a lot. But have you ever asked yourself how you would actually build a complete product, from soup to nuts? Surely you have had ideas for products: Using your scarce free time to do fun things? Finding out where your friends are hanging out right now? Or perhaps a business selling your own custom made jewelry?

Welcome to Cosi166b! This course aims to show you that you can build such a product from scratch, working on a team from zero to launch in one semester.

Course Themes

We cover a lot of ground in this course, and quite rapidly. Here are the central themes:

  1. Practice working with a team of other software developers. How do you divide up the work, keep momentum going, make sure you finish, deal with conflict? All these skills and others will contribute directly to your possible future as a software engineer.
  2. System architecure and design. Given your vision for a product, how do you divide it up into layers or levels or services, what does the database do, how do you communicate to your mobile phone, how do you handle logins? These and many many more issues have to be confronted and overcome.
  3. Software engineering. This might turn out to be the largest program you’ve written so far. How do you organize the code, deal with source code management, testing and debugging, finding and choosing the right tools and libraries? Real world software engineers deal with and solve these questions every day and so will you!
  4. Ruby and Rails. You will become expert in one of the most popular languages and frameworks for building web based applications. This is one of several and as a software engineer you will know that the sand is constantly shifting, but for today, it’s a good choice. With this experience you will be equipped to learn any other similar framework when and if that becomes necessary in the future!
Experiential Learning

This is an experiential learning course! You will be working in teams and discovering what that’s like, and how to be effective in that kind of setting. It’s something that will definitely come up in your future work, no matter what direction you take: business, academia, non profits, government, or entrepreneurship. You can count on learning from the challenges, obstacles and successes you encounter.

You will also be asked to be very self-reliant, figuring out things on your own, having to use the web to research tools and techniques to use, sorting through the noise and finding the best solutions. Everything will not be served up on a silver platter. You can count on developing your self confidence and perseverence and hopefully come to see the value of this in your future.

Overall you will be asked to think about what you are learning from these experiences, what you could apply in the future, and how this course may influence the way you think about what you want to do next.

Additional information

Pre-requisites or permission

Cosi12b and Cosi21a are required for admission to this course.


Students have all kinds of computers. I have nothing against Microsoft Windows, and you could take this course using just Microsoft Windows, but you’re life (and ours) is just going to be more difficult. It just seems that the open source tools and libraries we use don’t like Windows. So for this course, if your computer is set up with just windows, you are required to set up a Linux parition or a vagrant virtual box. This is mandatory

Look here for the details of the Required Preparation

Change Policy

The instructor reserves the right to make changes to this syllabus and the associated curriculum web site if he deems it necessary. Any changes will either be announced in class or through e-mail. All students are responsible for finding out about such changes. Each student must be aware that not all assignments are listed in the syllabus. Students must use their common sense and not look for loopholes in the syllabus because, ultimately, the instructor has the final say in all matters. If you are confused on any assignment, ask the instructor for clarification.

By deciding to stay in this course, you are agreeing to all parts of this syllabus. In fairness to everyone, the syllabus must apply equally to all students without exception.

Further detail