InstructorsPito Salas
Class TimesTuesday and Friday 12:30PM - 1:50PM Friday 2:00pm-4:50pm (lab)
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!

Additional information

Pre-requisites or permission

Cosi21a is 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