|
|
|
|
||
|
Course Description
In 2011, Marc Andreessen penned a famous Wall Street Journal article “Why Software Is Eating The World.” Almost a decade later, software is still eating the world. Companies like Google, Amazon, Uber, and Airbnb are revolutionizing entire industry sectors, and even traditional enterprises have to embrace this transition to software and automate numerous tasks within their organizations in order to remain competitive.
This software revolution is driven primarily by two technology trends. On the client side, billions of users now own computers and smartphones with broadband Internet access, providing each of them “instant access to the full power of the Internet, every moment of every day.” On the backend, cloud services and readily available software tools vastly simplify creating software startups in many industries, without the need to invest in infrastructure or employee training. For instance, when WhatsApp was acquired by Facebook for approximately $19.3 billion dollars, it powered hundreds of millions of users worldwide but had merely 50 employees.
These technology trends not only enable software to flourish, but also fundamentally change our software engineering process. Broadband access enables developers to run their software in the cloud for users to access via browsers or mobile apps -- so-called Software-as-a-Services (SaaS). The developers of SaaS products continuously gather user feedback and behavior analytics, quickly refine existing or build new product features, and deploy to production in matter of minutes to test out their ideas -- so called Agile Development. This style of close collaboration with customers and fast iteration of product ideas is in stark contrast with how software was engineered two decades ago.
In this course, we will study modern software engineering practices through an entrepreneurial lens. In particular, we will study how to engineer a SaaS product, including topics such as customer discovery, behavior-driven development, Ruby on Rails, and Dev/ops. For details on the topics we will cover, please go to the Course Syllabus page.
Course Goals
The general goal of this course is to help you learn the skills and practices to build modern software products and services. You will learn not only relevant engineering skills, but also necessary business skills such as how to interview customers and gather early feedback for your ideas. We believe that the tremendous advance in technology now makes it much easier to create software startups, and that software engineers tend to be the best founders given their skills and passion to build software that help others.
If you are interested in creating a startup soon, we hope this course will prepare you for your entrepreneurial adventure. Better yet, the course project you do may turn out to be the next unicorn!
If you have done research for example as a PhD student and created technology that you think has commercialization potential, we hope this course will teach you the skills needed to turn your technology into a useful software product and gain traction.
Even if you have no immediate plans to start a company, we hope the skills you learn in this course will better prepare you to be a software engineering leader who not only is well-versed in modern software engineering practices but also has a keen business and product sense.
Course Format and Student Workload
This course will center around lecturing, online self-studying, and a final project . We will meet once per week where the teaching staff will talk about topics on software entrepreneurship. You will conduct intensive self-studying by taking Berkeley's Agile Development Using Ruby on Rails courses (basics, advanced) on edX. There will be a semester-long course project where you and your team will build a working SaaS product and launch it by the end of the semester.
You have three main responsibilities in this course:
- Take the edX online courses carefully and complete the quizzes and homeworks . We will not use our precious class meeting time to cover everything taught in the online courses. Instead, we will focus only on discussing the most important topics, and add additional topics such as the lean startup methodology that the online courses miss. To truly make this course work, you have to take the edX online courses very seriously, including watching the online videos and completing the quizzes and homeworks.
- Participate in class meetings. Our class meetings will include not only lecturing, but also discussions. The teaching staff will ask pointed questions. You are also welcome to bring the problems you encounter when working with your potential customers and discuss with your fellow students.
- Complete the final project and demo. The final project is essentially a mini-startup project. You and your team are expected to build a SaaS product and launch it. In terms of ideas, you are encouraged to come up with an idea of your own, which the teaching staff will help refine. Alternatively, you can choose one of the startup ideas we suggest. During the semester, your team will turn in two iterations of the SaaS product. Towards the end of the course, we will have a Demo Day where all teams pitch and demo their products. Each team will submit code, documentation, data, URL to your product, and pitch deck during the finals week. This project is a semester-long project: you and your team need to constantly work on it and make progress throughout the semester, so that you can do iterations and find a good product-market fit. You will surely fail the final project badly if you spend no time on it during the semester and count only on the final push.
You should not take this course if you cannot commit to the above responsibilities.
Prerequisite
COMS W3137 Data Structures and Algorithms, COMS W3157 Advanced Programming, and COMS W3827 Fundamentals of Computer Systems; or equivalents of these three courses.
Strong prior experience with Object-Oriented programming languages such as Java is required.
Strong independent study skills are required.
Prior entrepreneurial experience is a big plus.
Enrollment
Enrollment for this class will be limited. Please register early if you plan to take this class. Please make sure you meet the prerequisites before registering. If you are waitlisted, please come to the first two weeks of the class because slots typically open up.
Materials
The only textbook we will use is Engineering Software as a Service: An Agile Approach Using Cloud Computing. The Kindle version suffices. All other relevant materials will be made available online at the Course Syllabus page.
Grading
20%: | Class participation. |
20%: | Assignments including two iterations of your SaaS product. |
60%: | Final project including the SaaS product you build, the demo and pitch deck, code, documentation and relevant data. |