Class Materials

Assignments


Final Project Information

Course Information

Meeting Time and Location

Meeting Times: Tuesday and Thursday, 11:00 - 12:50
Location: Advanced Lab (Old Main Basement)
Office Hours: Mon 4:30-5:15, Tues 10-10:45, Wed 10-11, Thurs 2-4, Fri 10-11:45
Prerequisite: MIS 280 Internet Programming

Course Description

Client-side web programming, creating programs executed by the web browser to make dynamic web pages and sites. Separation of content, presentation, and behavior will be a major theme of the course. JavaScript will be the language of choice, and the first half of the course will be focused on its basics. Topics will include statements and commands, data types and variables, arrays, strings, functions, and programming logic. In the second half of the course, a JavaScript framework will be introduced, and the students will use it to make their webpages dynamic and interactive.

Course Objectives

Upon completion of this course students should be able to:
  • Understand the difference between the style, structure, and behavior of a web page, and know what is responsible for each of those areas.
  • Write clear JavaScript, HTML, and CSS code that adheres to a standard, and promotes readability.
  • Understand the basics of JavaScript programming
  • Understand what an event is, and understand how to define user actions in relation to a document.
  • Write efficient, and to the point code which uses modern best practices to solve problems.
  • Understand what an Object is, and what it means for a programming language to be object oriented.
  • Use a dynamically typed language, and know the various pitfalls that follow the dynamic typing paradigm.
  • Import JavaScript libraries and frameworks, and leverage them to speed up and ease development.
  • Know what jQuery is and how it helps ease DOM manipulations.

Required Materials

Textbook
No textbook is required for this course. If you'd like a textbook to follow along with, there are many options. Look for a book that was published recently (things change quickly in IT). A few suggestions:
Beginning JavaScript, Fifth Edition, by Jeremy McPeak and Paul Wilton
Fairly up to date and comprehensive. Includes any material we'll see in class, with several addtional topics.

JavaScript: A Beginner's Guide, Fourth Edition, by John Pollock
Very easy to read, with good end of chapter quizzes to check your understanding.
Other Materials
Class is held in our computer lab, and you will have access to these machines outside of class time according to the lab schedule posted on the door. You are not required to use your own computer. However, if you have a laptop, you may find it convenient to bring it to class. Any machine running Windows, Linux, or Mac OS is fine. You will need some way to upload files to the server, and a program that allows you to write code (a simple text editor is sufficient). Recommendations for these programs will be shared in class. If you have taken Internet Programming at Mercyhurst, you are already familiar with the process of building websites and have access to your directory on the server.

Exams

There will be two midterm exams in addition to a cumulative final exam. There are no make up exams, though you may arrange to take an exam early if you know if advance you will not be able to attend class for a scheduled exam. If you miss an exam, that exam grade will be replaced by the final exam grade (your final exam would then be worth 40% of your final grade).
Exam Dates
  • Thursday, February 16
  • Thursday, March 30
  • Final Exam: Tuesday, May 9, 10:30 - 12:30

Grades

Basis of Final Grade
  • 30%: Average of midterm exam grades
  • 25%: Average of short assignment grades
  • 20%: Final project grade
  • 25%: Final exam
Grading Scale
FDD+CC+BB+A
0-5960-6465-6970-7778-8384-8990-9394-100

Learning Differences

In keeping with college policy, any student with a disability who needs academic accommodations must call Learning Differences Program secretary at 824-3017, to arrange a confidential appointment with the director of the Learning Differences Program during the first week of classes.

Mercy Mission

This course supports the mission of Mercyhurst University by creating students who are intellectually creative. Students will foster this creativity by: applying critical thinking and qualitative reasoning techniques to new disciplines; developing, analyzing, and synthesizing scientific ideas; and engaging in innovative problem solving strategies.

Homework

Short Assignments

Throughout the semester, you will be given brief assignments based on class topics. Some of these assignments will not be collected, but you are still expected to be familiar with the techniques necessary to complete them. If an assignment is collected for a grade, you will generally have one week to complete your assignment.

All assignments and projects must be uploaded to your public html directory on the department server by the assignment due date. Projects submitted via email or other means may not be accepted without prior permission. Using the server is recommended while developing your projects, as you are far less likely to lose your work. It is also the fastest way for me to assist with projects as you work. A link to your assignment, when appropriate, should be placed on the course landing page will we created early in the semester.

Projects will be tested on Chrome, Firefox, and Safari. You should check that your work displays properly on these browsers. Internet Explorer support will not be required unless specified, though code that functions on all four browsers will receive special consideration when grading.

Assignment Requirements

Projects will be based on JavaScript, not HTML or CSS. At the beginning of the semester, you will be provided with basic HTML/CSS templates in which to place your JavaScript. Additional efforts in HTML will not be required unless specified in the project description. You will not be held responsible for reflexive design, the use of advanced frameworks, or styling options unless specified. Best practices for all languages used should be observed. As they are covered in class, your work will be expected to follow standard guidelines for HTML, CSS, JavaScript, and any supporting libraries or frameworks. This includes proper indentation, variable declaration, commenting, and safe coding techniques. This will be increasingly important throughout the semester.

Citing Code

The majority of the code you submit should be your own, but in some rare cases, it may be appropriate to use code you've found elsewhere as a starting point or to add an additional feature to your project. Any external code must be acknowledged by including a comment in your project indicating the origin of the code. This should include the web address or text where the code was found, and the author's name (if known). Using parts of complex projects you find online may be appropriate, but you should never simply copy and paste large portions of your code (even with citation). When in doubt, ask me if your intended usage is acceptable.

In addition, respect the difference between helping a classmate and doing their work for them. You are encouraged to support each other's progress in this course. However, you may not request nor provide code to your classmates without my permission. If such code sharing is determined to be appropriate, the author of the code must be cited within a comment of the project.

Using a project from another class is permitted, with permission. If you are creating a project for another course that would also satisfy the requirements for a project in this one, you may submit the project with my permission. The project must be created this semester, be your own work (not created as a group project for another course), and you should obtain permission from the instructor of the other course as well.

Failure to cite external sources used in your project, or sharing code with a classmate without permission, may result in a grade of 0 on the project and an academic dishonesty report.

Libraries and Frameworks

We will make use of a variety of JavaScript libraries in this course. Some assignments will require the use of a particular library, such as jQuery. In these cases, the library must actually be used to create your project (as opposed to simply including the library and using other tools to complete the assignment). While there are often several ways to achieve the same results, we will build on our knowledge of particular libraries throughout the course, so it is important that you become familiar with the required methods.

If you would like to use additional libraries in your project, including those not covered in class, you must request permission from me. In most cases, you'll be free to do so, unless use of the library significantly alters the spirit of the assignment.

Grading

A basis for each project's grade will be provided with the project description. You should take this criteria into account when developing your work, and note that the requirements may differ from one project to the next.

Complexity will be considered. Part of most project grades will be based on the overall level of effort required to produce it. Work should have an appropriate level of complexity, based on the amount of material we have covered. Generally, a grade of B+ or A indicates that you have gone beyond the minimum assignment requirements to produce truly outstanding work.

Late Assignments

All files related to your assignment must be located within your public directory by the time and date indicated on the assignment. If all or part of your assignment is not received by this deadline, you may still submit your work, with a penalty. Work received within 24 hours of the due time will receive an automatic 15% deduction. Work received 24-48 hours after the due time will receive a 30% deduction. Work received more than 48 hours after the deadline will not be accepted.

Final Project

Project Requirements

In addition to the brief assignments that focus on particular aspects of JavaScript, you will be required to submit a more extensive project that makes use of a wider variety of techniques and libraries. The project will be a fully functioning website that you will begin working on early in the semester, and add to as we progress through the material. While this project will not be collected until the end of the semester, do not wait until the last week of class to begin working on it. The usual policies apply with regard to submission policies, libraries, citing and sharing code, and late submission.

This project will be due by the start of the last class, 11 am on May 4. While you will not be required to do so, you will have an opportunity to display your work to the class.

Schedule

The exact topic covered on a particular date is subject to change. Exams will be given on the day they are scheduled.

DateTopic

Resources

Dr. Williams:
MDN - JavaScript
Mozilla Developer Network's JavaScript resource. Excellent free source for JavaScript.

W3Schools
Information, tutorials, and examples on just about everything related to web development.

jQuery
DOM manipulation made easy, thanks to this powerful JS library.

Google's JavaScript Style Guide
Write code that is easier to read and correct.

Raphael
A vector graphics JS library. A bit outdated, but a nice way to understand the interaction between JavaScript and Scalable Vector Graphics. Some knowledge of both required.

D3
A JS library for Data Driven Documents. Has a steep learning curve, but produces incredible interactive graphics.

repl.it
Practice your JavaScript code in your browser.

Liveweave
JS, CSS, and HTML playground in your browser.

JavaScripting
Massive list of JavaScript libraries, sorted by category.