Course Syllabus

Course Description

This course will teach you the skills and techniques necessary for creating sophisticated and accessible interactive web applications. It focuses on the client-side languages, tools, and libraries that professionals use to build the web sites you use every day. We will learn not only the basic syntax and mechanics of web development, but also the best practices that separate professional developers from amateurs. Upon completing this course, students will be able to build robust web applications, and will have the foundation for independently learning new skills in the every-changing world of web development. This course is intense and our expectations are high, but we will make sure that everyone, including the total beginners, are prepared to succeed.

Prerequisites: CSE 142; INFO 201.

Learning Objectives

After completing this course, students will be able to:

  • Produce web pages that are well-formed, standards-compliant, semantically rich, and universally accessible.
  • Style the appearance of those pages to create intuitive, usable, and engaging experiences for human readers on different kinds of devices.
  • Create interactive and feature-rich web applications leveraging existing programming frameworks, libraries, and APIs.
  • Interpret documentation in order to harness existing software packages for web development.
  • Utilize development tools to automatically manage, implement, and validate web applications.

Course Structure

As with any form of computer programming, the best way to learn web development is by doing it. Moreover, web programming is a constantly and rapidly changing discipline, so professional developers need to constantly learn new tools and techniques on their own.

To help you practice this web programming and independent learning, this course is offered in a somewhat "flipped instruction" format. This means that all the information needed for the course is available in the course book, rather than introduced during scheduled meeting times. Instead, meetings will be used for focused review activities and collaborative work time for assignments. Instead of getting information in lecture and doing assignments at home, you'll get information at home and (partially) do assignments in lecture.

This structure will you allow you to work at a pace that is more comfortable for you individually, rather than requiring lectures to fit a diverse range of backgrounds. It also means you'll easily be able to get more direct support when learning and practicing the material: whether from us or from other students in the class.

However, this structure does require you to take more responsibility for your own learning: it is up to you to read the course materials before each class meeting, and to be willing to ask questions and seek help if there are any problems. We will serve as mediators and support for your learning, but your participation in and outside of class is essential. You are accountable for your own learning—but we are here to help!

Class Attendance

Make every effort to attend each class meeting (including lab sections!). Class will begin and (usually) end on time. Please do your best to get to class before the start of the session. Students are expected to attend all meetings, with exceptions permitted in case of illness and family emergencies.

Please silence all cell phones/pagers/etc. before the beginning of each class. You should bring your laptop for in-class work, but please don't use class time (lecture or lab) to check your email, update your Facebook, read reddit, watch YouTube, make dank memes, seize the means of production (allowed), etc. Such usage is distracting and interferes with learning both for you and for all the other students around you. Spend class time on class materials. If another student's activity is distracting, please ask them to stop it (or let us know outside of class).

Correspondence

We will send out official course announcements and information by email, so you should check your email daily (it may not be hip, but it's accessible and effective!) Note that this email will go to your uw.edu address. If you prefer to read your email on another account, you should set your UW account to forward your email to your preferred account.

You are welcome to email me at any time. When emailing, please make sure to sign your emails! This will let me know who is writing and will help us to better answer questions.

I have also set up a Microsoft Teams group for questions and discussion (join here with code ome14ib). Teams is a less nice version of Slack, but is FERPA compliant and so better supports your privacy. I encourage you to use that to ask for programming help rather than email: this lets you get support from the whole of the class (not just the professor), and is more conducive to the kinds of small questions that come up when programming. If you need any help using Teams, please let us know. You can also view a quick demo or get official help.

Note that I will generally not be available to answer questions in real time during the weekends; you should not expect rapid responses from me then.

My official office hours are listed on the home page, but if my door is open then I am more than happy to talk about any questions or concerns you may have about the course or its material. We can also schedule a specific time to chat that works better for you.

Assignments

Find complete assignment details and due dates on the Assignments page.

This course will involve two types of assignments:

Problem Sets

Each topic in this course will be accompanied by a number of practice problems. Each problem is a small(ish) directed programming exercise designed to give you practice with a particular web development concept. Problems will be graded on a "completion" basis: you will get credit when the problem is finished and passes all its functionality tests.

You can move at your own pace through these, but will need to complete one problem set each week to stay on track.

Course Project

You will also be creating a large project that brings together all of the concepts learned learned through the exercises. In the end, the project will be an interactive web application of your own design, implemented in collaboration with a team. See the project overview for more details.

Although you'll be working on a single project throughout the quarter, the development will be divided into different stages, each with its own requirements and deadline. Stages will be due approximately every 2 weeks.

Grading

Your grade in this course will depend on your completing the problem sets and project stages thoroughly and on time. Active participation during class meetings and overall support of the learning environment will also be a factor.

Final grades are determined based on the iSchool Standard Grading Scheme. I urge everyone to focus not on the grade itself but on learning what's necessary to earn high scores; the grades will follow from that.

Late Assignments

Web development projects have deadlines, and this class is no exception. At the end of each project sprint, you are required to submit a working version of the project that meets the requirements. We will be grading the code as it stands at these deadlines, without exception.

That said, programming is an iterative process, and the goal is for you to learn the course material by the end of the course. You are welcome to respond to and fix problems in your project as part of the subsequent sprint at no penalty. At the end of the final stage, your project will be graded against the requirements of all of the stages put together.

In effect, no work will be accepted late, but there are also no penalties for projects requirements that are delivered late—as long as they are completed by the end of the course.

There are also no late penalties for problem sets; the deadlines in the syllabus are checkpoints to make sure you are keeping up with the material.

This late policy is an experiment with the goal of makes this course more adaptable to individual needs and situations, while also betetr reflecting a "real-world" development process.

Resources & Accomodations

A number of challenges from a variety of directions can affect your ability to bring your optimal attention and energy to a course. Student Resources is a set of links to campus resources that UW makes available to students in trying to mitigate and cope with some of these challenges. This includes disability accommodations, physical and mental health, and community connections among others. If you are having any difficulties, please contact your academic advisor for support, or Health & Wellness at http://livewill.uw.edu. Furthermore, please notify the professor if you are comfortable in doing so. This will enable me to provide any resources that I may possess.

Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW’s policy, including more information about how to request an accommodation, is available at Faculty Syllabus Guidelines and Resources. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form available at https://registrar.washington.edu/students/religious-accommodations-request/

I encourage all students having difficulty, whatever the reason, to consult privately with me at any time.

Academic Conduct

The standard iSchool and UW academic policies that apply to all of our courses, apply here as well.

Diverse backgrounds, embodiments, and experiences are essential to the critical thinking endeavor at the heart of higher education. We expect you to be respectful of the many social and cultural differences among us, which may include, but are not limited to: age, cultural background, disability, ethnicity, family status, gender identity and presentation, citizenship and immigration status, national origin, race, religious and political beliefs, sex, sexual orientation, socioeconomic status, and veteran status. Please talk with me right away if you experience disrespect in this class—from any source (including teaching staff)—and I will actively work to address it.

Collaboration

The iSchool encourages and supports collaboration. The goal of this course is to learn the material—to be able to create new web-based information systems on your own. You are encouraged to utilize any available resources, including your classmates, to learn these skills. You are welcome to discuss exercises and problems with others, to work through challenges in pairs, to seek help if you get stuck, and to share guidance and expertise if requested. Help each other to become experts!

But "collaboration" does not mean just copying other people's code and trying to pass it off as your own. You can discuss problems and even work through solutions together, but the final product (the code you create and submit) should come from your own brain and your own hands.

The point of assignments is for you to learn to complete them. This includes the entire process of getting the solution—including the false starts, bugs, misconceptions, and mistakes—because the learning occurs in the doing. Completely apart from the ethical issues, copying a solution without understanding deprives you of the whole point of the assignment, and frankly is a waste of your time.

A good rule of thumb: When working on an individual assignment, no other student's code should ever be on your computer. Not ever shown on your screen (including as an image or screenshot), not saved to a file on your harddrive, not found in an email under your account, etc.. You can verbally talk through the code to write, but make sure you understand what and why your implementation works—and if you're not sure, ask!

  • DO: Ask people (especially the professor!) for help finding bugs.
  • DO NOT: Let someone else type code for you.
  • DO: Talk through problems sets in pairs.
  • DO NOT: "Split up" problem sets so you only do half the work.
  • DO: Give credit when you get help or advice from someone.
  • DO NOT: Copy or adapt an assignment from a previous quarter.

Code Reuse

Although professional web developers often reuse code they find on the web, they also take the time to understand what that code is doing, customize it to their specific context, and cite the source so that they can find it again later. They "make it their own". If you want to use a snippet of code you find on the web, you MUST do the following:

  1. Include a reference to where you found the code (a URL in a comment is fine). Including more than a line or two of un-cited code, or otherwise failing to give appropriate credit, is a form of plagiarism and so is considered cheating.
  2. Take the time to understand how and why the code works (otherwise you aren't actually learning anything!). Adding detailed comments explaining what the code does in your own words is a good way to demonstrate that you actually understand it.
  3. Make the code your own; do not just copy and paste it directly into your project. Choose exactly what pieces of a sample are necessary for your work (you usually don't need everything). Adjust variable and function names so they are appropriate for your situation. Ensure that the code matches the style and usage guidelines required for the class

This course is about learning web development; you won't learn anything from just copying other people's code—even if the final product "works". It's fine to learn from other sources, just be honest about it.

Academic Honesty

The consequences of academic dishonesty are not worth the risks. The simple rule is: do not claim anyone else's work, code, words, or ideas as your own. If you're in doubt, come talk to me in advance.

If we determine that you violated the collaboration policy and plagiarized code, you will get an automatic zero on the assignment, and will force us to file an academic misconduct report with the Associate Dean of Academics. Note that both students will be considered to be at fault in the case of unauthorized code sharing.

If you're having problems in the course, come and speak with me; never take the shortcut of copying someone else's work. It isn't worth it.

Course Summary:

Date Details Due