Skip to content

Latest commit

 

History

History
executable file
·
134 lines (94 loc) · 7.53 KB

syl.md

File metadata and controls

executable file
·
134 lines (94 loc) · 7.53 KB
layout title permalink
page
syl
/syl/

Course Description

This course explores the computational aspects of network information systems as embodied by the World Wide Web (WWW). Topics include: languages for document design, scripting languages, design of web-based human/computer interfaces, client/server network architecture models, high level network protocols (e.g., http), and network security issues. Students in this course will be expected to complete a substantial software project (e.g., full stack web application).

This course provides you with the foundation needed to construct Web applications. It provides you with an introduction to distributed computing paradigms for the Web as well as the knowledge for developing static and dynamic content for your Web applications. The student who successfully finishes this course will be able to pursue further study into and practice of using Web software technologies.

Learning Goals

After successful completion of this course, you will be able to:

  • Critically evaluate and deconstruct web applications.
  • Identify opportunities for web-based resources and APIs in your organization.
  • Evaluate the characteristics and structure of web applications you encounter to refine design options.
  • Create functional and usable web applications, including front-end and back-end components.
  • Apply knowledge of HTTP to design scalable web applications.

Required Text

There are no required texts for this course. Everything you need is on the web.

If you're looking for js specific resources, I hear JavaScript: The Good Parts is a favorite of many web developers. Additionally, Eloquent JavaScript is rapidly becoming one of the most popular webdev books on the web.

Assignments

Assignments are the core of this course. Each assignment will focus on a particular aspect of web development, such as routes or sending data from server to client and vice versa. The lectures and labs will equip you with the background, theory, and technical skills to develop web applications.

Assignment are due by the start of class on the date listed on the calendar, e.g. if the due date is on a Thursday, the assignment is due by 11:59AM Thursday.

Labs

Some weeks will include an in-class lab. These labs provide an opportunity for you to learn more about web application development, design, or technologies.

Quizzes

Quizzes will cover the readings, which in many cases will be reinforced by lectures.. These make it possible to gauge how well you've understood the material, and help me understand how well I've communicated it.

Programming Language

We'll be primarily using JavaScript with node.js to develop web applications in this course.

While JavaScript is the main language for front-end web application development, there are a variety of choices for back-end languages. Java, Python, Ruby, and many other languages have HTTP support. We'll be using node.js for simplicity and consistency across client / server development.

Discussion / Questions

This term we will be using Slack for class discussion. The system is highly catered to getting you help fast and efficiently from classmates and myself.

Rather than emailing questions to me or the staff, post your questions on Slack to ensure you get a timely response, and to ensure that our responses can be seen by others who may need them.

Grading

Your course grade comes from three parts:

  • Homework assignments (50%)
  • Quizzes and lab assignments(15%)
  • Project (35%)

I reserve the right to adjust the above if needed. As for grades-- To get an A, if you have a 90 average or better, you will get an A. If you have an 80 or better average you will get at least a B. If you have a 70 average or better you will get at least a C. I may adjust the threshold downward, but never up.

I don't accept late homework, doing so is unfair to your fellow students and to course staff. It is much better to submit partially complete work than nothing at all. If you don't have the homework done on time you will receive a zero for that assignment. You are expected to complete the assignment and have it deployed by the due date.

Assignment Achievements

Unless otherwise noted, meeting the minimum requirements for an assignment earns you a B (85%).

You may earn up to additional 24 (12+12) points via Technical Achievements and Design/Evaluation Achievements. Achievements are an opportunity for you to take an active role in your learning and assessment. The maximum grade for any one assignment is 100%. Achievement points can both boost your grade to an A and also make up for points that you might have lost in regards to the minimum requirements.

A technical achievement might be: substantial additions to the project requirements, a particularly robust algorithm, non-trivial use of outside frameworks and libraries*.

A design/evaluation achievement might be: interactive functionality, animations, styling that is objectively "more usable" than the minimum requirements, and evaluation activities such as completing a task-based user analysis, writing up the results, and using the results to justify changes to your application.

The success of Achievements hinges on how well you describe them in your Readme. Well formatted text, images, and concise and clear descriptions are helpful. Every Readme must include a Technical Achievements and Design/Usability Achievements section, even if none are attempted.

Note that the optimal strategy is to include both types of achievements in your project scope. In other words, it's rare for someone to get all 12 points of one type, but common for someone to play to their strengths on one side, and to try a few different things on the other side.

*Make sure any frameworks and libraries do not interfere with the underlying intellectual challenge of the assignment. In other words, if I ask you to write an HTTP server and you use a package that provides a server in one line of code, you'll lose points instead of gaining them. Our aim is to open the black box of these packages in the scope of this course, so that when you encounter them later, you will be equipped to know what they're doing for you.

Academic Integrity

In this class, students may not look at any previous versions of a course assignment or project, regardless of how it is posted. If a student accidentally discovers such a posting, they must report it to the instructor immediately, avoid the resource in the future, and delete any copies that are cached on their computer.

Students are likewise forbidden from facilitating other students, current or future, in plagiarism or cheating. Students may not distribute their code publicly on the Internet, or in other means, during the term or even after the class has concluded. Students may share their code with potential employers or other individuals privately, so long as the code would not become available to other WPI students.

Collaboration is, however, encouraged in this class. There are many ways in which you can assist others without giving them code and answers. Personally, I have found that high-level diagrams combined with low-level implementation strategies (i.e. building a single piece of functionality at a time) is a helpful collaborative teaching strategy.

Acknowledgements

Many aspects of these course materials were adapted from materials by:

  • Lane Harrison
  • Gary Pollice
  • Craig Shue