We will use a variety of web materials in the class.

Required book(s):

JavaScript: The Definitive Guide, 6th Edition
By David Flanagan
Publisher: O'Reilly Media
Published: April 2011
* I highly recommend purchasing the DRM-free Ebook directly from the publisher. They provide DRM-free versions in pdf (and APK, DAISY, ePub, Mobi). Most importantly, you will be frequently searching in the book for what you need instead of just reading it front to back. This is much easier to do digitally than on paper. While it is DRM-free, the ethical and legal thing to do is to buy it, not to steal it.

There may be a 2nd required text. I am evaluating newly-released books and will make a decision by the end of the first week of class.

Class etiquette:

Class attendance: Distributed application development is an exciting and rapidly changing field. But as in most things, you get out as much as you put in. You are expected to prepare for each class and participate in discussions in class. There will be in-class assignments and occasionally unannounced short quizzes at the beginning of class. Students who have an unexcused absence or tardiness will not be able to make up these assignments and quizzes.

Laptops:  Student use of laptops during class is at the discretion of the instructor. We will frequently do tasks in class that require your laptop. You must bring them to class, but leave them closed. When permitted, they should only be used to enhance class involvement and learning. No email, chat, or other non-class related surfing is permitted. 

Mobile phones: Using mobile phones and other distractions are unprofessional behavior and are forbidden in class.  Turn them on airplane mode while in class. Never answer a phone call in class. (Employers will leave you a message or call you back; they also want professionals who know when and when not to take calls.)

Tardiness and Leaving Early: Plan ahead and do everything you can to avoid being late to class or leaving early because it disrupts the instructor and class and shortchanges learning. When being late is unavoidable, come in quietly and sit in the first row of class to minimize disruption. This should be a very rare occurrence and you should give explanation to the instructor after class. Similarly, when leaving early is unavoidable, let the instructor know before class and sit in the first row and exit quietly.

Stay in class: Avoid stepping out of class. If there is an emergency and you cannot avoid leaving the classroom for a moment, go and come back discreetly, with a minimum of disruption to others.

Notetaking: It is best to just think and engage during class. Class slides will be available afterward for your reference. Take notes via paper. No recording of classroom activities

Food & drink: Students may bring reasonable amounts of food and drink to class. Be aware of how it might distract students around you, however.

If you are in doubt about proper course etiquette, contact me in person or via email.

Document file type:

  • JavaScript, HTML, CSS, and other code files should be submitted as text files with their traditional suffix (i.e. js, html, css).
  • Prose-based documents and screen shots should be formatted as pdf files.


Blackboard will be used primarily for assignment submission and as the class gradebook. All materials will be distributed via this web site.


Piazza will be used as the class bulletin board for announcements, homework updates, project Q&A, and general class discussion.

Learning Outcomes:

  • Students will be able to program a complete application using JavaScript on both the client and server side.
  • Students will be able to build applications that integrate the services of multiple existing web-services. (E.g. Amazon, NYTimes, Flickr, or Last.Fm)
  • Students will be able to develop applications running on multiple systems (e.g. on a browser communicating with a web application.)
  • Students will creatively envision, design, and develop an application that serves some purpose (e.g. inform, entertain, educate).
  • Students will understand network protocol layering and the key protocols that are used to facilitate Internet applications.
  • Students will have a basic understanding of core cryptography and security protocols that underlie secure Internet communication, user authentication, and user authorization.


10% - Class participation
10% - In-class quizzes & assignments
15% - Midterm exam
25% - Homework assignments
20% - Final project
20% - Final exam

Missed Work and Examinations:

Communicate professionally. Discuss with the instructor any needs to miss class or a work deadline at least 24 hours before class starts or the work is due. Make up opportunities will not be given for unexcused absences. Very rarely will an excuse be accepted at the last moment. If you are feeling poorly the night before class, write then. Email sent 20 minutes before class will be treated as very suspect. Late assignments will lose 20% of their value if they miss the deadline, and another 20% each additional day.

Code Reuse and Cheating:

You must not copy code from other students, and you must borrow code appropriately. See the first day's class slides for details. Misuse of code that is not your own will be treated as cheating; so ask the instructor if you are not sure whether and how to reuse code. The first instance of cheating will result in a failure for the whole clas.

Acknowledgements and References:

Always make sure you acknowledge your collaborators and others who help you in any written or oral assignment.  In general, you should be generous in acknowledging contributions of others.  Also make sure you include adequate references to publications, communications, and websites that you use to support different claims in your written and oral assignments. Most arguments are made stronger by supporting citations.  We have a strict policy prohibiting plagiarism in this class.

Take care of yourself:

Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding recreational drugs and excessive 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. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Ask for support sooner rather than waiting.

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 available to help: visit their website or call 412-268-2922. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.

If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:

CaPS: 412-268-2922

Re:solve Crisis Network: 888-796-8226

If the situation is life threatening, call the police:

On campus: CMU Police: 412-268-2323

Off campus: 911