-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathindex.html
621 lines (529 loc) · 33.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
<!DOCTYPE html>
<html>
<head>
<!-- Meta -->
<title>CMU-17-356</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- UIKit -->
<!-- UIkit CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.0-rc.26/css/uikit.min.css" />
<!-- UIkit JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.0-rc.26/js/uikit.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.0-rc.26/js/uikit-icons.min.js"></script>
<!-- Style Imports -->
<link rel="stylesheet" href="css/main.css?v=2" />
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,700" rel="stylesheet">
</head>
<body>
<div class="content">
<!-- Header -->
<div class="uk-background-muted uk-margin-bottom">
<div class="uk-container">
<nav class="uk-navbar-container" uk-navbar>
<div class="uk-navbar-left">
<div>
<ul class="uk-navbar-nav" uk-switcher="connect: .content-switcher">
<a href="" class="uk-navbar-item uk-logo">17-356</a>
<li><a href="#">Syllabus</a></li>
<li><a href="#">Teamwork Policy</a></li>
<li><a href="#">Schedule</a></li>
<li><a href="#">Staff</a></li>
</ul>
</div>
</div>
<div class="uk-navbar-right">
<div>
<ul class="uk-navbar-nav">
<li><a href="https://cmu-17-356.github.io/dronuts">Dronut Site</a></li>
<li><a href="https://canvas.cmu.edu/courses/22480">Canvas</a></li>
</ul>
</div>
</div>
</nav>
</div>
</div>
<!-- Content -->
<ul class="uk-switcher content-switcher">
<!-- Home -->
<li>
<!-- Logo -->
<div id="logo_block" class="uk-container uk-container-small uk-flex uk-flex-center">
<img src="img/logo.png" />
</div>
<!-- Course Description -->
<div class="uk-container uk-container-small" style="margin-top:50px;">
<h2> Course Description </h2>
Startup engineering is critical to innovation. The skills required
to effectively prototype, launch, and scale products are vital to
engineers everywhere, from fledgling companies founded in dorm rooms
to local mid-size companies to internal startups from multi-national
tech giants. However, developing software in a startup environment
poses unique engineering challenges. These challenges include making
and justifying foundational architectural and technical decisions
despite extreme uncertainty; rapidly prototyping and evaluating new
ideas and features, while building minimum viable products;
prioritizing engineering effort in severely constrained
environments; and communicating effectively both within a small
engineering team and with internal and external non-technical
stakeholders. This course teaches the skills necessary to engineer
successfully in a startup environment, through lectures, group
projects, case study discussions, and guest speakers drawn from
experienced, practicing startup engineers.
<h2>Logistics and Communication</h2>
<p><b>Lectures:</b> Lectures: 10:10 a.m. - 11:30 a.m. Starting semester on Zoom, hopefully to resume in-person if possible.<br>
<b>Recitations:</b> <br>
Tue @ 12:20 p.m. - 01:10 p.m. (Session A) online via Zoom to start semester</br>
Tue @ 02:30 p.m. - 03:20 p.m. (Session B) online via Zoom to start semester
</p>
<p><b>Waitlist:</b> 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.</p>
<p><b>Prerequisites:</b> 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.</p>
<p><b>Textbook/Readings:</b> 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.</p>
<p><b>Communication:</b> 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 <a
href="https://www.github.com">GitHub</a> to coordinate group work. We will
provide private GitHub repositories for individuals and groups.</p>
<p>Please use Slack for
discussion and questions, including clarifying homework assignments.</p>
<p>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.</p>
<p>If you have a question or concern that is not suitable for Slack, contact the
instructors via: <a href="mailto:[email protected]">[email protected]</a>. 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.</p>
<p>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.</p>
<p>For sensitive matters, of course, feel free to contact us individually.</p>
</div>
</li>
<!-- Syllabus -->
<li>
<div class="uk-container uk-container-small uk-margin-top">
<h1> Syllabus </h1>
<!-- <h3> Learning Goals </h3>-->
<h3> Course Overview </h3>
<p>In this course, we will teach you the engineering skills necessary to succeed in
the highly-uncertain environment associated with a technology startup. Our
focus in this class is technical; that is, we will not be spending very much
time on the business side of the startup equation (though given how much
business drives engineering goals, of course we will not completely ignore it!).
If you are instead interested in the entrepreneurship side of the equation, we
encourage you to consider 15-390, Entrepreneurship for Computer Scientists.
<p>This class will consist of:
<ol>
<li> Lectures. Lectures will cover technical content, and be delivered by the
professors or other instructors. </li>
<li>Guest lectures and panels. We will hear from from practicing software
engineers, technical and non-technical startup cofounders, and other
individuals with practical expertise. </li>
<li>Recitation. TAs will lead recitation, which consists of activities designed
to help you apply your knowledge practically and prepare for the
homework. </li>
<li>Homework assignments. For the first half of the course, you will practice
the skills we learn in class by working on in assigned teams on a made-up
startup, "Dronuts." Most of this work will be structured as a series of
agile-style sprints, to simulate as much as possible the real startup
experience.</li>
<li>A project. For the second half of the course, you will use your new skills
to design and implement an original startup idea. Don’t worry if you don't
have one; we'll help you to develop a new idea, or connect founders who have
startup ideas to co-founders who are excited to help with them. </li>
</ol></p>
<p>There will be one midterm exam. There will be no final exam; instead, you will
present your final project.</p>
<h3> Grading </h3>
Evaluation will be based on the following approximate distribution: 50%
assignments, 20% midterm, 20% final project, 10% participation.
<p><i>Note:</i> Attendance is required for guest lectures. Absences during guest
lectures will result in a deduction in your overall course grade for
participation.</p>
<h3>Course Policies</h3>
<p><b>Teamwork:</b></p> 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.</p>
<p>Please fill out the <a
href="https://docs.google.com/forms/d/1PIu_sd9cA9UX2vSZ0VwGurQshoR0ZzY36kxD-HsmMAY/edit">Teamwork
Survey</a> so we can begin forming groups.</p>
<p><b>Late work:</b> 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 <i>in advance</i>. Always
communicate with your team about such issues. </p>
<p><b>Devices in lecture and recitation:</b> 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. <i>However,</i>, 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). </p>
<p>Note that recitation activities will often involve devices, so please do bring
your laptop!</p>
<p><b>Time management:</b> 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. </p>
<p>Note that most homework is done in groups, so please account for the overhead
and decreased time flexibility that entails. </p>
<p>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! </p>
<p><b>Writing:</b> 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 <a href="https://www.cmu.edu/gcc/workshops/index.html">Global
Communications Center (GCC)</a> offers one-on-one writing help for students, along
with workshops. The instructors are also happy to provide additional guidance if
requested. </p>
<p><b>Academic honesty and collaboration:</b>
The <a href="https://www.cmu.edu/policies/student-and-student-life/academic-integrity.html">University
Policy on Academic Integrity</a> 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. </p>
<p>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. <p>
<p>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:
<ol>
<li>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). </li>
<li>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. </li>
</ol>
</p>
<p>Regarding solutions from other students in the course, we reuse the
<a href="https://www.cs.cmu.edu/~charlie/courses/15-214/2017-fall/syllabus.html">Collaboration
Policy from 15-214</a>, with minor modifications: </p>
<i>
<p>"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:</p>
<ul>
<li>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.</li>
<li>Getting help that you do not fully understand, and from someone whom you do
not acknowledge on your solution.</li>
<li>Writing, using, or submitting a program that attempts to alter or erase
grading information or otherwise compromise security of course resources.</li>
<li>Lying to course staff.</li>
<li>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!</li>
<li>Coaching others step-by-step without them understanding your help.</li>
</ul>
<p>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.</p>
<p>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.</p>
<p>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).</p>
<p>If you have any question about how this policy applies in a particular
situation, ask the instructors or TAs for clarification."</p> </i>
<p>Note that the instructors respect honesty in these (and indeed most!)
situations.</>
<h3>A note on self care </h3>
<p>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.</p>
<p>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 at
<a href="https://www.cmu.edu/counseling/">https://www.cmu.edu/counseling/</a>. Consider
reaching out to a friend, faculty or
family member you trust for help getting connected to the support that can
help.</p>
</div>
</li>
<!-- Team Policy -->
<li>
<div class="uk-container uk-container-small uk-margin-top">
<h1>Teamwork Policy</h1>
<p>Working effectively in a group is a critical skill in modern software
engineering, both in the startup context and generally. Group work can be
hard, and not all teams succeed, and in fact a major contributing factor to
startup failure is team breakdown. The educational context adds its own
complexities: team members sometimes cannot prepare for or attend group
sessions because of other responsibilities, and conflicts can result from
personalities, differing skill levels, work ethics, working styles. </p>
<p>We encourage the following practices to ensure successful group work:
<ul>
<li>Agree on a protocol for meeting and communication. Some, but not all, of
these decisions will be technical (Slack? Trello?) that arise naturally over
startup development. </li>
<li>In the startup context, engineers must be flexible and capable of filling
many technical roles. In an educational context, however, group work is most
successful when groups designate clear roles, such as coordinator, scribe,
monitor, and checker for each assignment. Agree on roles at the beginning of
each assignment. Rotate these roles for each assignment to ensure
fairness. </li>
<li>Agree on meeting times and what each member should have done before the
meeting (readings, development, writing, taking the first cut at some or all
of the assigned work, etc.). The <b>scribe</b> documents the agreed tasks and
deadlines and communicates them to everybody. Not objecting to the
communicated protocol constitutes acceptance. Make agreements visible to every
team member, with transparent history of the log.</li>
<li>The <b>coordinator</b> checks with other team members before the meeting to
remind them of when and where they will meet and what they are supposed to
do. Team members notify the coordinator in advance if they cannot attend a
meeting or are in danger of not making a deadline.</li>
<li>All individuals perform the required individual preparation before the
meeting</li>
<li>During meetings/work times, the <b>coordinator</b> sets the agenda, and
keeps everyone on task; the <b>monitor</b> ensures everyone understands both
the solution and the strategy used to get it, and watches the time to ensure
meetings stays within the agreed timeslot; and the <b>checker</b> double-checks the
result before it is handed in, and submits it (or clearly delegates its
submission, if the checker is unable to do so on time).</li>
<li>At the end of each meeting, agree on the next meeting time and responsibilities. </li>
<li>Review returned assignments together. Make sure everyone understands why
points were lost and how to correct errors.</li>
</ul>
</p>
<p><b>Preventing and dealing with problems.</b> We encourage you to communicate
openly with your teammates, which is often enough to help resolve many types
of team challenges. Clearly documenting agreed-upon tasks and deadlines (see
scribe role above) and tracking invested time helps in identifying
issues. Renegotiate agreements when estimated time does not align with
actually required time and imbalances arise. Document where agreements were
not honored (what and when, and possibly why). Identify a fallback strategy,
ideally in agreement with the team member who failed the agreement. In severe
cases, identify how other team members can take over those tasks. </p>
<p>If a team member does not contribute to an assignment solution, their name
should not be included on the completed work.</p>
<p>If the problem persists and cannot be solved within the team, the team should
meet with the instructors so that the problem can be resolved, if possible. If
problems continue, the cooperating team members may notify the uncooperative
member in writing that he/she is in danger of being fired, sending a copy of
the memo to the instructor. If there is no subsequent improvement, they should
notify the individual in writing (copy to the instructor) that he/she is no
longer with the team. The fired student should meet with the instructors to
discuss options, such as finding another team willing to add them as a member,
completing the work alone, or getting zeroes for the remaining
assignments.</p>
<p>Consult with your instructors if a conflict arises that can't be worked
through by the team. </p>
</div>
</li>
<!-- Schedule -->
<!-- <li>
<div class="uk-container">
<div id="myskedj" class="schedule table-skedj"></div>
<script type="text/javascript" src="js/schedule.js?v=1"></script>
</div>
</li> -->
<li>
<div class="uk-container">
<h2> Content Schedule </h2>
Note that the schedule of topics is subject to change; due dates for homework are fixed.
<table class="uk-table uk-table-divider">
<thead>
<tr>
<th>Date</th>
<th>Topic</th>
<th>Recitation</th>
<th>Assignment Released</th>
<th>Assignment Due</th>
</tr>
</thead>
<tbody>
<tr>
<td>Jan 18</td
><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture1-Intro-UserStories.pdf">Lecture 1: Intro, User stories</a></td>
<td><a href="https://docs.google.com/presentation/d/1-CKONviSgoL0NxW-PqbDmgyf_6An9vxa/edit?usp=sharing&ouid=112271721157011018905&rtpof=true&sd=true">User stories</a></td>
<td><a href="https://docs.google.com/document/d/1J5WKfH5wdl7sD53oIwwn7L8TplNE5OmQ0zprmtXRkzs/edit?usp=sharing">HW1: User Stories</a></td>
<td> </td>
</tr>
<tr><td>Jan 20</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture2-IntroToProcess.pdf"> Lecture 2: Process and Estimation</a></td><td> </td><td> </td><td> </td></tr>
<tr>
<td>Jan 25</td>
<td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture3-QualityAssurance.pdf">Lecture 3: Quality Assurance (CI, Tools, TDD) </a> </td>
<td><a href="https://docs.google.com/presentation/d/1caKVuAfVoRbXrpPRHXfGtix7yuzywfTo/edit?usp=sharing&ouid=100299066821085465993&rtpof=true&sd=true">Node Development Basics</a></td>
<td><a href="https://docs.google.com/document/d/1b-XbHa7XPNpn_hR5SbkYWtR_pKUTew8hbxay6bdTwN0/edit?usp=sharing">HW2: Sprint 0</a></td>
<td>HW1: User Stories</td>
</tr>
<tr><td>Jan 27</td><td> <a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture4-Process-Prior.pdf">Lecture 4: Priortization</a></td><td> </td><td> </td><td> </td></tr>
<tr><td>Feb 1</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture5-CodeReview.pdf">Lecture 5: Code Review</a></td><td><a href="https://docs.google.com/presentation/d/1qpP8kayASpyodVBVMvH3im0Pv5Na5W22jMbtB01glig/edit?usp=sharing">React</a></td><td><a href="https://docs.google.com/document/d/1ypj2IqRaNpr45QE1ZHU39yv6Uz5nHgCufbI5tE-7_Pw/edit?usp=sharing">HW3: Sprint 1</a></td><td>HW2: Sprint 0</td></tr>
<tr><td>Feb 3</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture6-Prototyping.pdf">Lecture 6:Prototyping</a></td><td> </td><td> </td><td> </td></tr>
<tr><td>Feb 8</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture7-Testability.pdf">Lecture 7: Testability</a></td><td>Testing and Git Flow</td><td> </td><td></td></tr>
<tr><td>Feb 10</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture8-MVP-Viability.pdf">Lecture 8: MVP</a></td><td> </td><td> </td><td> </td></tr>
<tr><td>Feb 15</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture9-MVP-Viability_continued.pdf">Lecture 9: MVP Continued</a></td><td>Docker</td><td><a href="https://docs.google.com/document/d/1TWvRd7HU2TFGtggseOoVeX9JyUi41orRsXtXDjilogM/edit?usp=sharing">HW4: Sprint 2</a></td><td>HW3: Sprint 1</td></tr>
<tr><td>Feb 17</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture10-Deployment.pdf">Lecture 10: Deployment</a></td><td> </td><td> </td><td> </td></tr>
<tr><td>Feb 22</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture10-Deployment.pdf">Lecture 11: Deployment Continued (Same Slides)</a></td><td>"React and the Outside </td></tr>
<tr><td>World"</td><td> </td><td> </td></tr>
<tr><td>Feb 24</td><td>Midterm (last class before drop deadline)</td><td> </td><td> </td><td> </td></tr>
<tr><td>Mar 1</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/raw/master/resources/slides/2022/Lecture11-Feedback.pdf">Lecture 12: Feedback</a></td><td>Open Recitation</td><td> </td><td> </td></tr>
<tr><td>Mar 3</td><td>Lecture 14: Testability</td><td> </td><td> </td><td> </td></tr>
<tr><td>Mar 8</td><td>NO CLASS - Spring Break</td><td>Pitch Decks</td><td> </td><td> </td></tr>
<tr><td>Mar 10</td><td>NO CLASS - Spring Break</td><td> </td><td> </td><td> </td></tr>
<tr><td>Mar 15</td><td>Project Pitch Decks</td><td> </td><td> </td><td><a href="https://docs.google.com/document/d/1TvRa7mhVqBCv8K4W1uV46-2_i4Y6ZK1fI2K1gfyi7EQ/edit?usp=sharing">HW6: Pitch Decks</a></td></tr>
<tr><td>Mar 17</td><td>Project Pitch Decks</td><td> </td><td> </td><td><a href="https://docs.google.com/document/d/1TvRa7mhVqBCv8K4W1uV46-2_i4Y6ZK1fI2K1gfyi7EQ/edit?usp=sharing">HW6: Pitch Decks</a></td></tr>
<tr><td>Mar 22</td><td>TBD</td><td>Databases</td><td> </td><td><a href="https://docs.google.com/document/d/1h3oAGuGrThsI7nq3BrHjPHqqeLMRdi9ZFWl3R6gPKBE/edit?usp=sharing">HW5: MVP (Sprint 2)</a></td></tr>
<tr><td>Mar 24</td><td>Lecture: Pivoting 1</td><td> </td><td> </td><td> </td></tr>
<tr><td>Mar 29</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/blob/master/resources/slides/2022/Lecture14-Pivot-part2.key">Lecture: Pivoting 2</a></td><td>Open Recitation for Projects</td><td> </td><td> </td></tr>
<tr><td>Mar 31</td><td>Guest Lecture: TBD</td><td> </td><td> </td><td> </td></tr>
<tr><td>Apr 5</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/blob/master/resources/slides/2022/Lecture1x-Scaling.key">Lecture: Scaling</a></td><td>Responsive Sites</td><td> </td><td> </td></tr>
<tr><td>Apr 7</td><td>No class - Carnival </td><td> </td><td> </td><td> </td></tr>
<tr><td>Apr 12</td><td>Lecture: Scaling Data</td><td>React Native</td><td> </td><td> </td></tr>
<tr><td>Apr 14</td><td>Startup Economics 1</td><td> </td><td> </td><td> </td></tr>
<tr><td>Apr 19</td><td>Startup Economics 2</td><td>Open Recitation for Projects</td><td> </td><td> </td></tr>
<tr><td>Apr 21</td><td>Guest Lecture: TBD</td><td> </td><td> </td><td> </td></tr>
<tr><td>Apr 26</td><td>Guest Lecture: TBD</td><td>Projects Progress Report</td><td> </td><td> </td></tr>
<tr><td>Apr 28</td><td> TBD</td><td> </td><td> </td><td> </td></tr>
<tr><td>NO CLASS</td><td><a href="https://github.com/CMU-17-356/cmu-17-356.github.io/blob/master/resources/slides/2022/Lecture21-Ethics.pptx">Ethics</a></td><td>Projects Progress Report</td><td> </td><td> </td></tr>
<tr><td>NO CLASS</td><td>Ethical Companies</td><td> </td><td> </td><td></td></tr>
</tbody></table>
</tbody>
</table>
</div>
</li>
<!-- Staff -->
<li>
<div class="uk-container uk-container-small uk-margin-top">
<h2> Instructors </h2>
<div class="uk-child-width-expand@s uk-grid-small" uk-grid>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<img class="uk-border-circle uk-margin-bottom" width="180" height="180" src="img/hilton.jpg">
<h3 class="uk-margin-remove-top">Michael Hilton</h3>
<div>
E-Mail: <a href="mailto:[email protected]">mhilton</a>@cmu.edu
</div>
<div>
Office Hours: On demand, available 9am-9pm
<!-- Mondays -->
</div>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<img class="uk-border-circle uk-margin-bottom" width="180" height="180" src="img/hyrum.jpg">
<h3 class="uk-margin-remove-top">Hyrum Wright</h3>
<div>
E-Mail: <a href="mailto:[email protected]">hwright</a>@andrew.cmu.edu
</div>
<div>
Office Hours: TBA
<!-- Fridays <b>1:30 PM - 2:30 PM</b><br> Wean Hall 4128 -->
</div>
</div>
</div>
</div>
<h2> Teaching Assistants </h2>
<div class="uk-child-width-expand@s uk-grid-small" uk-grid>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<img class="uk-border-circle uk-margin-bottom" width="180" height="180" src="img/sean.png">
<h3 class="uk-margin-remove-top">Sean Prendi</h3>
<div>
E-Mail: <a href="mailto:[email protected]">sprendi</a>@andrew.cmu.edu
</div>
<div>
OH in TCS Lobby: <br>
W 2-3pm <br>
F 11:30am-12:30pm<br>
OH on Zoom: Sunday 1pm-2pm
<!-- Venue: GHC 3rd Floor Common Area -->
</div>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<img class="uk-border-circle uk-margin-bottom" width="180" height="180" src="img/shane.jpg">
<h3 class="uk-margin-remove-top">Shane Aung</h3>
<div>
E-Mail: <a href="mailto:[email protected]">saung</a>@andrew.cmu.edu
</div>
<div>
OH in TCS Lobby: <br>
M 3-4pm <br>
F 11:30am-12:30pm<br>
OH on Zoom: Th 4pm-5pm
<!-- Venue: GHC 3rd Floor Common Area -->
</div>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<img class="uk-border-circle uk-margin-bottom" width="180" height="180" src="img/JJ.jpg">
<h3 class="uk-margin-remove-top">JJ Cheng</h3>
<div>
E-Mail: <a href="mailto:[email protected]">jcheng3</a>@andrew.cmu.edu
</div>
<div>
OH in TCS Lobby: <br>
M 3-4pm <br>
W 2-3pm<br>
OH on Zoom: F 9am-10am
<!-- Venue: GHC 5th Floor Common Area -->
</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
<!-- Footer -->
<footer class="uk-section uk-section-muted uk-text-center uk-margin-top">
<div class="uk-container">
Copyright © 2019 Carnegie Mellon University. All Rights Reserved.
</div>
</footer>
</body>
</html>