Skip to content

Latest commit

 

History

History
157 lines (115 loc) · 9.79 KB

README.md

File metadata and controls

157 lines (115 loc) · 9.79 KB

Course Assignments & Due Dates

Webware

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

Note that Monday September 4th is a holiday (Labor Day); no class will be held.

Course Staff

Instructor: Charlie Roberts (@cdroberts)
TA: Akim Ndlovu (@andlovu)
SA: Kaley Du (@kdu)

Office Hours (tentative)

  • Monday: 10AM - 12PM w/ Kaley
  • Tuesday: 09:30AM-12:00PM w/Akim, 12PM-2PM w/ Kaley, 3PM - 5PM w/ Charlie
  • Wednesday: 09:30AM-12:00PM w/ Akim, 12PM - 2PM w/ Kaley
  • Thursday: 10AM - 12PM w/ Kaley
  • Friday: 10AM-12:30PM w/ Akim

I will spend time on Discord answering questions asynchronously. Whenever possible, please post questions publicly in Discord so everyone can learn from the answers... and there's a good chance someone else in the class might be able to help with technical questions as well. My in-person office hours are from 3--5 on Tuesday, in Fuller Labs B30... please stop by! Some good reasons to stop by in-person office hours include:

  • We can't debug your problems over Discord
  • Brainstorming on final project / assignment ideas
  • You want to talk about art / music / graphics / programming more generally
  • You're interested in learning more about my research
  • You want to tell me about your research
  • You'd like to sit and work a bit with me/other students nearby in case questions popup (space permitting)
  • Anything else, really!

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, web accessibility, creative coding in the browser, web decentralization, and the environmental impact of web design and development.

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 build towards full stack development.

Students will be expected to use Git in this class and all 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/SAs 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, component libraries, server development, or creative coding. 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 language consistency across client / server development. Deno and Bun are node.js alternatives that are worth exploring.

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

Late homework is not accepted without a medical reason or prior permission from the course instructor. Please DM both the course instructor and the primary grader (Akim) for small extensions. If it is a personal matter you which to discuss it's of course fine to only contact the 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.

Assignment Achievements

Unless otherwise noted, meeting the minimum requirements for an assignment will earn 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, 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. If you completed all 20 acheivement points, you would still get a 100%, even after missing some points on the primary assignment requirements. 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 (usually small) 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 you choose to employ 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. 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. We highly encourage everyone to spend time in the course Discord server, both asking and answering questions about any topics from the course.

Acknowledgements

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

  • Lane Harrison
  • Gary Pollice
  • Craig Shue