forked from bcrastnopol/WebProgramming
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
330 lines (309 loc) · 13.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
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=1"/>
<link rel="stylesheet" href="stylesheets/style.css" />
<title>COMP 20: Web Programming</title>
</head>
<body>
<h1>COMP 20: Web Programming</h1>
<h2>Tufts University Department of Computer Science, Fall 2015</h2>
<h2>Instructor</h2>
<ul>
<li>Ming Chow, <a href="mailto:[email protected]">[email protected]</a></li>
<li>Office Hours: Wednesdays from 1 - 4 PM, or by appointment, "in my usual spot". Hours are good until the last day of classes, December 11th.</li>
<li>Please send all class questions (e.g., help on assignments and labs) <a href="https://piazza.com/tufts/fall2015/comp20/home" target="_blank">via Piazza</a>. DO NOT E-MAIL ME! Sign up at <a href="https://piazza.com/tufts/fall2015/comp20" target="_blank">https://piazza.com/tufts/fall2015/comp20</a>.</li>
<li>For emergencies or private matters, please e-mail or see me directly.</li>
</ul>
<h2>Teaching Assistants and Office Hours</h2>
<ul>
<li>Yotam Bentov</li>
<li>Tom Colgrove</li>
<li>Sophie Dasinger</li>
<li>Obaid Farooqui (via Tufts Academic Resource Center)</li>
<li>John Gallagher</li>
<li>Nate Justice (via Tufts Academic Resource Center)</li>
<li>Lila Ramani</li>
<li>Kate Wasynczuk</li>
<li>The official list of office hours is on Piazza. TAs will be showing when and where they are on office hours on <a href="http://www.halliganhelper.com" target="_blank">http://www.halliganhelper.com</a>.</li>
</ul>
<h2>Class Time and Location</h2>
<ul>
<li>Tuesdays and Thursdays, 1:30 - 2:45 PM in Pearson 104</li>
</ul>
<h2>Prerequisites</h2>
<ul>
<li>COMP 11: Introduction to Computer Science</li>
</ul>
<h2>Textbook</h2>
<ul>
<li>None</li>
</ul>
<h2>Software Downloads</h2>
<ul>
<li><a href="http://vmap-tufts.onthehub.com/WebStore/Welcome.aspx" target="_blank">VMware Fusion for Mac OS X or VMware Workstation for Windows or Linux (free one year license via Tufts CS)</a>
<ul>
<li>Ubuntu VM I created for this class - Download: <a href="http://www.cs.tufts.edu/comp/20/Ubuntu.zip">Ubuntu.zip</a> (MD5 checksum=<code>be936a69bf1eea64ff2bfa65404a7973</code>; username is <code>developer</code>, password is <code>Wh@t3ver!</code>). Instructions: unzip the .zip file and open using VMware. This virtual machine is loaded with Git, Node.js, MongoDB, Heroku, etc. This VM can work on 32 or 64-bit machines.</li>
</ul>
</li>
<li><a href="http://brew.sh/" target="_blank">Homebrew for Mac OS X</a></li>
</ul>
<h2>Assessment</h2>
<ul>
<li>Programming assignments and labs (45%)</li>
<li>Quizzes (30%; there will be three in the class)</li>
<li>Semester group project (15%)</li>
<li>Participation in classroom activities (10%)</li>
</ul>
<p>Class participation encompasses a variety of activities, all with the same purpose. To earn high grades for class participation, you must show that you are actively engaged in managing your own learning, developing new skills, and developing new ways of programming and problem-solving. You can be engaged in a variety of ways:</p>
<ul>
<li>Writing sane and sensible answers on quizzes</li>
<li>Asking appropriate questions in class</li>
<li>Answering questions when called on in class</li>
<li>Asking appropriate questions on Piazza</li>
<li>Answering questions well on Piazza</li>
<li>Organizing study groups</li>
<li>Interacting professionally with programming partners and course staff</li>
<li>Working out ideas with teaching assistants</li>
<li>Helping other COMP 20 students in Halligan</li>
</ul>
<p>Nobody has to do all of these things; you can earn top grades for class participation by doing just a few things well. In particular, nobody is required to speak in class, but everybody should be prepared to answer questions if called upon.</p>
<p>Professional interactions with other students and with course staff are the same as those which are expected in any workplace. It is also professional for you to recognize that a member of the course staff may be present but not actually available to talk about COMP 20.</p>
<h2 id="syllabus">Syllabus</h2>
<p class="note">Schedule is subject to change.</p>
<p>Topics:</p>
<ul>
<li>Server-Side Development, Web Applications and Frameworks</li>
<li>Web Applications (with Node.js + Express)</li>
<li>Databases and Persistent Data Storage (with MongoDB)</li>
<li>Node.js + Express + MongoDB</li>
<li>Web Security</li>
</ul>
<!--<p>Readings and References:</p>
<ul>
<li><a href="https://blog.chromium.org/2008/12/security-in-depth-local-web-pages.html" target="_blank">Security in Depth: Local Web Pages</a></li>
<li><a href="http://mongly.openmymind.net/tutorial/index" target="_blank">Interactive MongoDB tutorial</a></li>
<li><a href="http://www.veracode.com/security/xss" target="_blank">Cross-Site Scripting (XSS) Tutorial: Learn About XSS Vulnerabilities, Injections and How to Prevent Attacks (Veracode)</a></li>-
</ul>
-->
<table>
<tr>
<th>Date</th>
<th>Agenda</th>
<th>Deliverables</th>
</tr>
<tr>
<td>Tuesday, September 8th</td>
<td>
<ul>
<li><a href="notes/intro.html">Course Introduction</a></li>
<li><a href="notes/http.html">Basic Networking</a></li>
</ul>
</td>
<td>
<ul>
<li><a href="https://docs.google.com/forms/d/18LEtM2rNobkpGSj8c6JIV8-yMis2IpI2cDX7zczOtN4/viewform">Lab 1: Course Roster</a>. <span class="note">PLEASE COMPLETE ASAP! This lab is worth 1 point.</span></li>
<li><a href="https://piazza.com/tufts/fall2015/comp20" target="_blank">Please sign up for our Piazza group</a></li>
<li><a href="https://docs.google.com/forms/d/19giAIe-SWjbXl4BDTn70hi8tHqS2aUhcOJTLiqOzCSk/viewform">Sign up for the Fall 2015 Reverse Career Fair</a> (not mandatory)</li>
</ul>
</td>
</tr>
<tr>
<td>Thursday, September 10th</td>
<td>
<ul>
<li><a href="notes/http.html">Hypertext Transport Protocol (HTTP)</a></li>
<li>Read: <a href="https://adainitiative.org/2012/08/defcon-why-conference-harassment-matters/" target="_blank">DEF CON: Why Conference Harassment Matters</a></li>
<li>Read: <a href="http://mkcohen.com/how-the-web-works-in-one-easy-lesson" target="_blank">How The Web Works --In One Easy Lesson (mkcohen.com)</a></li>
<li>Read: <a href="https://news.ycombinator.com/item?id=8902105" target="_blank">What happens when you type Google.com into your browser and press enter? (Hacker News)</a>. This is a very technical read. The first part of the reading may be over your head but pay attention to the "HTTP protocol" section.</li>
<li>Read: <a href="https://adainitiative.org/2012/08/defcon-why-conference-harassment-matters/" target="_blank">DEF CON: Why Conference Harassment Matters</a></li>
<li>Read: <a href="https://www.schneier.com/blog/archives/2012/08/sexual_harassme.html" target="_blank">Sexual Harassment at DefCon (and Other Hacker Cons) by Bruce Schneier</a></li>
<li>Read: <a href="https://www.defcon.org/html/links/dc-code-of-conduct.html" target="_blank">DEF CON Conference Code of Conduct</a></li>
</ul>
</td>
<td><a href="https://docs.google.com/forms/d/1fhFvkW3YOaBCgO0rFAzlRvkPEMUM4aoVSwPVFghuHSo/viewform">Lab 2: HTTP and Developer Tools</a></td>
</tr>
<tr>
<td>Tuesday, September 15th</td> <!-- Jewish holiday, thanks Sara G-W -->
<td>
<ul>
<li><a href="notes/html.html">HyperText Markup Language (HTML)</a><!-- Karen Vagts at 2:35 PM--></li>
<li><a href="lecture_notes/html-cheat-sheet-v1.pdf">HTML Cheat Sheet PDF (from AddedBytes)</a></li>
</ul>
</td>
<td>
<ul>
<li><a href="assignments/a1.html">Assignment 1: Your Portfolio. Due on Tuesday, September 29th</a></li>
<li>Career Panel Hosted by Tufts CS from 7:30 - 9 PM in Cabot Auditorium. <span class="note">You will receive 2 points for attending this event. Attendance will be taken.</span></li>
</ul>
</td>
</tr>
<tr>
<td>Thursday, September 17th</td>
<td>
<ul>
<li><a href="notes/git.html">Revision Control with Git</a></li>
<li><a href="notes/github-git-cheat-sheet.pdf">GitHub's Git Cheat Sheet</a></li>
<li>Read: <a href="http://gitimmersion.com/" target="_blank">Git Immersion</a></li>
<li>Read: <a href="http://git-scm.com/book/en/Getting-Started-Git-Basics" target="_blank">Git Basics</a></li>
<li>Read: <a href="http://eagain.net/articles/git-for-computer-scientists/" target="_blank">Git for Computer Scientists</a></li>
</ul>
</td>
<td><a href="assignments/lab-git.html">Lab 3: Git Introduction</a></td>
</tr>
<tr>
<td>Tuesday, September 22nd</td>
<td>
<ul>
<li><a href="notes/css.html">Cascading Style Sheets (CSS)</a></li>
<li><a href="http://www.slideshare.net/ctraganos/css-an-introduction" target="_blank">Chris Traganos' (now Director of Developer Relations at Evernote) Presentation on CSS</a></li>
<li>Read: <a href="https://www.linkedin.com/pulse/how-i-hire-ming-chow" target="_blank">How I Hire</a> (a little about Chris in last paragraph)</li>
<li>Cheat Sheet: <a href="http://lesliefranke.com/files/reference/csscheatsheet.html" target="_blank">CSS Cheat Sheet from Leslie Franke</a></li>
</ul>
</td>
<td> </td>
</tr>
<tr>
<td>Thursday, September 24th</td>
<td><a href="notes/css3.html">Mobile and Responsive Design</a></td>
<td> </td>
</tr>
<tr>
<td>Tuesday, September 29th</td> <!-- Jewish holiday, thanks Sara G-W -->
<td><a href="notes/javascript.html">(Client-Side) JavaScript: Data Structures and Objects</a></td>
<td>
<ul>
<li><a href="assignments/lab-responsive.html">Lab 4: Lab: Responsive Design</a></li>
<li>Tufts Career Fair on Wednesday, September 30th from 11:30 AM - 2:30 PM at Gantcher</li>
<li>Tufts CS Reverse Career Fair on Wednesday, September 30th from 2:45 - 4 PM in Halligan 102</li>
</ul>
</td>
</tr>
<tr>
<td>Thursday, October 1st</td>
<td>
<ul>
<li><a href="notes/dom.html">Document Object Model (DOM)</a></li>
<li>Read: <a href="http://www.w3.org/TR/DOM-Level-2-Core/introduction.html" target="_blank">What is the Document Object Model? (W3C)</a></li>
<li>Read: <a href="https://developer.mozilla.org/en-US/docs/DOM/About_the_Document_Object_Model" target="_blank">About the Document Object Model (Mozilla)</a></li>
</ul>
</td>
<td> </td>
</tr>
<tr>
<td>Tuesday, October 6th</td> <!-- Jewish holiday, thanks Sara G-W -->
<td>JavaScript APIs: Canvas, Audio, Video</td>
<td> </td>
</tr>
<tr>
<td>Thursday, October 8th</td>
<td>HOLD</td>
<td> </td>
</tr>
<tr>
<td>Tuesday, October 13th</td>
<td>
<ul>
<li>JSON, First-Class Functions</li>
<li><a href="http://eloquentjavascript.net/05_higher_order.html" target="_blank">Higher-Order Functions in JavaScript</a></li>
<li><a href="http://www.joelonsoftware.com/items/2006/08/01.html" target="_blank">Can Your Programming Language Do This? (Joel on Software)</a></li>
</ul>
</td>
<td>Quiz 1</td>
</tr>
<tr>
<td>Thursday, October 15th</td>
<td>Asynchronous JavaScript and XML (AJAX)</td>
<td> </td>
</tr>
<tr>
<td>Tuesday, October 20th</td>
<td>Data Persistence with Cookies and Local Storage</td>
<td> </td>
</tr>
<tr>
<td>Thursday, October 22nd</td>
<td>JavaScript Libraries and jQuery</td>
<td>
<ul>
<li>Tufts Hackathon: Friday, October 23rd - Saturday, October 24th</li>
</ul>
</td>
</tr>
<tr>
<td>Tuesday, October 27th</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Thursday, October 29th</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Tuesday, November 3rd</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Thursday, November 5th</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Thursday, November 12th</td>
<td> </td>
<td>Quiz 2</td>
</tr>
<tr>
<td>Tuesday, November 17th</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Thursday, November 19th</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Tuesday, November 24th</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Tuesday, December 1st</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Thursday, December 3rd</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Tuesday, December 8th</td>
<td> </td>
<td>Quiz 3</td>
</tr>
<tr>
<td>Thursday, December 10th</td>
<td> </td>
<td> </td>
</tr>
</table>
<h2 id="policy">Course Policies</h2>
<h3>Assignment Late Policy</h3>
<p>Assignments (labs, homework) are due at 11:59 PM, generally on a Tuesday or Thursday. We will grant an automatic extension of ten minutes at no cost to you.</p>
<p>An assignment is expected to be submitted on time. However, we recognize that the exigencies of college life occasionally interfere with on-time submission. If you have difficulty getting the assignment in on time, you have two options:</p>
<ol>
<li>For ordinary difficulties, each student is automatically issued three (3) "extension tokens." By expending an extension token, you can get an automatic 24-hour extension on all deadlines associated with a single assignment. To use an extension token, you must e-mail me at <code>[email protected]</code>. Thus must be sent before the assignment is due. At most two extension tokens may be expended on any single assignment. When you are out of tokens, late assignments will no longer be accepted: it will be returned ungraded, and you will receive no credit for the work.</li>
<li>If a serious illness affects your ability to complete the assignment on time, your first step is to report the illness using the "Illness Notification Form" that is available in WebCenter for Students. We will make suitable arrangements. For extraordinary difficulties, such as bereavement, family emergencies, or other extraordinary unpleasant events, your first step should be to make contact with your associate dean for undergraduate education. You must take this step before the assignment is due. Ask your dean to drop me an email or give me a call, and we will make special arrangements that are suited to your circumstances.</li>
</ol>
<p>Please understand that extension tokens are meant to be used. That is, you will not receive any special bonus at the end of the course if you do not use any of your extension tokens.</p>
<h3>Labs</h3>
<p>A lab is due one week from the day it is assigned.</p>
<h3>Solutions to Assignments and Examinations</h3>
<p>Solutions to assignments and examinations will not be posted for this course.</p>
</body>
</html>