Giter Site home page Giter Site logo

cs4241-20a.github.io's Introduction

Course Assignments & Due Dates

Course Staff

Instructor: Charlie Roberts (@cdroberts)
TA: Ari Kundu (@akundu)
TA: Yiyang Zhao (@yzhao10)

Office Hours

Monday: 2–4 PM w/Ari
Tuesday: 11AM–1 PM w/Ari
Wednesday: 11AM–1 PM w/Ari
Thursday: 2–4 PM w/Ari
Friday: 11–1 PM w/Ari, 1PM–3PM w/Charlie

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 GiHub. 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 may be able to provide help with Git for those who need it.

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 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 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.

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, 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 Teams 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 to Teams to ensure you get a timely response, and to ensure that our responses can be seen by others who may need them. In general, most communication for the course should happen through Teams.

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

Grading

Your course grade comes from three parts:

  • Homework assignments (60%)
  • Project (40%)

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.

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. Tell us what you have completed and you will get partial credit. 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 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.

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 10 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.

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. 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.