Syllabus version 1.02
This document is available as a PDF.
Instructor
David J. Malan
http://www.cs.harvard.edu/~malan/
+1-617-523-0925
Description
Today's websites are increasingly dynamic. Pages are no longer static HTML files but instead generated by scripts and database calls. User interfaces are more seamless, with technologies like Ajax replacing traditional page reloads. This course teaches students how to build dynamic websites with Ajax and with Linux, Apache, MySQL, and PHP (LAMP), one of today's most popular frameworks. Students learn how to set up domain names with DNS, how to structure pages with XHTML and CSS, how to program in JavaScript and PHP, how to configure Apache and MySQL, how to design and query databases with SQL, how to use Ajax with both XML and JSON, and how to build mashups. The course explores issues of security, scalability, and cross-browser support and also discusses enterprise-level deployments of websites, including third-party hosting, virtualization, colocation in data centers, firewalling, and load-balancing.
Prerequisites
Prior programming experience (in any language) and familiarity with HTML are assumed.
Expectations
You are expected to attend or watch all lectures, to implement four projects, and to design and implement a final project.
Grades
Your final grade will be based on your performance on the course's projects, each of which will bear equal weight. Projects will be evaluated along the axes of correctness, design, and style. Remarkable effort and improvement will not go unnoticed.
Website
The address of this course's website is:
Visit the course's website to access the course's bulletin board, enter the virtual classroom, watch videos of lectures and sections, download handouts and software, and follow links to other resources.
Staff
To contact the entire staff, email:
However, you are encouraged to post most questions to the bulletin board on the course's website instead so that others might benefit as well.
Lectures
Lectures will take place in Harvard Hall 104 on Mondays from 5:30pm ET until 7:30pm ET.
A schedule of lectures, subject to change, appears below.
Sections
Sections offer opportunities to review recent lectures' material in a more intimate environment with only teaching fellows and a handful of classmates present. Sections also provide guidance on projects.
A schedule of sections appears on the course's website.
Projects
A schedule of projects, subject to change, appears below.
Extensions on these projects will not be granted, except in cases of emergency. Technical difficulties will not constitute emergencies. Late submissions will be penalized 1% per minute late up to 100%. Lateness will be determined by submissions' timestamps.
The climax of this course is the final project. The final project will be your opportunity to design and implement a dynamic website of your very own. So long as your final project draws upon this course's lessons, the nature of your website will be entirely up to you, albeit subject to the staff's approval.
This semester will conclude with the third annual “Computer Science Fair” on Monday, 21 December 2009, from 6:30 pm ET until 8:30 pm ET, in Maxwell-Dworkin at 33 Oxford St., room 119. A course-wide exhibition of final projects held jointly with CSCI E-7: Exposing Digital Photography, the Fair will be an opportunity to mingle with classmates, see each other's work, and eat cake. Distant students are encouraged to travel to campus for this event.
Inasmuch as software development is rarely a one-person effort, you will be allowed an opportunity to collaborate with one or two fellow students for this final project. Needless to say, it is expected that every student in any such group will contribute equally to the design and implementation of that group's project. Moreover, it is expected that the scope of a two- or three-person group's project will be, respectively, twice or thrice that of a typical one-person project. A one-person project, mind you, should entail time and effort equivalent to or greater than that required by one of this course's assigned projects. Collaboration is not allowed on the four assigned projects.
Exams
This course has neither a midterm nor a final exam.
Books
No books are required for this course. However, we recommend either of the sets below. All of these books is available for purchase at sites like Amazon.com. Each has also been placed on reserve at Grossman Library. Realize that links to free, if not superior, alternatives to these books can be found on the course's website.
Software
It is not necessary to purchase any software for this course. All software required by the course's projects will be available for download via the course's website for Linux, Mac OS, and Windows alike.
Academic Honesty
All work that you do toward fulfillment of this course's expectations must be your own unless collaboration is explicitly allowed (e.g., by some problem set or the final project). Viewing or copying another individual's work (even if left by a printer, stored in an executable directory, or accidentally shared in the course's virtual classroom) or lifting material from a book, magazine, website, or other source—even in part—and presenting it as your own constitutes academic dishonesty, as does showing or giving your work, even in part, to another student.
Similarly is dual submission academic dishonesty: you may not submit the same or similar work to this course that you have submitted or will submit to another. Nor may you provide or make available your or other students' solutions to Project 1, Project 2, or Project 3 to individuals who take or may take this course in the future. Moreover, submission of any work that you intend to use outside of the course (e.g., for a job) must be approved by the staff.
You are welcome to discuss the course's material with others in order to better understand it. You may even discuss problem sets with classmates, but you may not share code. You may also turn to the Web for instruction beyond the course's lectures and sections, for references, and for solutions to technical difficulties, but not for outright solutions to problems on problem sets or your own final project. However, failure to cite (as with comments) the origin of any code or technique that you do discover outside of the course's lectures and sections (even while respecting these constraints) and then integrate into your own work may be considered academic dishonesty.
If in doubt as to the appropriateness of some discussion or action, contact the staff.
All forms of academic dishonesty are dealt with harshly.
Noncredit Status
If you are not taking this course for credit, you are not required to submit any work. However, all of the work in this course is designed to facilitate your comprehension and retention of the course's material. Consequently, you are encouraged to complete on time as much of the work as possible. In return, you will receive feedback on any work that you do submit.
David J. Malan
http://www.cs.harvard.edu/~malan/
+1-617-523-0925
Description
Today's websites are increasingly dynamic. Pages are no longer static HTML files but instead generated by scripts and database calls. User interfaces are more seamless, with technologies like Ajax replacing traditional page reloads. This course teaches students how to build dynamic websites with Ajax and with Linux, Apache, MySQL, and PHP (LAMP), one of today's most popular frameworks. Students learn how to set up domain names with DNS, how to structure pages with XHTML and CSS, how to program in JavaScript and PHP, how to configure Apache and MySQL, how to design and query databases with SQL, how to use Ajax with both XML and JSON, and how to build mashups. The course explores issues of security, scalability, and cross-browser support and also discusses enterprise-level deployments of websites, including third-party hosting, virtualization, colocation in data centers, firewalling, and load-balancing.
Prerequisites
Prior programming experience (in any language) and familiarity with HTML are assumed.
Expectations
You are expected to attend or watch all lectures, to implement four projects, and to design and implement a final project.
Grades
Your final grade will be based on your performance on the course's projects, each of which will bear equal weight. Projects will be evaluated along the axes of correctness, design, and style. Remarkable effort and improvement will not go unnoticed.
Website
The address of this course's website is:
Visit the course's website to access the course's bulletin board, enter the virtual classroom, watch videos of lectures and sections, download handouts and software, and follow links to other resources.
Staff
To contact the entire staff, email:
However, you are encouraged to post most questions to the bulletin board on the course's website instead so that others might benefit as well.
Lectures
Lectures will take place in Harvard Hall 104 on Mondays from 5:30pm ET until 7:30pm ET.
A schedule of lectures, subject to change, appears below.
Lecture 0: HTTP
Monday, 31 August 2009
Monday, 31 August 2009
Lecture 1: PHP
Monday, 14 September 2009
Monday, 14 September 2009
Lecture 2: PHP, Continued
Monday, 21 September 2009
Monday, 21 September 2009
Lecture 3: XML
Monday, 28 September 2009
Monday, 28 September 2009
Lecture 4: XML, Continued
Monday, 5 October 2009
Monday, 5 October 2009
Lecture 5: SQL
Monday, 19 October 2009
Monday, 19 October 2009
Lecture 6: SQL, Continued
Monday, 26 October 2009
Monday, 26 October 2009
Lecture 7: JavaScript
Monday, 2 November 2009
Monday, 2 November 2009
Lecture 8: JavaScript, Continued
Monday, 9 November 2009
Monday, 9 November 2009
Lecture 9: Ajax
Monday, 16 November 2009
Monday, 16 November 2009
Lecture 10: Ajax, Continued
Monday, 23 November 2009
Monday, 23 November 2009
Lecture 11: Security
Monday, 30 November 2009
Monday, 30 November 2009
Lecture 12: Scalability
Monday, 7 December 2009
Monday, 7 December 2009
Sections
Sections offer opportunities to review recent lectures' material in a more intimate environment with only teaching fellows and a handful of classmates present. Sections also provide guidance on projects.
A schedule of sections appears on the course's website.
Projects
A schedule of projects, subject to change, appears below.
Project 0: Setup
Released: Monday, 31 August 2009
Due: Monday, 28 September 2009, noon ET
Due: Monday, 28 September 2009, noon ET
Project 1: PizzaML
Released: Monday, 28 September 2009
Due: Monday, 19 October 2009, noon ET
Due: Monday, 19 October 2009, noon ET
Project 2: C$75 Finance
Released: Monday, 19 October 2009
Due: Monday, 9 November 2009, noon ET
Due: Monday, 9 November 2009, noon ET
Project 3: Google Mashup
Released: Monday, 9 November 2009
Due: Monday, 7 December 2009, noon ET
Due: Monday, 7 December 2009, noon ET
Final Project
Pre-Proposal Due: Monday, 16 November 2009, noon ET
Proposal Due: Monday, 23 November 2009, noon ET
Status Report Due: Monday, 7 December 2009, noon ET
Implementation Due: Monday, 21 December 2009, noon ET
Computer Science Fair: Monday, 21 December 2009, 6:30 p.m. ET – 8:30 p.m. ET
Proposal Due: Monday, 23 November 2009, noon ET
Status Report Due: Monday, 7 December 2009, noon ET
Implementation Due: Monday, 21 December 2009, noon ET
Computer Science Fair: Monday, 21 December 2009, 6:30 p.m. ET – 8:30 p.m. ET
Extensions on these projects will not be granted, except in cases of emergency. Technical difficulties will not constitute emergencies. Late submissions will be penalized 1% per minute late up to 100%. Lateness will be determined by submissions' timestamps.
The climax of this course is the final project. The final project will be your opportunity to design and implement a dynamic website of your very own. So long as your final project draws upon this course's lessons, the nature of your website will be entirely up to you, albeit subject to the staff's approval.
This semester will conclude with the third annual “Computer Science Fair” on Monday, 21 December 2009, from 6:30 pm ET until 8:30 pm ET, in Maxwell-Dworkin at 33 Oxford St., room 119. A course-wide exhibition of final projects held jointly with CSCI E-7: Exposing Digital Photography, the Fair will be an opportunity to mingle with classmates, see each other's work, and eat cake. Distant students are encouraged to travel to campus for this event.
Inasmuch as software development is rarely a one-person effort, you will be allowed an opportunity to collaborate with one or two fellow students for this final project. Needless to say, it is expected that every student in any such group will contribute equally to the design and implementation of that group's project. Moreover, it is expected that the scope of a two- or three-person group's project will be, respectively, twice or thrice that of a typical one-person project. A one-person project, mind you, should entail time and effort equivalent to or greater than that required by one of this course's assigned projects. Collaboration is not allowed on the four assigned projects.
Exams
This course has neither a midterm nor a final exam.
Books
No books are required for this course. However, we recommend either of the sets below. All of these books is available for purchase at sites like Amazon.com. Each has also been placed on reserve at Grossman Library. Realize that links to free, if not superior, alternatives to these books can be found on the course's website.
For Those Less Comfortable
HTML, XHTML, and CSS: Your visual blueprint for designing effective Web pages
Rob Huddleston
Wiley Publishing, Inc., 2008
ISBN-13 978-0-470-27436-1
JavaScript: Your visual blueprint for building dynamic Web pages, 2nd Edition
Eric Pascarello
Wiley Publishing, Inc., 2004
ISBN-10 0-7645-7497-3
PHP & MySQL: Your visual blueprint for creating dynamic, database-driven Web sites
Janet Valade
Wiley Publishing, Inc., 2005
ISBN-10 0-4700-4839-5
For Those More Comfortable
Apache Phrasebook
Daniel Lopez
Sams Publishing, 2006
ISBN-10 0-672-32836-4
JavaScript Phrasebook
Christian Wenz
Sams Publishing, 2007
ISBN-10 0-672-32880-1
Linux Phrasebook
Scott Granneman
Sams Publishing, 2006
ISBN-10 0-672-32838-0
MySQL Phrasebook
Zak Greant, Chris Newman
Sams Publishing, 2006
ISBN-10 0-672-32839-9
PHP Phrasebook
Christian Wenz
Sams Publishing, 2006
ISBN-10 0-672-32817-8
HTML, XHTML, and CSS: Your visual blueprint for designing effective Web pages
Rob Huddleston
Wiley Publishing, Inc., 2008
ISBN-13 978-0-470-27436-1
JavaScript: Your visual blueprint for building dynamic Web pages, 2nd Edition
Eric Pascarello
Wiley Publishing, Inc., 2004
ISBN-10 0-7645-7497-3
PHP & MySQL: Your visual blueprint for creating dynamic, database-driven Web sites
Janet Valade
Wiley Publishing, Inc., 2005
ISBN-10 0-4700-4839-5
For Those More Comfortable
Apache Phrasebook
Daniel Lopez
Sams Publishing, 2006
ISBN-10 0-672-32836-4
JavaScript Phrasebook
Christian Wenz
Sams Publishing, 2007
ISBN-10 0-672-32880-1
Linux Phrasebook
Scott Granneman
Sams Publishing, 2006
ISBN-10 0-672-32838-0
MySQL Phrasebook
Zak Greant, Chris Newman
Sams Publishing, 2006
ISBN-10 0-672-32839-9
PHP Phrasebook
Christian Wenz
Sams Publishing, 2006
ISBN-10 0-672-32817-8
Software
It is not necessary to purchase any software for this course. All software required by the course's projects will be available for download via the course's website for Linux, Mac OS, and Windows alike.
Academic Honesty
All work that you do toward fulfillment of this course's expectations must be your own unless collaboration is explicitly allowed (e.g., by some problem set or the final project). Viewing or copying another individual's work (even if left by a printer, stored in an executable directory, or accidentally shared in the course's virtual classroom) or lifting material from a book, magazine, website, or other source—even in part—and presenting it as your own constitutes academic dishonesty, as does showing or giving your work, even in part, to another student.
Similarly is dual submission academic dishonesty: you may not submit the same or similar work to this course that you have submitted or will submit to another. Nor may you provide or make available your or other students' solutions to Project 1, Project 2, or Project 3 to individuals who take or may take this course in the future. Moreover, submission of any work that you intend to use outside of the course (e.g., for a job) must be approved by the staff.
You are welcome to discuss the course's material with others in order to better understand it. You may even discuss problem sets with classmates, but you may not share code. You may also turn to the Web for instruction beyond the course's lectures and sections, for references, and for solutions to technical difficulties, but not for outright solutions to problems on problem sets or your own final project. However, failure to cite (as with comments) the origin of any code or technique that you do discover outside of the course's lectures and sections (even while respecting these constraints) and then integrate into your own work may be considered academic dishonesty.
If in doubt as to the appropriateness of some discussion or action, contact the staff.
All forms of academic dishonesty are dealt with harshly.
Noncredit Status
If you are not taking this course for credit, you are not required to submit any work. However, all of the work in this course is designed to facilitate your comprehension and retention of the course's material. Consequently, you are encouraged to complete on time as much of the work as possible. In return, you will receive feedback on any work that you do submit.


