Course Goals

On the surface, this course is an introduction to programming for the World Wide Web. We will learn about the relationship between clients and servers, briefly how the internet works, and how web pages are constructed using several technologies:

  • HyperText Markup Language (HTML) for authoring web pages
  • Cascading Style Sheets (CSS) for applying stylistic information to web pages
  • JavaScript (JS) for creating interactive web pages
  • Asynchronous JavaScript (AJAX) with fetch and JSON for enhanced web interaction and applications
  • Web services for handling and responding to client-side requests
  • Structured Query Language (SQL) for interacting with databases

In the process of learning these technologies, you will also:

  • Practice the skill of reading detailed specifications and writing readable, well-documented, and structured code
  • Learn how to appropriately search for and evaluate solutions
  • Have an opportunity to develop an individual portfolio to show prospective employers

Modules

There are 5 main modules we will cover in the course to introduce key web programming technologies:

  1. Webpage structure and appearance with HTML5 and CSS
  2. Client-side interactivity with JS DOM and events
  3. Using web services (API's) as a client with JS
  4. Writing web services with a server-side language
  5. Storing and retreiving information in a database with MySQL

By the end of the course, you will be able to write a simple "full-stack" website with webpages, client-side code, server-side code, and a database, with a survey of other important web programming concepts and technologies (including Git version control, code quality guidelines in multi-language projects, accessibility, and form validation).

Course Organization

We have structured the course so that spending a few hours per day will maximize your efficiency. Why?

  • You will work this way in the real world — you cannot cram a 10-week development project into a single day — so you may as well work this way now.
  • You will understand the material better, especially since we are covering various languages and technologies (it will feel like a lot at first, but you'll get better with practice!).
  • If you leave the homework for the day before it is due you will not have time to ask questions when (not if) the software misbehaves. In most circumstances, accommodations will not be made for technical difficulties the night of an assignment deadline.

That said, we do our best to keep this course a standard 5-credit workload, and you are welcome to talk with the instructor about different study strategies if you find yourself falling behind. We also offer a ton of resources, so take advantage of them early!

Each week, there will be 3 lectures (Monday, Wednesday, Friday), and two TA-led sections (Tuesday and Thursday). Sections will be separate on Tuesdays and pairs of sections will combine with two TAs on Thursdays.

Lectures

Lectures are designed to introduce new material throughout the quarter, motivate key concepts, and demonstrate web development strategies. Attendance is not required, but many students have acknowledged the faster pace of this course. New material will be introduced in each lecture, and it will be very easy to fall behind if you miss a class.

We encourage questions in lecture - questions help the instructor gauge where students are at, and it is usually the case that many students share the same question.

Lecture Pre-Checks

There will usually be short Lecture "Pre-Checks" supplemented with readings or other activities due 12:30PM the day of lecture, unless otherwise noted (some may be extended to 11:59PM). These are designed to support your studying and learning in a course that covers multiple languages and technologies, and we will do our best to make them interesting :) You are encouraged to discuss the questions in OH or Piazza, but may not share your actual answers with other students.

We do not expect you to spend more than 30-45 minutes on readings/Pre-Checks, but the time you do spend will be important to introduce the fundamentals of a new language or technology so that lecture can reinforce what you read and allow the instructor to provide motivation, demonstrate code examples, and discuss practical use-cases during lecture.

Lecture Pre-Checks are worth 5% of the course grade and will be completed on Canvas. The lowest 3 Pre-Checks will be dropped from your final grade.

Sections

On Tuesdays and Thursdays, you will participate in a weekly sections, held at various times (see MyUW for details). Tuesday and Thursday sections will be similar those you may have had in other classes - we will spend the 60 minutes answering questions, going over common errors in homework solutions, discussing sample problems in more detail than we can in lecture, and solving exercises on a computer with TAs available to help.

At the beginning of Tuesday sections you will be given short "Quick Check" - a 5-10 minute written mini assessment. They are intended largely for you to understand your knowledge "in the moment" and are a great study aid for the midterm and final. You MUST be present in your section to do a Quick Check; they cannot be turned in late nor submitted on-line.

On Thursdays, you will also be given more time to work on computer-based exercises (labs), and sometimes even given an opportunity to make progress on part of a creative project. TAs will be circulating the room and available for help, so make use of their expertise!

Participating in sections earns you points toward your course grade. Each section is worth 2 points. On Tuesdays you will receive 1 point for completing the Quick Check and 1 point for participating in the work for that day. On Thursday you will receive up to two points for participating in section, working effectively and only on course materials during any independent work time. Thus, you can earn up to 4 points per week, with a maximum score of 28 points for the quarter, meaning you may miss up to 3 sessions without penalty to your course grade. However, we do recommend you attend all of the sessions, high session attendance is correlated with a deeper understanding of the material (and higher overall grade) in the course.

During sections, you are free (and encouraged) to work on section exercises with other students. Collaboration is fundamental in programming projects in industry, and this is an opportunity for you to work with other students sharing an interest in web programming and discuss different problem-solving strategies. However, you are NOT to work with other students on homework assignments, even during your section time.

Notes:

  • You will need your laptop for in-class work for your section for CSE 154. As such you are expected to come to class with your computer charged and with your charger available should it lose power. Please see the Technology section of the Expectations page for more information on what to do prior to section if your laptop is not working or is unavailable.
  • Your computer is NOT to be used for anything other than designated course work during class. This includes other course homework, other projects, gaming, and/or other social media.
  • It will not be possible to make up missed section without advance permission from the instructor(s) (not your TA). Permission is given only in severely extenuating circumstances.

Failure to adhere to the notes above could cause you to lose one or both points for any given section.

Attendance in Sections

You are only to attend the Sections that you are enrolled in. Attending alternate sections can be disruptive to the TA and the other students in the class. Moreover, you may not get credit for your attendance or your Quick Check if you attend an alternate section. However, if there is a one time change - i.e. a Very Important Appointment That You Can Not Miss - you must email both your TA AND the TA for the temporary section at least 24 hours in advance of the first section time to get approval from both TAs.

Grading, Exams, & Assignments

The grade book will be kept on Canvas and will be updated regularly; please check it to be sure scores have been recorded correctly. Please contact your TA or the instructor if something has been recorded incorrectly. If you feel something has been regraded incorrectly, please see the re-grade policy below.

Graded work will receive categorized point values, with the following categories and their respective weights:

  • 30% Homework Assignments
  • 10% Creative Projects
  • 10% Section Participation
  • 5% Lecture Pre-Checks
  • 30% Exams (two exams, 15% each)
  • 15% Final Project

Your percentage in the class maps to the 4.0 scale roughly as follows. You will get at least the grade below for the percentage shown:

90%: at least 3.5 85%: at least 3.0 80%: at least 2.5
75%: at least 2.0 70%: at least 1.5 60%: at least 0.7

The instructor reserves the right to fail (0.0) any student who does not show up for the final exam.

Exams

There will be two exams in this class, both held during the normal lecture time/location.

  • Exam 1 will be held Monday, July 22nd.
  • Exam 2 will be held Friday, August 23rd.

Alternate exams will only be given in unusual extenuating circumstances. You must contact the instructor prior to the exam date if you believe you need to take the exam at another time, but no later than least two days prior to the exam.

You will be given an instructor provided "cheat sheet" for the exams. More information about the exams, their structure, and what resources you will be allowed to use will be discussed in class and listed on the course website as we approach the exam times.

Creative Project / Homeworks and the Late Day Policy

Modules 1-4 will each have a Creative Project followed by a more structure Homework Assignment. Programs will be graded on "external correctness" (behavior and output), "internal correctness" (correct use of the technlogies taught, including code quality and web compliance) and "documentation".

Homework and Creative Projects will be submitted through GitGrade and Git (set up in the Week 1). Assignments will not be accepted by email, FTP, instant message, posting them to a web server, or other turn-in methods without permission from your instructor or TA. It is your responsibility to ensure that your turn-in is successful and on time. The turn-in system will display the date and time of your last submission. If there is a question about your assignment turn-in, your instructor may ask you to display the turn in page to provide the original date and time of the turn in.

Each student starts with 2 free "late days" to use on either CP or HW throughout the quarter. Each late day which allows you to submit a program up to 24 hours late without a penalty. Once a student has used up all late days, each successive day that an assignment is late will result in deduction of 3 pts for HW, 1 pt for a CP. Regardless of how many late days you have, you may not submit a program after the "lock date" (usually 2 days after the regular due date, but occassionally earlier, depending on the schedule). Students will not be granted extensions without highly extenuating circumstances as decided by the instructor.

Re-grade Policy

Reflecting on feedback is one of the most valuable ways you can learn from your mistakes, and we encourage you to do so. If you have a question about a grade you received or if you feel the grade you received is incorrect, please email an instructor for an appointment to discuss the assignment and your grade in detail.

It is also possible for the graders to make mistakes. If that happens we certainly would like to correct the error. Please note the following:

  • When you request a regrade, we may look at the entire assessment, homework or creative project. Therefore, it is possible for your grade to go either up or down through this process.
  • Homeworks/projects: Regrade requests for Homework and Creative Project assignments must be submitted within two weeks of when the grade was returned to you. You must do two things in order to request a regrade of a homework or creative project (failure to do these two things may result in the regrade not happening):
    1. Reply to the code review comment that is prompting your request of the regrade. You can find your code review comments in your GitLab repository for that assignment.
    2. Send an email to the TA who graded the submission and CC the instructor that you are requesting a regrade. Include a link to the repository in your email and a written summary describing why your work should be reexamined.
  • Assessments: We will use Gradescope to grade exams and manage regrade requests. Via Gradescope, you should submit any requests separately for each problem with an explanation of why you want this problem regraded. The time limit for assessment regrade requests will be detailed in the email you receive from Gradescope.

Expectations

Communication

You, the student, are expected to...

  • Check the course website daily for announcements, and assignments.
  • Use our Piazza message board for discussions.
  • Read emails that are sent to the course list.
  • Respond to direct emails in a timely manner
  • ASK QUESTIONS!!! Particularly if part of an assignment or assessment is unclear.

The instructor will ...

  • Do the best to make assignments and assessments clear and accurate.
  • Do the best to respond to student emails within 24 hours on weekdays, 48 hours on weekends.

Attendance and Punctuality

You are expected to attend all classes this session. Participation is part of your grade, and you can't be graded on participation if you're not physically present. In addition, our goal is to incorporate active learning where appropriate in this class to support an engaging environment, giving you the opportunity to practice key problem-solving strategies, interact with peers, and ask questions of the instructor and TAs.

All students are expected to arrive on time to class except for in cases of emergency. If you do arrive late, please respect the learning of other students and take a seat in the back putting forth great effort to reduce distracting other students when you arrive. Do the best to catch up if we are in a direct instruction (lecture) portion, and ask for additional information and help if you need during lecture breaks, office hours, or WPL.

Technology

(Portions heavily borrowed from Professor Hacker)

Technology in the Classroom

This is a computer science class and somewhat obviously, we'll need to use technology in the classroom. However, it is to be used for adding value to your learning, not as a distraction. I understand that your phones connect you with your friends and family, but the classroom should be a place apart, however briefly, from the outside world. You will learn more, in short, if you can concentrate on the course while you’re in the course.

The following are some guidelines:

  • Phones, tablets and other communication devices: This should go without saying: your cell phone and other devices should not be a distraction in the classroom, whether it be in Lecture or Section.
  • Laptops: Research (this, and this, and this) has shown that you should really take notes with pen and paper. However, you may use a laptop to take notes during this class. In fact, we'll be needing our laptops quite a lot to do course work, test out theories, and even look up facts during lecture and section. However, in-class laptops also present temptations that many students find irresistible. You should not use a laptop during class to follow a game, use social media, play games, IM, respond to email, etc, or even do work for another class! Such activities not only distract you (meaning you will be less able to participate meaningfully in the class’ conversations), they also distract anyone around or behind you. If you seem distracted by what’s on your screen, we will ask you to put your laptop away if we are lecturing (and perhaps even during work time).

Technology "Woes"

Instructors have heard just about every excuse for why work is not turned in on time. Many of these excuses are technology focused, and even some of them really are out of the students' control. Professor Hacker says it best: Let’s face it: technology breaks. servers go down, transfers time out, files become corrupt. The list goes on and on. These are not considered emergencies. They are part of the normal production process. An issue you may have with technology is no excuse for late work. You need to protect yourself by managing your time and backing up your work.

As such we expect you will...

  • Have and use anti-virus software provided by the university.
  • Back up your work regularly (we strongly recommend investing 30 minutes to learn how and why to use Git commits effectively to back up your code versions).

and... we expect that if your computer breaks, get lost, has trouble, and so on you will:

  1. Look into university resources to get it fixed/replaced (if you need to purchase a new machine check into the University's short term loan program)
  2. Use the university lab resources through Odegaard or the Engineering lab to complete your homework for this class.

Getting Help

Outside of lectures and sections, there are a few ways to ask questions or discuss course issues:

  • Visit office hours during the posted times or email to make an appointment.
  • Post questions on the course discussion board. NOTE: Do not post any part of your homework solutions on the message board. This includes all or part of a solution to an assignment, including "just" a description of your solution to an assignment (such as pseudocode), even to ask what is wrong with it. Detailed debugging is best handled in office hours.
  • Email the instructor or your TA privately, particularly if you can not post to the discussion board.

Inclusion Statement

You all belong in this class and as such should expect to be treated by your classmates and the course staff with respect. It is our goal, as the course staff, to provide an interesting and challenging environment that is conducive to your learning. If any incident occurs that challenges this commitment to a supportive and inclusive environment, please let the instructor know so the issue can be addressed.

Expected Behavior

The Association for Computing Machinery (ACM) recently released guidelines of expected behavior as part of their Policy Against Harassment at ACM Activities. The ACM's description of expected behavior is as follows:

  • Exercise consideration and respect in your speech and actions.
  • Refrain from demeaning, discriminatory, or harrassing behavior and speech.
  • Be mindful of your surroundings and your fellow participants.
  • Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this policy, even if they seem inconsequential.

ACM's policy also has a detailed description of unacceptable behavior on the same page.

Academic Conduct

Integrity is a crucial part of your character and is essential for a successful career. We expect you to demonstrate integrity in CSE 154 and elsewhere.

The Paul G Allen School has an entire page on Academic Misconduct within the context of Computer Science, and the University of Washington has an entire page on how Academic Misconduct is handled on their Community Standards and Student Conduct Page. Please acquaint yourself with both of those pages, and in particular how academic misconduct will be reported to the University.

Your academic conduct in this course is evaluated in at least the four areas described in detail below.

Honesty in Communications

Individuals are expected to be honest and forthcoming in communications with TAs and the instructor.

Web Page Content

School Appropriateness of Content

Recall that one of our course policies is to engender an inclusive environment. As such it is important that you are thoughtful about what you choose to post on your page. Please make sure that the images and text you are using are “school appropriate” and follow the guidelines of expected behavior. If you have any questions, please do not hesitate to ask a TA or your instructor. Inappropriate work submitted may be ineligible for credit on that assignment.

All of the expressions of ideas in this class that are fixed in any tangible medium such as digital and physical documents are protected by copyright law as embodied in title 17 of the United States Code. These expressions include the work product of both: (1) your student colleagues (e.g., any assignments published here in the course environment or statements committed to text in a discussion forum); and, (2) your instructor (e.g., the syllabus, assignments, reading lists, and lectures). Within the constraints of "fair use," you may copy these copyrighted expressions for your personal intellectual use in support of your education here in the UW. Such fair use by you does not include further distribution by any means of copying, performance or presentation beyond the circle of your close acquaintances, student colleagues in this class and your family. If you have any questions regarding whether a use to which you wish to put one of these expressions violates the creator's copyright interests, please feel free to ask the instructor for guidance.

The essence of academic life revolves around respect not only for the ideas of others, but also their rights to those ideas. It is therefore essential that we take the utmost care that the ideas (and the expressions of those ideas) of others always be handled appropriately, and, where necessary, cited. When ideas or materials of others are used (particularly in your creative projects), they must be cited. The citation format is not that important - as long as the source material can be located and the citation verified, it's OK. In any situation, if you have a question, please feel free to ask.

You must have the right to publish any of the images, videos, text, or other media on your creative sites. This means you may use:

  • Media you have created or generated yourself (i.e. pictures you have created or taken yourself, text you have written yourself.)
  • Images that are in the public domain (something from Wikipedia), or something with a creative commons license that allows for reuse without explicit permission of the owner.
    • Creative Commons Kiwi is a really informative video on Creative Commons licensing.
    • Instructions on how to search for images that are fair use are here.
    • You must cite any works that you use that you did not generate yourself (although technically you only need to cite things that are CC Attribution) A handy site for knowing how to add your citations is here.

Collaboration Policies

As a teacher, it’s not my goal in life to read a class’ worth of programs on a topic that all basically look the same. My goal is to assess whether you understand the material that we’ve taught in class enough, and you demonstrate that to me through the work you do. I can not assess that if you are turning in someone else’s work.

- Dr. Tom Butler, Lakeside H.S.

Computer science education is odd in that we expect you to turn in work that you do completely independently when in the "real world" that’s not how it works at all. In the real world, co-workers collaborate, bounce ideas off each other, they look up parts of solutions on the internet. But in the "real world" the people doing the work have years of experience, they have proved themselves to their teachers, co-workers and bosses to where they are at that moment and most importantly, they know how to evaluate which of the solutions they are receiving is an appropriate one to solve the task at hand.

As your instructor, I need to be able to evaluate your work. Thus, unless otherwise specified all work in this and other CS classes must be your own. We realize you may look at other sources online to learn how to achieve new things, but we expect you to synthesize this information and not copy it directly. You should never copy (plagiarize) homework or code from another person in this school (past or present) or that you find online directly and submit it as your own work.

All programming assignments must be completed individually. You may not discuss homework assignments with other students, but you may (and are encouraged to) discuss related material each week, such as section exercises, lecture material, readings, etc. You may also discuss Creative Projects with other students, as long as the code you write is entirely your own, and discussion with students on Creative Projects should never involve details of how to code a solution. Specifically, you must abide by the following:

  • You may not work as a partner with another student on an assignment.
  • You may not show another student your solution to an assignment, nor look at their solution.
  • You may not have another person "walk through" an assignment, describe in detail how to solve it, or sit with you as you write it.
  • You may also not provide such help to another student. This includes current or former students, tutors, friends, TA’s, web site forums, or anyone else.
  • You may not use code directly from any external sources (including copying lecture/section material in programming assignments)
  • You may not post your homework solutions on a publicly accessible (non-password-protected) web server or Git repository, during the course or after it has been completed. Please see the course website for acceptable ways to show your work to others.
  • You may not look at or use prior solutions from any source.

Under our policy, a student who gives inappropriate help is equally guilty with one who receives it. Instead of providing such help to a classmate, point them to other class resources such as lecture examples, the WPL, or a TA. You must take reasonable steps to ensure that your work is not copied by others, such as making sure to log out or lock shared computers, not leaving printouts of your code in public places, and not emailing code to other students or posting it on the web or public forums.

We enforce our policies by running detection software during the quarter over all programs, including ones from past quarters. Please contact us if you are unsure whether a particular behavior falls within our policy.

Important reading: Some students at Lakeside HS wrote the Collaboration Guidelines for CS document in 2016 (you need to be logged in with your UW NetID to read this). This document has some clear examples of what to do and not to do and will be required reading for Computer Science courses.

Policies on Creative Projects

Creative Projects are unique in that students may look for outside resources for inspiration or assistance in accomplishing their goals. On occasion students may wish to use portions of sample code that has been obtained on our course website or others. In order to avoid academic misconduct for a Creative Project in CSE 154 you must:

  1. Ensure that substantive original work is submitted that can be evaluated by the course staff.
  2. Cite the ideas or materials of others that are used. The citation format is not that important - as long as the source material can be located and the citation verified (a url in a comment is generally fine), it's OK.
  3. Clearly indicate (e.g. with comments) which portions of your code are completely original and which are used or modified from external sources, if any code is used that builds off of/is inspired by external sources (e.g. adaption of an example CSE 154 exercise, online tutorial you find on Bootstrap or a JS library, etc.). We will only grade your original work. Note that solely changing identifier names or rearranging other source material is not considered your original work - see the examples of appropriate use below for details.

A good analogy to this is if you were writing a history paper: You can use quotes in your paper as long as you give attribution to the sources of the quote, but you can not write a history paper out of the quotes of others (particularly with no citations). Some examples of appropriate use:

  • A student closely follows a tutorial to understand a new concept in web development (e.g. CSS3 animations). The student cites the tutorial they used in the file header then substantially modifies the tutorial code to include what is specified for the Creative Project assignment, documenting which portions of the code are their own so TAs know which portions to grade (and to determine whether the material cited as being learned from the tutorial is sufficiently adapted to be considered the student’s own work).
  • A student is having difficulty styling their website. They look for a solution and find one on a site such as Stack Overflow. The student uses the code they find in their solution, documents that small piece of code was not their own with a comment that includes where it was found. The TAs will not use that portion of the code in grading.

Students with questions about any specific situation should ask the instructor for clarification.

Privacy

To support an academic environment of rigorous discussion and open expression of personal thoughts and feelings, we, as members of the academic community, must be committed to the inviolate right of privacy of our student and instructor colleagues. As a result, we must forego sharing personally identifiable information about any member of our community including information about the ideas they express, their families, lifestyles and their political and social affiliations. If you have any questions regarding whether a disclosure you wish to make regarding anyone in this course or in the university community violates that person's privacy interests, please feel free to ask the instructor for guidance.

Knowingly violating any of these principles of academic conduct, privacy or copyright may result in University disciplinary action under the Student Code of Conduct.

Wellness

It is very important to us that you take care of your mental wellness throughout the course. Everyone on the course staff is available to chat, and you can always attend office hours for a non-academic conversation if necessary.

Beyond the course staff, the University of Washington provides the following resources for mental health concerns. Your anonymity and privacy are protected.

  • Please reach out to the UW Counseling Center for any help and concerns related to mental health (including increased stress), available to all UW students at no cost.
  • Visit Hall Health Mental Health Clinic, which also provides support for concerns related to mental health.
  • If you are ever feeling uncomfortable and need to talk or are worried about someone close to you, it is highly recommended to visit the UW Heath and Wellness programs. They offer resources to students that can help.
  • If you're concerned for yourself or a friend, please call SafeCampus at (206) 685-7233.

If you have a temporary health condition or permanent disability (either mental health or physical health related), you should contact DRS at uwdrs@uw.edu if you have not already (see the accessibility section for more details). Additionally, if there is something we can do to make your experience better, please let us know.

Accessibility

The Disability Resources for Students (DRS) is a unit within the Division of Student Life and is dedicated to ensuring access and inclusion for all students with disabilities on the Seattle campus. They offer a wide range of services for students with disabilities that are individually designed and remove the need to reveal sensitive medical information to the course staff.

If you have a medical need for extensions of exam times or assignment deadlines, these will only be granted through official documentation from DRS. Browse to here to start the process as soon as possible to avoid delays.

Note: Students with accommodations are solely responsible for submitting the Alternative Testing Contract and scheduling the exams with DRS well in advance of the exam dates, following the deadine guidelines on the DRS website.