CS471: Special Topics: Web and Mobile Development

[ Course Info | Course Objectives and Goals | Resources | Instructors | Textbooks | Schedule | Grading | Course Policies | Course Details ]

REportal Metrics
TAP Class Diagram
SimBaby Wireless Respiratory Analysis with the Smart Fabric Bellyband
Welcome to CS471! In this course, we will explore the ubiquitous nature of web services for communications and data exchange, and techniques to harness this ubiquitous data source to improve the world around us.

Course Info

  • Course Number and Title: CS471 - Web and Mobile Development
    • Section A
  • Credit Hours: 4 Semester Hours
    • Credit Hours include "contact time" in the classroom and outside course work. It is expected that the sum of classroom time and outside course work time should add up to three times the listed credit hours per week.
  • Course Webpage: https://BillJr99.github.io/Ursinus-WebMobile-Fall2020

  • LMS (Canvas): Canvas

  • Course Group Chat Link: Join our class chat channel here!

  • Course Calendar: Import the course calendar into your favorite calendar app with this link!

  • Class Notebook: Access our class notebook here! If you are unable to access the notebook, please let me know and I will share the document with your account.

  • Help Room on Microsoft Teams: Click Here to Go to the Teams Help Room Channel on Microsoft Teams.

  • Academic Term: Fall 2020-21

  • Term Start and End: through

  • Course Prerequisites: CS174 Object Oriented Programming

  • Class Meeting Locations and Times:
    • Section A:
      • s from 1:30 PM to 2:20 PM in Tent 7
      • s from 1:30 PM to 2:20 PM in Tent 7
      • s from 1:30 PM to 2:20 PM in Tent 7
  • Zoom Link for Class Sessions (see Canvas for password and session recordings):
  • Course Description: This course explores web service architectures through the lens of ubiquitous computing sensors and mobile devices. Authentication models such as SAML and OAUTH will be used to integrate well-known web service interfaces. Students will be able to expose services as well-defined GraphQL or RESTful service endpoints, and be able to utilize the endpoints of existing services. Students will collaboratively propose, develop, and present projects with defined broader impacts.

Course Learning Objectives and Learning Goals

Learning Objectives

  1. Design a web-services architecture that incorporates and generalizes a variety of stakeholder needs, exposed via a well-defined interface of data and functionality.
  2. Implement a robust web-service software system server and client that is tolerant of variations in user input and adherent to defined output standards.
  3. Implement an appropriate authentication model using standards such as SAML and OAuth
  4. To design and implement a web-based front-end software system that promotes accessibility and usability by a variety of stakeholders.

Learning Goals

  1. Develop web-enabled software that integrates a variety of data sources in a way that enables new functionality greater than the sum of its parts.

The Questions

Throughout the course, we will be thematically guided by the Ursinus Questions:
  • What should matter to me?
  • How should we live together?
  • How can we understand the world?
  • What will I do?

Resources

Accommodations

Ursinus College and your instructor are committed to ensuring equal access and providing reasonable accommodations for all students. If you have, or think you have, a disability in any area such as, mental health, attention, learning, chronic health, sensory, or physical, please contact the Director of Disability Services.

Ursinus College is committed to ensuring equal access and providing reasonable accommodations for students with disabilities. The Institute for Student Success works with students who have any kind of disability, whether apparent or non-apparent, learning, emotional, physical, or cognitive, and need accommodations to increase their access to this learning environment. I encourage you to reach out to the Director of Disability Services, Dr. Dolly Singley to discuss about supports and accommodations you may need. Dolly’s office is located in the Institute for Student Success in Lower Wismer. You can schedule a meeting with Dolly by using this link: https://dsingley.youcanbook.me/, by emailing her at dsingley@ursinus.edu or by calling her at 1-484-762-4329. Students can also review accessibility and disabilities services online at https://www.ursinus.edu/offices/institute-for-student-success/students-with-disabilities/.

Let's Talk

Let's Talk Poster
Mental health care is increasingly recognized as a crucial service for the undergraduate population. To decrease the barrier for entry, Ursinus college will be providing additional drop-in hours during the semester. Please refer to the flyer below for the awesome program. I am happy to discuss this in drop-in / office hours in more detail. Additionally, please know that the Wellness Center is available for students and includes a crisis hour at 2-3pm each weekday.

Peer Coaching

The Institute for Student Success offers Peer Coaching that you can sign up for anytime.

Center for Writing and Speaking

The Center for Writing and Speaking is available for one-on-one and group appointments to advise you as you revise your writing projects and presentations. They will even support your personal projects and extracurricular activities! Please feel free and encouraged to review any and all writing and speaking work from this class with them.

Bear2Bear

The Bear2Bear fund is a student emergency fund established to assist with temporary emergency financial circumstances.

Help Room

The Math Help Room (Pfahler 102) is a great place to go if you are struggling and is managed by the Institute for Student Success. Students who have previously taken the course will be there to help you with the assignments.

Course Instructors and Drop-In / Office Hours

Role Name and Contact Information Drop-In / Office Hours
Professor William Mongan
Picture of Professor William Mongan

Phone: 610-409-3410
E-Mail: billmongan@gmail.com
Office: Pfahler Hall 101L
  • s from 10:00 AM to 10:50 AM in Virtual Office Hours on Microsoft Teams
  • s from 12:30 PM to 1:20 PM in Virtual Office Hours on Microsoft Teams
  • s from 7:00 PM to 8:00 PM in Virtual Office Hours on Microsoft Teams
  • s from 10:00 AM to 10:50 AM in Virtual Office Hours on Microsoft Teams
  • s from 10:00 AM to 10:50 AM in Virtual Office Hours on Microsoft Teams
  • s from 12:30 PM to 1:20 PM in Virtual Office Hours on Microsoft Teams
  • s from 7:00 PM to 8:00 PM in Virtual Office Hours on Microsoft Teams
  • s from 10:00 AM to 10:50 AM in Virtual Office Hours on Microsoft Teams
  • s from 12:30 PM to 1:20 PM in Networking Virtual Office Hours on Microsoft Teams
Drop-In / office hours are certainly available for asking questions about the course, about your assignments, and other academic questions you may have. You do not need an appointment to come to drop-in hours, and you do not even need to have an agenda or set questions! You can come and just have a general chat about things with us. If you cannot make it to drop-in hours, you can contact us for an appointment as well. Drop-In hours are also for non-instructional topics of conversation: you can talk with me about your adjustments to college life, your long-term goals, advice about your academic journey, and most other things. If I don't know the answer to something or if I don't feel I am the best person to offer you advice about it, I will be happy to help connect you with the right people. In other words, don't be afraid to ask me things that you think are "off topic" - I love teaching because I love to be a resource for you on your journey. I'll be happy to see you there.

Textbooks

Required? Title Author Edition ISBN Freely Available?
Required
Picture of the cover of the book entitled RESTful Web Services

RESTful Web Services
Leonard Richardson and Sam Ruby First Edition 978-0-596-52926-0 Online Version
Recommended / Supplemental
Picture of the cover of the book entitled RESTful Java with JAX-RS 2.0

RESTful Java with JAX-RS 2.0
Bill Burke First Edition 978-1449361341
Please Note: The cost of the book may be prohibitive for some students, so please note that renting the book is much cheaper. Please communicate as early as possible if you are having trouble obtaining the book, rather than keeping this to yourself, so that we can work on a solution together. If you are experiencing a financial hardship, please consider the Bear2Bear Emergency Fund for temporary relief applications.

Course Schedule

Week Date Title Readings Deliverables
Week 1 Course Sneak Preview
Week 1 Anatomy of an HTTP Request with Wireshark
Week 1 Anatomy of an HTTP Request with Wireshark
Week 2 TCP Socket Programming in Python
Week 2 Anatomy of a RESTful Call: JSON and CRUD
Week 2 Web Services
Week 3 Web Services
Week 3 Web Services
Week 3 RESTful Web Services, Body Parameters, and Headers
Week 4 Introduction to node.js and JavaScript: Asynchronous Programming and Promises
Week 4 Introduction to node.js and JavaScript: Asynchronous Programming and Promises
Week 4 The Peruvian Coin Flip
Week 5 HTTP Client and Server Workshop
Week 5 SAML and OAuth
Week 5 Interacting with Existing Services through Web Service Clients with node.js
Week 6 Progressive Web Apps (PWA) for Cross Platform Development
Week 6 Interface Contracts and GraphQL
Week 6 Web Service Client and Frontend Workshop
Week 7 Creating Your Own Web Services with node.js
  • RESTful Web Services Chapters 5 and 6
Week 7 Creating Your Own Web Services with node.js
Week 7 CORS
Week 8 Databases
Week 8 Databases
Week 8 Web Services Workshop
Week 9 NoSQL
Week 9 NoSQL
Week 9 Web Services with Data Stores
  • RESTful Web Services Chapter 7
Week 10 Server-Side Authentication Models
  • Participation: First Notebook Check
Week 10 Digital Certificates through Public Key Cryptosystems
Week 10 Secure Sockets Layer (SSL)
Week 11 HTML5 and Front End and Mobile Development
Week 11 CSS
Week 11 Accessibility
Week 12 Final Project Brainstorm
Week 13 Mobile Application Development
Week 13 Progressive Web Apps (PWA) for Cross Platform Development
Week 13 Caches
Week 14 Data Services at Scale
Week 14 Open-Source Software Development
  • Participation: Second Notebook Check
Week 14 Final Project Workshopping
Week 15 Final Project Presentations (Tuesday 12/15)
Please note the following holidays this term:
Please note the following key calendar dates:
  • Add Deadline:
  • Drop with a W Deadline:
  • 2020 Transition to Remote Learning after Thanksgiving Break:
  • Designated Thursday Schedule:
  • Designated Friday Schedule:

Grade Breakdown

Letter grades will be assigned on the scale below at the end of the course. "Grade grubbing" is not conducive to professional practice; every assignment has or will have very precise expectations and point breakdowns, and I will evaluate submitted work carefully according to these standards. I will also return assignments in a timely manner, and the running weighted grades will be updated frequently. Therefore, I expect a commensurate level of respect from you. In sum, you should know where you stand at all times, there will be plenty of opportunities to improve your standing, and there should be no surprises at the end of the course.

Grading Table

Item Weight
Programming Assignments 35%
Labs 35%
Final Project 20%
Class Participation 10%

Letter Grades

Letter Grade Range
A+ 96.9-100
A 93-96.89
A- 89.5-92.99
B+ 87-89.49
B 83-86.99
B- 79.5-82.99
C+ 77-79.49
C 73-76.99
C- 69.5-72.99
D+ 67-69.49
D 63-66.99
D- 59.5-62.99
F 0-59.49

Course Policies

Netiquette in Online Discussion Boards infographic
Courtesy of the Online Education Blog of Touro College.

Classroom Environment and Inclusivity Standards

My goal is to foster a environment in which students across all axes of diversity feel welcome and valued, both by me and by their peers. Axes of diversity include, but are not limited to, age, background, beliefs, race, ethnicity, gender/gender identity/gender expression (please feel free to tell me in person or over e-mail which pronouns I should use), national origin, religious affiliation, and sexual orientation. Discrimination of any form will not be tolerated. Furthermore, I want all students to feel comfortable expressing their opinions or confusion at any point in the course, as long as they do so respectfully. As I will stress over and over, being confused is an important part of the process of learning computer science. Therefore, I will not tolerate any form of put-downs by one student towards another about their confusion or progress in the class. Learning computer science and struggling to grow is not always comfortable, but I want it to feel safe. Much of this material is probably new to everyone, and those with some prior experience likely recall a time when it was new to them, too. Remember that this is not a competition: helping others to grow is itself a richly rewarding professional development opportunity. In order to allow for equitable access to class for students who may be attend and participating remotely, I may record our class sessions. These recordings will only be available on our Canvas site. I will announce that we are recording in the beginning of any classes of this kind; out of respect and privacy for me and all class members, please do not download, copy, or redistribute class recordings.

Online Communication Policy

Since this is a class-wide communication, the following rules apply to message groups and electronic communications:
  1. Students are expected to be respectful and mindful of the classroom environment and inclusivity standards.
  2. They are equally applicable to a virtual environment as they are in class.
  3. Students are not permitted to share direct answers or questions which might completely give away answers to any homework problems or labs publicly on Microsoft Teams. When in doubt, please send me a direct message there.
  4. I will attempt to answer questions real time during my virtual drop-in / office hours. Otherwise, I will make every attempt to respond within 24 hours. Of course, students can and should still respond to each other outside of these intervals, when appropriate!
  5. Students may ask anonymous questions.

Course Management Systems: Canvas, Microsoft Teams, GroupMe

We will be using Canvas to post all of the grades. For the most part, we will submit work using professional standard tools for software collaboration (called git) that we will discuss as a class. I will let you know this in assignment directions, so you'll always know how to submit work. For all other discussions and announcements for the course, we will be using OneNote through Microsoft Teams, which is linked to your Office suite through Ursinus, so you are automatically enrolled. There you can ask and answer questions about the lecture content and assignments. Additionally, I have created a GroupMe chat which is tied to my mobile device for real-time questions and discussions.

Since it is likely that students will have similar questions, it is much more efficient for me to answer them there so the whole class can see the answer, so it is possible that I will ask you to re-send a question on the forum that I get in e-mail (please do not be shy or take it personally if I do so; it means it was a great question and worth sharing with everyone!). There will be an anonymous option at the top of every chatroom to help facilitate this.

Collaboration Policy and Academic Integrity Policy

Communication between students is allowed (and encouraged!), but it is expected that every student's code or writeups will be completely distinct! Please do not copy code off of the Internet (repurposing code from the Internet will probably make it harder anyway because the assignments are so specialized). Please cite any sources in addition to materials linked from the course website that you used to help in crafting your code and completing the assignment.

See the Course Management page in the Faculty Handbook for an explanation of college policies on plagiarism and other academic honesty violations.

To encourage collaboration, students will be allowed to choose one or more "buddies" to work "near" during the assignment. Students are still expected to submit their own solutions, but they are allowed to provide substantial help to each other, and even to look at each others' code during the process. Students should indicate their buddies in the README upon assignment submission. Please let me know if you would like a buddy but are having trouble finding one.

Below is a table spelling out in more detail when and how you are allowed to share code with people (table style cribbed from Princeton CS 126).

Please Note: The terms "exposing" and "viewing" exclude sending or ingesting electronically, which would be considered copying. Exposing and viewing are normally done in the context of in-person working or in the help room. In addition, "Other People" includes internet sources!
Your Buddy Course Staff Course Grads Classmates Others
Discuss Concepts With OK OK OK OK OK
Acknowledge Collaboration With OK OK OK OK OK
Expose Your Code/Solutions To ALL EXCEPT
Assignments
OK OK In-Class
Exercises
NO
View the Code/Solutions Of ALL EXCEPT
Assignments
OK NO In-Class
Exercises
NO
Copy Code/Solutions From NO NO NO NO NO

If the work you submit appears to be copied from previous work or the collaboration policy has been violated in any way according to the College Academic Honesty policy, regardless of intent, then it may be an academic dishonesty case, and it will be referred to the Associate Dean for Academic Affairs. I am required to make this report in every occurrence, so it is best to speak with me first if there are any questions about the policy or expectations. You should feel free to have these conversations with me anytime prior to making your submission without fear of penalty.

Flexible Submission Policy

In the absence of accommodations arranged in advance with the instructor or college, all assignments are due at 11:59PM Eastern Time on the date(s) stated on the schedule. No prior permission is required for flexible submission, which allows up to 2 days to be used during the semester by each student. For example, one deliverable may be submitted 2 days late, or two deliverables may each be submitted 1 day late. After these 2 days are utilized, subsequent deliverables may be submitted after the deadline, awarding up to: 95% credit for work submitted up to 6 hours past the deadline, 90% credit for work submitted up to 24 hours past the deadline, 80% credit for work submitted up to 48 hours past the deadline, and 50% credit for work submitted up to 7 days past the deadline. To exercise flexible submission, please e-mail the instructor after submitting your deliverable, indicating: a) which deliverable you have submitted past the deadline, and b) how many flex days you wish to use (if any).

Title IX

Title IX is a federal law, under which it is prohibited to discriminate, harass, or commit misconduct on the basis of gender or sex. The Title IX Coordinator is available to receive inquiries and to investigate allegations in this regard.

Inclement Weather and Class Cancellation Policy

In the event that the College closes due to inclement weather or other circumstances, our in-person class sessions, drop-in / office hours, labs, or other meetings will not be held. I will contact you regarding our plan with regard to rescheduling the class or the material, any assignments that are outstanding, and how we can move forward with the material (for example, any readings or remote discussions that we can apply). If necessary, I may schedule online virtual sessions in lieu of class sessions, and will contact you with information about how to participate in those. I will communicate this plan to the department so that it can be posted on my office door if it is feasible to do so. This policy and procedure will also apply in the event that the College remains open but travel conditions are hazardous or not otherwise conducive to holding class as normal. Should another exigent circumstance arise (for example, illness), I will follow this policy and procedure as well.

Miscellaneous Policies

  • COVID-19 Requirements/Policy: For in person sessions, you are required to wear a mask and you will be asked to leave the classroom if you are not properly wearing a mask. If you forget your face mask, disposable masks will be available in all buildings. DO NOT attend class if you do not feel well; you are always welcome to attend remotely, but just contact me if you are unable to attend class at all. In the event our course must go fully remote, we will continue towards achieving the course learning goals, but there may be adjustments to the schedule, content, assessments etc. My drop-in / office hours will mainly be conducted remotely to maintain physical distancing.

Student Perception of Teaching Questionnaire (SPTQ)

I will be soliciting student feedback through the SPTQ and possibly through other forms of commentary. This feedback greatly assists me and the department as we develop our courses and overall curriculum for this program. This course has benefitted from the feedback of those students who took the course before you, and your feedback will help maintain and improve the course for those to follow. I strongly encourage you to participate in this important and valuable process.

Syllabus Subject to Change

I will do my best to provide all relevant information about the course on this syllabus. Sometimes, exigent circumstances, the pace of the class, or other circumstances will warrant minor revisions to the syllabus. For example, inclement weather or other campus closure might affect the course schedule and assignment deadlines; in addition, I may find that the class benefits from spending more time on a particular topic, and adjust accordingly. Although I try to avoid rescheduling drop-in / office hours, it may become necessary from time to time to accommodate other events in the College. Should any revisions be necessary, I commit to making any revisions in my estimation of the best interests of the class, and commit to communicating those changes to you as soon as I make them.

Course Details

Welcome!