Fundamentals of Web Applications (Winter 2013): Difference between revisions
No edit summary |
|||
(62 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
==Administration== | |||
The course outline for this course is [http://www.scs.carleton.ca/courses/course_outline.php?Term=Winter&Year=2013&Number=COMP%202406 here]. | The course outline for this course is [http://www.scs.carleton.ca/courses/course_outline.php?Term=Winter&Year=2013&Number=COMP%202406 here]. | ||
Course discussions will be on cuLearn. (We tried out Piazza and then decided to stop using it.) | |||
You should get an account on this wiki so you can add to it. Email Prof. Somayaji to get one with your preferred username and email address to which a password should be sent. (Note this is not a requirement.) | |||
==Course Project== | |||
40% of your grade is for a course project, half of this in the form of milestones, half in the form of a [[WebFund 2013W Final Project|final code and documentation submission]]. Your final project is due on April 10th by midnight. | |||
==Resources== | |||
===JavaScript=== | |||
'''You should go out and learn the basics of JavaScript on your own.''' While we will discuss the language in class, much of that discussion will make more sense if you've exposed yourself to the language. You should also get basic exposure to standard web technologies. | |||
The easiest way to get started with JavaScript and get basic understanding of web technologies is to go through the interactive lessons on [http://codeacademy.com Code Academy]. I suggest you go through their JavaScript, Web Fundamentals, and jQuery tracks. They shouldn't take you very long to do given that you already know how to program. | |||
You should get access to ''JavaScript: The Good Parts'' by Douglas Crockford. Read it. It is available through [http://shop.oreilly.com/product/9780596517748.do O'Reilly], [http://my.safaribooksonline.com/9780596517748 Safari Books Online], and the regular online bookstores. There is even [https://www.inkling.com/store/book/javascript-good-parts-douglas-crockford-1st/ an interactive version] which includes an embedded JavaScript interpreter. You can get access to Safari Books Online through the Carleton Library (four concurrent users only) or partial access by becoming a member of [https://www.computer.org IEEE Computer Society]. | |||
Crockford also has a lot of online resources on JavaScript, including videos of talks he's given that cover much of the content in his book. Look at his [http://javascript.crockford.com/ JavaScript page] and this [http://yuiblog.com/crockford/ page of his videos]. | |||
Another good book is [http://eloquentjavascript.net/ Eloquent JavaScript: A Modern Introduction to Programming] by Marijn Haverbeke. A version of this book is available online for free. The for-sale version is apparently updated and edited. | |||
And of course the standard reference for JavaScript is [http://shop.oreilly.com/product/9780596805531.do JavaScript: The Definitive Guide] by David Flanagan. It is a big book, but it is comprehensive. | |||
===Node=== | |||
You will be building your application in node.js this term. A good, relatively comprehensive book is [http://shop.oreilly.com/product/0636920024606.do Learning Node] by Shelley Powers. This book is recommended but not required. A quick way to get started with node.js is [http://www.nodebeginner.org/ The Node Beginner Book] by Manuel Kiessling. | |||
===Git=== | |||
There is now a [[Github]] organization for the course [https://github.com/CarletonU-COMP2406-W2013 here]. The TAs will add your team to this organization. Please check in your code and documentation regularly to github so the TAs may monitor your progress. | |||
When your team is added, your TA will do the following: | |||
* Setup a repository named after your team. This initial repository will have a README and will ignore temporary files generated by node.js. You will have full administrative access to this repository. | |||
* Your team will include your TA as a member (along with you and your teammate). | |||
==Lectures== | |||
<table style="width: 100%;" border="1" cellpadding="4" cellspacing="0"> | |||
<tr valign="top"> | |||
<th> | |||
<p align="left">Date</p> | |||
</th> | |||
<th> | |||
<p align="left">Topic</p> | |||
</th> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 8 | |||
</p> | |||
</td> | |||
<td> | |||
<p>Introduction | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 10 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W: Symbols|Symbols]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 15 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 3|Lecture 3]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 17 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 4|Lecture 4]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 22 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 5|Lecture 5]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 24 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 6|Lecture 6]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 29 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 7|Lecture 7]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 31 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 8|Lecture 8]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 5 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 9|Lecture 9]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 7 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 10|Lecture 10]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 12 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Midterm Review|Midterm Review]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 14 | |||
</p> | |||
</td> | |||
<td> | |||
<p>Midterm (in class) | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 26 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 11|Lecture 11]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 28 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 12|Lecture 12]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Mar. 5 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 13|Lecture 13]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Mar. 7 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 14|Lecture 14]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Mar. 12 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 15+16|Lecture 15: Networking 1 (Barbeau)]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Mar. 14 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 15+16|Lecture 16: Networking 2 (Barbeau)]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Mar. 19 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 17|Lecture 17: Design Strategies]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Mar. 21 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 18|Lecture 18: Regular Expressions]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Mar. 26 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 19|Lecture 19: Web Server Security]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Mar. 28 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 20|Lecture 20: Web Client Security]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Apr. 2 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 21|Lecture 21: Other Web Frameworks]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Apr. 4 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 22|Lecture 22: The Future]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Apr. 9 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W Lecture 23|Lecture 23: Final Exam Review]] | |||
</p> | |||
</td> | |||
</tr> | |||
</table> | |||
==Tutorials/Weekly Tasks== | |||
Each week you will get a progress grade from 0-4, given to you by a TA. If you are being diligent, you should be able to get 4's every week. The easiest way to get your grade is to come to tutorial and meet with your TA; alternately, you can meet a TA in their office hours or, at their discretion, discuss things with them online. | |||
Initially you can talk to any TA to get your progress grade. Once groups have been formed, however, you will have an assigned TA who will be tracking your progress throughout the semester. | |||
Below is a schedule with the tasks you need to accomplish each week for everyone. Note you need to accomplish the task before your next tutorial. So, if you attend the Monday tutorials, you need to show progress before the following Monday. | |||
After February 1st, all milestones are between you and your TA and will follow those outline in your proposal. Milestone deliverables and precise due dates may be revised at the discretion of your TA. | |||
<table style="width: 100%;" border="1" cellpadding="4" cellspacing="0"> | |||
<tr valign="top"> | |||
<th> | |||
<p align="left">Date</p> | |||
</th> | |||
<th> | |||
<p align="left">Tutorials/Tasks</p> | |||
</th> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 11,14 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W: Tasks 1|Setup Accounts, Run node.js]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 18,21 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W: Task 2|Project Partners, Blog Example]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Jan. 25, 28 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W: Web Develper Tools|Web Developer Tools (optional)]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 1, 1 PM | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W: Proposal|Project Proposal Due]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 1, 4 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund 2013W: jQuery UI|jQuery UI]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 8, 11 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund_2013W:_Express_and_AJAX|Express and AJAX]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Feb. 15, 25 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund_2013W:_Sessions|Sessions]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td> | |||
<p>March 1, 4 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund_2013W:_MongoDB|MongoDB]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>March 8, 11 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[WebFund_2013W:_Authenticated_Sessions|Authenticated Sessions]] | |||
</p> | |||
</td> | |||
</tr> | |||
</table> | |||
==Humor/Quotes== | |||
[http://xkcd.com/327/ Bobby Tables], a funny example of SQL injection. | |||
"Scalability is always the answer in this class." -Alexis | |||
"First axiom of this class is web apps suck." -[[User:soma |Professor Somayaji]] |
Latest revision as of 21:05, 12 April 2013
Administration
The course outline for this course is here.
Course discussions will be on cuLearn. (We tried out Piazza and then decided to stop using it.)
You should get an account on this wiki so you can add to it. Email Prof. Somayaji to get one with your preferred username and email address to which a password should be sent. (Note this is not a requirement.)
Course Project
40% of your grade is for a course project, half of this in the form of milestones, half in the form of a final code and documentation submission. Your final project is due on April 10th by midnight.
Resources
JavaScript
You should go out and learn the basics of JavaScript on your own. While we will discuss the language in class, much of that discussion will make more sense if you've exposed yourself to the language. You should also get basic exposure to standard web technologies.
The easiest way to get started with JavaScript and get basic understanding of web technologies is to go through the interactive lessons on Code Academy. I suggest you go through their JavaScript, Web Fundamentals, and jQuery tracks. They shouldn't take you very long to do given that you already know how to program.
You should get access to JavaScript: The Good Parts by Douglas Crockford. Read it. It is available through O'Reilly, Safari Books Online, and the regular online bookstores. There is even an interactive version which includes an embedded JavaScript interpreter. You can get access to Safari Books Online through the Carleton Library (four concurrent users only) or partial access by becoming a member of IEEE Computer Society.
Crockford also has a lot of online resources on JavaScript, including videos of talks he's given that cover much of the content in his book. Look at his JavaScript page and this page of his videos.
Another good book is Eloquent JavaScript: A Modern Introduction to Programming by Marijn Haverbeke. A version of this book is available online for free. The for-sale version is apparently updated and edited.
And of course the standard reference for JavaScript is JavaScript: The Definitive Guide by David Flanagan. It is a big book, but it is comprehensive.
Node
You will be building your application in node.js this term. A good, relatively comprehensive book is Learning Node by Shelley Powers. This book is recommended but not required. A quick way to get started with node.js is The Node Beginner Book by Manuel Kiessling.
Git
There is now a Github organization for the course here. The TAs will add your team to this organization. Please check in your code and documentation regularly to github so the TAs may monitor your progress.
When your team is added, your TA will do the following:
- Setup a repository named after your team. This initial repository will have a README and will ignore temporary files generated by node.js. You will have full administrative access to this repository.
- Your team will include your TA as a member (along with you and your teammate).
Lectures
Date |
Topic |
---|---|
Jan. 8 |
Introduction |
Jan. 10 |
|
Jan. 15 |
|
Jan. 17 |
|
Jan. 22 |
|
Jan. 24 |
|
Jan. 29 |
|
Jan. 31 |
|
Feb. 5 |
|
Feb. 7 |
|
Feb. 12 |
|
Feb. 14 |
Midterm (in class) |
Feb. 26 |
|
Feb. 28 |
|
Mar. 5 |
|
Mar. 7 |
|
Mar. 12 |
|
Mar. 14 |
|
Mar. 19 |
|
Mar. 21 |
|
Mar. 26 |
|
Mar. 28 |
|
Apr. 2 |
|
Apr. 4 |
|
Apr. 9 |
Tutorials/Weekly Tasks
Each week you will get a progress grade from 0-4, given to you by a TA. If you are being diligent, you should be able to get 4's every week. The easiest way to get your grade is to come to tutorial and meet with your TA; alternately, you can meet a TA in their office hours or, at their discretion, discuss things with them online.
Initially you can talk to any TA to get your progress grade. Once groups have been formed, however, you will have an assigned TA who will be tracking your progress throughout the semester.
Below is a schedule with the tasks you need to accomplish each week for everyone. Note you need to accomplish the task before your next tutorial. So, if you attend the Monday tutorials, you need to show progress before the following Monday.
After February 1st, all milestones are between you and your TA and will follow those outline in your proposal. Milestone deliverables and precise due dates may be revised at the discretion of your TA.
Date |
Tutorials/Tasks |
---|---|
Jan. 11,14 |
|
Jan. 18,21 |
|
Jan. 25, 28 |
|
Feb. 1, 1 PM |
|
Feb. 1, 4 |
|
Feb. 8, 11 |
|
Feb. 15, 25 |
|
March 1, 4 |
|
March 8, 11 |
Humor/Quotes
Bobby Tables, a funny example of SQL injection.
"Scalability is always the answer in this class." -Alexis
"First axiom of this class is web apps suck." -Professor Somayaji