Skip to content

lplopez-wpi/cs4241-21a.github.io

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

Course Assignments & Due Dates

Webware

Mondays / Thursdays 12:00–1:50
Fuller Labs, Lower Perreault

Note that our first day of class is Wednesday, August 25th, as WPI will be following a Monday schedule that day. Also note that Monday September 6th is a holiday (Labor Day); no class will be held.

Course Staff

Instructor: Charlie Roberts (@cdroberts)
TA: Mikel Matticoli (@mamatticoli)
TA: Akim Ndlovu (@kimsta007)
SA: Margaret Earnest (@meearnest)

Office Hours

  • Monday: 2 - 4PM w/ Mikel
  • Tuesday: 11AM - 1PM w/Margaret, 1 - 4PM w/Akim
  • Wednesday: 2 - 4PM w/ Mikel, 5 - 7PM w/Margaret
  • Thursday: 2 - 4PM w/ Mikel
  • Friday: 11AM - 1PM w/Margaret, 1 - 4PM w/Akim
  • Saturday: 10AM - Noon w/Margaret
  • Sunday: Noon - 2PM w/Margaret

Course Description

This course explores computational, aesthetic, and user-centered aspects of designing and developing applications for the web. Topics include: web scripting and markup languages, design of browser-based interfaces, client/server network architectures, and accessibility. Given the current crisis and the critical role that collaborative applications for realtime communication are playing in our lives, the course will also place on an emphasis on the technologies needed to develop such applications.

All students will complete a full-stack (client + server + database integration) application as a final group project in the course; in addition, several smaller assignments (completed individually) will also emphasize full stack development.

Students will be expected to use Git in this class and many assignments will be turned in using GitHub. Please begin familiarizing yourselves with Git if you don't have prior experience with it; it will not be taught in the class. The course TAs can provide help with Git for those who need it; please take advantage of their expertise!

Learning Goals

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

  • Critically evaluate and deconstruct the design and technical characteristics of web applications.
  • Identify opportunities for web-based resources and APIs in organizations.
  • Create functional and accessible web applications, including front-end and back-end components.

Required Texts

There are no required texts for this course. Required readings will be taken from various online resources. For those who can't wait to start digging into JavaScript:

  • Eloquent JavaScript is rapidly becoming one of the most popular JavaScript books on the web.
  • You Don't Know JS is where most of our assigned readings on JavaScript will come from.

Assignments

Assignments are the core of this course. Each assignment will focus on a particular aspect of web development, such as database integration, realtime communication technologies, or server development. 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.

Programming Languages

We'll be primarily using JavaScript in both the browser and with node.js to develop web applications in this course. While JavaScript is the main language for front-end web application development (with TypeScript nipping at its heels), 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.

Development Tools

You can use whatever editor you like in this class. I primarily use vim alongside tmux in the terminal, and it is nice to know this combination if you anticipate doing a lot of remote server programming, as every Linux / macOS server (and increasingly Windows as well) will have these tools installed.

But if you've never used vim (or emacs...bleh chording), I recommend using VSCode, which is free and available for most platforms. In class, I'll VSCode for most demos.

Discussion / Questions

This term we will be using Discord for class discussion, in order to get you help fast and efficiently from classmates and the course staff. Rather than emailing questions to staff, post your questions to Discord to ensure you get a timely response, and to ensure that our responses can be seen by others who may have the same question you do. In general, most communication for the course will happen through Discord.

You will be emailed a link to join the Discord server for this course. It will likely be the last email you receive related to this course; please keep a close eye on the announcements on the server to make sure you don't miss information on assignments.

Grading

Your course grade comes from three parts:

  • Homework assignments (55%)
  • Project (35%)
  • Quizzes (10%)

I reserve the right to adjust the above if needed.

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.

Late homework is not accepted without a medical reason or prior permission from the course instructor. It is much better to submit partially complete work than nothing at all. Tell us what you have completed and you will get partial credit... even just making an empty pull request for an assignment will get you some points. If you don't submit homework on time you will receive a zero for that assignment.

Assignment Achievements

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

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

For example, let's say your base grade was an 80%, which would mean that you were docked 6% off the minimum assignment requirements. If you then completed 6 points of technical achievements and 4 points of design achievements, you would receive an 90% (A) on the assignment. The maximum grade for any one assignment is 100%, even if you get a perfect score on the minimum requirements and both achievements.

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: complex 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 your assignment achievements depends 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.

The best strategy is usually to include both types of achievements in your project scope. It's rare for someone to get all 10 points of one type, but common for someone to play to their strengths on one side, and 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. If I ask you to write a 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 better understand 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.

Students are likewise forbidden from facilitating other students, current or future, in plagiarism or cheating. 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 your fellow students without giving them code and answers. Please feel free to answer low-level coding questions and to help your classmates troubleshoot their code. But do not provide significant chunks of code; for example, providing an entire server that you've written is not allowed.

Acknowledgements

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

  • Lane Harrison
  • Gary Pollice
  • Craig Shue

About

Course materials for Webware 2021 @ WP1

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published