Skip to content


Logistics and Communication


  • Tues @ 9:30am - 11:00am (WEH 2302)
  • Thurs @ 9:30am - 1100am (WEH 2302)


  • Section A: Fri @ 9:00am - 10:00am (WEH 4625)
  • Section B: Fri @ 11:00am - 12:00pm (WEH 5302)


The waitlist is currently long. We are trying our best to add as many people as possible, but are dealing with limitations imposed by the university.


15-214/17-214 or 15-213, or equivalent. The focus of this class is largely technical; the goal of the prerequisites is to ensure students should sufficient programming experience to succeed in the course.


The subject matter of this class is at the cutting edge of engineering; as such, there do not exist (to our knowledge, at least) suitable textbooks covering the material. We will instead pull various readings throughout the semester from online sources.


The course uses Canvas for homework submission, grading, announcements, and supplementary documents. Discussion and questions will be managed on Slack. Slides, assignments, and schedule will be posted on this website. We use GitHub to coordinate group work. We will provide private GitHub repositories for individuals and groups.

Please use Slack for discussion and questions, including clarifying homework assignments.

The instructors and TAs hold weekly office hours. If you cannot make it to office hours, contact us via email (using the course-wide email address, unless the issue is sensitive) and we will find an alternative time to meet.

If you have a question or concern that is not suitable for Slack, contact the instructors via: Unless the subject matter is sensitive, all questions will be conveyed to all instructors before being answered, so there's no point in emailing just one of us.

Note that the list should be set to accept messages from any CMU email address; if your message is held as a non-member posting to a members list, don’t worry: we respond to moderation requests very quickly.

For sensitive matters, of course, feel free to contact us individually.


Evaluation will be based on the following approximate distribution: 50% assignments, 20% midterm, 20% final project, 10% participation.

Note: Attendance is required for guest lectures. Absences during guest lectures (without previously arranged accommodations) will result in a deduction in your overall course grade for participation.

Course Policies


Teamwork is an essential part of this course. Teams of 3-5 students will be assigned by the instructors and stay together for multiple assignments. Most assignments have a component that is graded for the entire group and a component that is graded individually. By default, group assignments will receive a single grade, for all individuals. However, we reserve the right to institute peer grading in problematic situations, detailed in the Team Policy.

Please fill out the Teamwork Survey so we can begin forming groups.

Late Work

Late work will receive feedback but no credit. Due to the course's heavy reliance on teamwork, there are no late days. We make exceptions in extraordinary circumstances, typically involving either a family or medical emergency (ideally, your academic advisor or the Dean of Student Affairs should request such exceptions on your behalf). We can make accommodations for travel (e.g., for interviews) so long as you request it in advance. Always communicate with your team about such issues.

Devices in Lecture and Recitation

Research shows that using devices on non-class related activities harms both the device user's learning, and other students' learning as well. Therefore, in general, we do not allow the use of devices during lecture. However,, if you genuinely use your laptop for class-related activities (note-taking, etc), tell us, and we will make an exception. However, we ask that if you do so, you are careful to keep your devices in note-taking mode (and don’t stray to Facebook, homework, etc). In addition, you will be required to sit in the back row of the lecture to minimize the impact your screen has on others.

Note that recitation activities will often involve devices, so please do bring your laptop!

Time Management

This is a 12-unit course. It is our intention to manage it so that you spend close to 12 hours a week on the course, on average. In general, 4 hours/week will be spent in class and recitation, and 8 hours on assignments. A key challenge in startup engineering is that there is never enough time to implement everything that you want to implement; it is therefore important that you practice time management, estimation, and task prioritization. We would rather you make well-justified decisions to not do something than spend tens of hours on your homework.

Note that most homework is done in groups, so please account for the overhead and decreased time flexibility that entails.

Feel free to give the course staff feedback on how much time the course is taking for you. This is especially relevant as we teach this course for the first time!


Describing tradeoffs, justifying decisions, and communicating effectively with less technical stakeholders are key learning goals of this course. Most homework assignments have a component that require discussing issues in written form or reflecting about experiences. The Student Academic Success Center offers one-on-one writing help for students, along with workshops. The instructors are also happy to provide additional guidance if requested.

Academic Honesty and Collaboration

The University Policy on Academic Integrity applies. Most assignments are done in groups. Our expectations regarding academic honesty and collaboration for group work are the same as for individual work, elevated to the level of "group." Group members will collaborate with one another, but groups should work independently from one another, not exchanging code with other groups. Within groups, we expect that you are honest about your contribution to the group's work. This implies not taking credit for others' work and not covering for team members that have not contributed to the team.

The course also includes individual assignments and individual components of group assignments. Although your solutions for individual parts may be based on the content produced for the group component (e.g., written reflections), we expect you to complete individual components independently of your groupmates.

Regarding the internet, StackOverflow, and similar sources: In real-world development, engineers often adapt code from Q&A sites, open source repositories, or similar sources to new ends. This is acceptable in this course, with two caveats:

  • You may not copy a solution for our homework assignments specifically from another student or group, even if, for some reason, that code is available openly on GitHub or elsewhere (see below on the importance of keeping your homework code).
  • You must test all of your code, and those tests must pass. That is, you must understand any code you adapt from the internet, and you must demonstrate that understanding using unit tests.

Regarding solutions from other students in the course, we reuse the Collaboration Policy from 15-214, with minor modifications:

"You may not copy any part of a solution to a problem that was written by another student, or was developed together with another student. You may not look at another student's solution, even if you have completed your own, nor may you knowingly give your solution to another student or leave your solution where another student can see it. Here are some examples of behavior that are inappropriate:

  • Copying or retyping, or referring to, files or parts of files (such as source code, written text, or unit tests) from another person (whether in final or draft form, regardless of the permissions set on the associated files) while producing your own. This is true even if your version includes minor modifications such as style or variable name changes or minor logic modifications.
  • Getting help that you do not fully understand, and from someone whom you do not acknowledge on your solution.
  • Writing, using, or submitting a program that attempts to alter or erase grading information or otherwise compromise security of course resources
  • Lying to course staff.
  • Giving copies of work to others, or allowing someone else to copy or refer to your code or written assignment to produce their own, either in draft or final form. This includes making your work publicly available in a way that other students (current or future) can access your solutions, even if others' access is accidental or incidental to your goals. Beware the privacy settings on your open source accounts!
  • Coaching others step-by-step without them understanding your help.

If any of your work contains any statement that was not written by you, you must put it in quotes and cite the source. If you are paraphrasing an idea you read elsewhere, you must acknowledge the source. Using existing material without proper citation is plagiarism, a form of cheating. If there is any question about whether the material is permitted, you must get permission in advance. We will be using automated systems to detect software plagiarism.

It is not considered cheating to clarify vague points in the assignments, lectures, lecture notes; to give help or receive help in using the computer systems, compilers, debuggers, profilers, or other facilities; or to discuss ideas at a high level, without referring to or producing code.

Any violation of this policy is cheating. The minimum penalty for cheating (including plagiarism) will be a zero grade for the whole assignment. Cheating incidents will also be reported through University channels, with possible additional disciplinary action (see the above-linked University Policy on Academic Integrity).

If you have any question about how this policy applies in a particular situation, ask the instructors or TAs for clarification."

Note that the instructors respect honesty in these (and indeed most!) situations.

A Note on Self-Care

Please take care of yourself. Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress. All of us benefit from support during times of struggle. You are not alone. Besides the instructors, who are here to help you succeed, there are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.

If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.