COMPSCI 326 Web Programming
Syllabus
- Description
- Textbooks and Material
- Course Objectives
- Course Assessment
- Course Policies and Other Requirements
- Course Structure
- Late Policy
- Communication
- Manners and Classroom Productivity
- Attendance
- Team Policies
- Academic Honesty
- Incompletes
- Schedule
- Week 01 Introduction
- Week 02 Environment and Version Control
- Week 03 Introduction to Bootstrap
- Week 04 Static UI Structure
- Week 05 Bootstrap Styling and Debugging
- Week 06 Introduction to React
- Week 07 Static React
- Week 08 Spring Recess
- Week 09 Data Modeling and Mock Databases
- Week 10 React State and Interactivity
- Week 11 Writing a Web Server
- Week 12 Database Integration
- Week 13 Authentication
- Week 14 Authentication
- Week 15 Pitch Party
Description
The World Wide Web was proposed originally as a collection of static documents inter-connected by hyperlinks. Today, the web has grown into a rich platform, built on a variety of protocols, standards, and programming languages, that aims to replace many of the services traditionally provided by a desktop operating system. Topics will include: producing dynamic content using a server-based language, content serving databases and XML documents, session state management, multi-tier web-based architectures, web security, and core technologies including HTTP, HTML5, CSS, JavaScript, and SQL will be emphasized. This course will also study concepts and technologies including AJAX, social networking, mashups, JavaScript libraries (e.g., jQuery), and web security. This course is hands-on and project-based; students will construct a substantial dynamic web application based on the concepts, technologies, and techniques presented during lecture. This course satisfies the IE Requirement. You must be a junior or senior to take this course. 3 credits.
Textbooks and Material
This course does not require any books. Because of the ever changing nature of the web we will instead rely upon currently material that is freely available on the web including software documentation, blog posts, tutorials, etc. Links to the reading will be providing on a weekly basis.
Course Objectives
- To learn the nature of the web.
- To understand the structure of the Internet and the Web.
- To study the general notion of protocols.
- To understand the TCP/IP protocol and understand its use in the web.
- To understand and apply the HyperText Transfer Protocol (HTTP).
- To study and apply the HyperText Markup Language (HTML).
- To explore the Document Object Model (DOM).
- To understand and apply asynchronous and event-based programming style.
- To study and apply the basics of Cascading Style Sheets (CSS).
- To learn and apply CSS frameworks such as Twitter Bootstrap.
- To learn and understand the fundamentals of the JavaScript programming language.
- To learn the client/server model.
- To understand stateless versus stateful protocols.
- To understand connectionless versus connection-oriented protocols.
- To explore server-side JavaScript programming.
- To explore client-side JavaScript programming.
- To understand and apply the Model-View-Controller (MVC) pattern.
- To understand server-side routes.
- To understand and apply session state.
- To investigate and apply document-oriented databases.
- To learn and apply data interchange languages (JSON/XML).
- To understand and apply RESTful APIs.
- To understand Single Page Apps (SPA).
When you leave this course you should be fully capable of implementing your own web application from scratch.
Course Assessment
Student knowledge of the course material will be assessed by the following categories:
- Semester Team Project (45%)
- Workshop Assignments (35%)
- Participation (20%)
The semester team project will begin early in the semester and will be submitted in total at the end of the semester. At various points during the semester your team will be required to submit aspects of your project to be reviewed. These checkpoint team project assignments will help guide you and your team towards a successful project. Individual contributions to your team project will be reviewed through commits to the version control system that your team will be required to use. These assignments will be submitted through a version control system that you will be required to use.
The workshop assignments will be reading/tutorial-based assignments that will help you as an individual understand the material being covered so you will be a capable contributor towards your team project. These assignments will be submitted through a version control system that you will be required to use.
Participation will be measured through the Readiness Assurance Process (RAP) and possibly I-clicker based questions during class. The RAP will follow a standard format (https://goo.gl/GoYElb) that helps you prepare for a class. In addition, it will give you and your team an opportunity to discuss questions and answers that will encourage you to explore the material and prepare you for workshops. We will drop two RAP and I-clicker scores at the end of the semester.
There is no opportunity for extra credit in this course. Unless otherwise specified, so do not ask! The rough breakdown of percentages and final grades for this course are A (93-100), A- (90-92), B+ (87-89), B (83-86), B- (80-82), C+ (77-79), C (73-76), C- (70-72), D+ (67-69), D (60-66), F (0-59). We do not scale grades.
Course Policies and Other Requirements
The work for this course will consist of:
- Attending and actively participating in class meetings.
- Submitting any in class exercises or I-clicker questions/polls.
- Several team project assignments.
- Many workshop assignments.
- Final submission of the team project.
- Presenting the team project at the end of the semester.
Course Structure
This course consists of approximately 24 class meetings. As this class gathers in a team-based learning (TBL) classroom it will not follow the standard lecture format. Rather, our time will be spent between presenting material and working on so called “workshops”. Each workshop is carefully designed to guide you through the material in the course. In addition, you will be expected to participate in class discussions and answer I-clicker polls and questions. You will be required to do assigned reading in preparation of the workshop in class and complete the workshop for submission outside of class. Much of the assigned reading is the actual workshop itself and is vital for your successful completion of the course. My primary role as the instructor will be to meet with groups during the workshops to assess your understanding of the workshop and to help guide you to successful completion.
Late Policy
Assignments that are submitted late will receive a 10% penalty for each 24-hour period after the due date of an assignment up to 72 hours (3 days). Assignments will not be accepted after the 72 hours. If there are extreme circumstances (medical) that prevent you from submitting an assignment on time a scanned note (e.g., doctor’s note) should be sent to the instructor of the course before or on the due date of an assignment. Late assignments because of other activities such as interviews, conferences, or other personal endeavors will not be accepted. It is your responsibility to manage your own time.
Communication
We will be using Piazza as the primary mode of communication in this course. You should direct all your questions about the course and its material to Piazza. The course staff will have assigned times during the week, Monday to Friday, to respond to your posts. Do not expect your posts to be answered over the weekend. Although we will try to answer as many questions as possible, it will often be the case that we can’t answer all of them. You are encouraged to answer questions posted by other students as well as posting useful information that you think other students would benefit from. We will look at your participation (number of instructor endorsed questions and answers) on Piazza at the end of the semester to determine tie-breaking grades (i.e., C- to a C, B+ to an A-).
Piazza provides support for “folders” for categorizing posts. There will be several folders of interest to you. We will provide folders that correspond to each workshop and startup assignment. In addition, we will include each of the following folders that you should use to post privately to instructors in the course:
- grade_disputes - used if you believe your grade on an assignment should be reviewed.
- team_trouble - used if there is an issue with a member(s) on your team.
- medical - used if you have a medical emergency and need to communicate to an instructor.
- incomplete – used if you are unable to complete the course during the scheduled semester.
If you post to any of these folders, please attach any relevant documentation or assignment submission information so that the course staff can provide an effective response to your request.
For all other requests or inquiries regarding the course not covered by the above Piazza folders you should email the instructor at [email protected].
Manners and Classroom Productivity
All students in this class are to be respected and discriminatory behavior of any kind, both in class and online, will not be tolerated. It is important to respect the instructor and their time in preparing material for the course as well as their time in responding to emails and Piazza posts. We expect everyone to participate in class. This means you should come prepared to participate and be actively engaged during the class meeting time. Please refrain from the use of cellphones and laptops during the class time unless explicitly told otherwise. If you are having trouble doing so it is the responsibility of the instructor to ask you to leave to maintain a productive learning environment.
Attendance
You should attend every lecture. If you miss a class, talk to a friend who was present, and check the course website for course announcements and schedule. You are responsible for everything we tell you in class, regardless of whether we post it to the course website. Your participation in class is an important contribution to the success of this course. You are responsible for asking questions, offering comments, helping other students, and completing any in-class exercises or I-clicker questions/polls.
Team Policies
The largest component of this course is the semester team project. The team formation will occur during the first couple of weeks of class. You should discuss topics such as prior experience, course background, goals for this course, workload, and schedule for the semester. Your team will be required to find blocks of time during the week to work on the team project to a successful completion. We expect all team members to contribute their fair share and we expect to assign the same grade to all members of the team. Members who contribute less may receive a lower grade on the team assignment; non-contributing members will receive a 0. In case of disputes the teaching staff may interview team members on the project design and implementation. We will also use the commit log in your team project version control system repository to evaluate activity. All team members will be required as part of the assessment of a team project assignment to actively commit to the team repository.
Managing team dynamics and using each team member’s time and talents effectively can be as difficult as solving the project. We are happy to offer advice on how to handle these issues. Be open and candid with your team about any potential problems early on so that your team can plan around such problems and not fall behind. A sure way to make your team upset at you is not finishing your part of the work at an agreed-upon deadline and not informing them about the problems early enough for them to help.
Academic Honesty
It is very important in all courses that you are honest in all the work that you complete. You can collaborate on your team project; however, workshop assignments must be completed by you alone. If you do not work alone on workshop assignments you are doing a disservice to yourself, the instructors for the course, the College of Information and Computer Sciences, the University of Massachusetts, and your future. We design our courses to provide you the necessary understanding and skill that will make you an excellent computer scientist. Assignments are designed to test your knowledge and understanding of the material. Plagiarism and academic honesty of any sort may seem like an easy way to solve an immediate problem (which it is not), however, it can have a substantial negative impact on your career as a computer science student. There are many computing jobs out there and many more people working hard to get those positions. If you do not know your stuff you will have a very difficult time finding a job. Please take this seriously.
We will carefully review your submissions automatically and manually to verify that “cheating” has not taken place. If you are suspected of plagiarism, we will follow an informal path to determine if academic dishonesty has taken place. If you are found guilty you will receive an F for the course and it will go on your permanent record at UMass. This will disrupt your schedule for completing courses and may lead to you not completing your degree in a timely fashion. You should carefully review the Academic Honesty Policy, Avoiding Plagiarism, and the Academic Honesty Flowchart to understand what academic honesty is, how you can avoid it, and the procedure we will follow if you are under suspicion.
Every assignment implicitly includes a “contract” that you sign virtually by submitting your assignment. By “signing” this contract you indicate that you have read all the documents on this website and any links to academic honesty associated with the university. Your signature indicates that you completely understand the policies in place and that you have not plagiarized.
Incompletes
An incomplete in this course will only be granted during the third to last week of the course (4/10/2017 – 4/14/2017) with a maximum of two assignments not completed. Incomplete requests will not be accepted before or after that time period. If you fail to contact the instructor during that time your request will not be granted. The incomplete period will be announced in class during this time.
Schedule
Below is the starting schedule for the course. There may be circumstances when the schedule must be changes or updated to ensure the best delivery of the material in this course. You will be responsible for referring to this schedule throughout the semester, updating your own calendar of important events and assignments, and referring to Moodle to ensure that you have the most up-to-date information and schedule. It is ultimately your responsibility to keep up with the course to guarantee your success.
Week 01 Introduction
01/23 – 01/27
Reading / Material:
- Syllabus (due Thursday by class)
- Readiness Assurance Process (RAP) (due Thursday by class)
- How Websites Work (due Thursday by class)
- Letters from Agile Students (due Thursday by class)
- Workshop 01: Environment Setup (released Wednesday, due next Tuesday by class)
- Screencast: Introduction to Git (released on Friday, due next Tuesday 01/31)
Lectures/Lab:
- Tuesday / Lec 01: Course Introduction
- Thursday / Lec 02: Agile Software Development Techniques
- RAP 01: Syllabus
Assignments:
- Workshop 01: Environment Setup (released on Wednesday, due next Friday 02/03)
Week 02 Environment and Version Control
01/30 – 02/03
Reading / Material:
- Workshop 01: Environment Setup (before class on Tuesday)
- Screencast: Introduction to Git (before class on Tuesday)
- Workshop 02: Git (before class on Thursday)
- Screencast: Introduction to Bootstrap (released on Friday, before class next Tuesday 02/07)
Lectures/Lab:
- Tuesday / Lec 03: Workshop 02: Git
- RAP 02: Git (Workshop 02: Git, screencast)
- Thursday / Lec 04: No Class
Assignments:
- Workshop 01: Environment Setup (due Friday 02/03)
- Workshop 02: Git (due next Friday 02/10)
Week 03 Introduction to Bootstrap
02/06 – 02/10
Reading / Material:
- HTML and CSS Slides
- Screencast: Introduction to Bootstrap (due Thursday)
- Workshop 03: HTML and Bootstrap (before class on Thursday)
- Bootstrap Book (before class on Thursday)
Additional Resources
- Mozilla Developer Network (HTML)
- Mozilla Developer Network (CSS)
- Bootstrap Website
- Bootstrap Examples
- Bootstrap 1 Column Grid Layout
- Bootstrap 2 Column Grid Layout
- Bootstrap Headings
- Bootstrap Headings with Secondary
- Bootstrap Tables
- Bootstrap List Groups
- Bootstrap Forms
- Bootstrap Navs
- An Extensive List of Examples…
Lectures/Lab:
- Lec 05: Mini HTML/CSS lecture / Startup 01: Startup Pitch
- Lec 06: Workshop 03: HTML and Bootstrap
- RAP 03: Workshop 03: HTML and Bootstrap
Assignments:
- Startup 01: Startup Pitch (due next Monday 02/13)
- Workshop 02: Git (due Friday 02/10)
- Workshop 03: HTML and Bootstrap (due next Friday 02/17)
Week 04 Static UI Structure
02/13 – 02/17
Reading / Material:
- Workshop 04: Facebook Static Structure (before class on Tuesday)
Lectures/Lab:
- Tuesday 02-21-2017
- Thursday 02-23-2017
- No Class (snow day)
Assignments:
- Startup 01: Startup Pitch (due this Monday 02/13)
- Startup 02: Static UI Mockup (due Monday 02/27)
- Workshop 03: HTML and Bootstrap (due this Friday 02/17)
- Workshop 04: Facebook Static Structure (due next Friday 02/24)
Week 05 Bootstrap Styling and Debugging
02/20 – 02/24
Reading / Material:
- Workshop 05: Facebook Feed and Styling (before class on Tuesday)
- JavaScript Tutorial (before class next Tuesday)
- Object Oriented JavaScript (before class next Tuesday)
Lectures/Lab:
- Tuesday 02-21-2017
- Thursday 02-23-2017
- No Class
Assignments:
- Workshop 03: HTML and Bootstrap Peer Review (opens Mon 02/20 @ 6pm, closes Thu 02/23 @ 6pm)
- Workshop 04: Facebook Static Structure (due Fri 02/24)
- Workshop 05: Facebook Feed and Styling (released Mon 02/20 @ 6pm, due next Fri 03/03 @ 6pm)
- Workshop 05: Facebook Feed and Styling Peer Review (opens Mon 03/06 @ 6pm, closes Thu 03/09 @ 6pm)
- Startup 02: Static UI Mockup (due next Mon 02/27)
Week 06 Introduction to React
02/27 – 03/03
Reading/Material:
- Mozilla JavaScript Guide (due by Friday)
- JavaScript Higher-Order Functions
- JavaScript Map
- JavaScript Closures
- Learning React.js: Getting Started and Concepts (due by class on Thursday)
- Getting Started & Understanding React
Lectures/Lab:
- Tuesday 02-28-2017
- Thursday 03-02-2017
Assignments:
- Startup 02: Static UI Mockup (due Monday 02/27)
- Workshop 05: Facebook Feed and Styling (due Friday 03/03)
Week 07 Static React
03/06 – 03/10
Reading/Material:
- Workshop 06: JavaScript, Static React, and Facebook (before class on Tuesday)
Lectures/Lab:
- Tuesday 03-07-2017
- Thursday 03-09-2017
- Startup 03 RAP
- Startup 03: Static React Mockups
Assignments:
- Workshop 06: JavaScript, Static React, and Facebook (due Friday 03/24)
- Startup 03: Static React Mockups (due Tuesday 03/28)
- CATME Team Peer Evaluations (due Friday 03/10)
Week 08 Spring Recess
03/13 – 03/17
No Class
Week 09 Data Modeling and Mock Databases
03/20 – 03/24
Reading/Material:
- Workshop 07: Data Modeling and Mock Databases (before class on Tuesday)
Lectures/Lab:
- Tuesday 03-21-2017
- Thursday 03-23-2017
Assignments:
- Workshop 06: JavaScript, Static React, and Facebook (due this Friday 03/24)
- Workshop 07: Data Modeling and Mock Databases (due next Friday 03/31)
- Startup 03: Static React Mockups (due next Tuesday 03/28)
- Startup 04: ER Diagrams (due Monday 04/03)
Week 10 React State and Interactivity
03/27 – 03/31
Reading/Material:
- React Tutorial
- Components, the war horses of React
- The Component Lifecycle Documentation
- React Component’s Lifecycle
- React State vs Props (video)
- Data Changes in React (video)
- Component Lifecycle Part 1 (video)
- Component Lifecycle Part 2 (video)
- React Router Params and Queries (video)
- Workshop 08: Supporting Interaction with React (before class on Tuesday)
Lectures/Lab:
- Tuesday 03-28-2017
- Thursday 03-30-2017
- React Interactivity and Component Life Cycle / slides
Assignments:
- Workshops
- Startups
- Startup 03: Static React Mockups (due)
- Startup 05: Dynamic React Mockups (released)
- Peer Review
Week 11 Writing a Web Server
04/03 – 04/07
Reading/Material:
- Anatomy of an HTTP Transaction
- Node Reference API
- Node HTTP Library
- Node URL Library
- Node.js Interview Questions
- Workshop 09: Writing a Web Server (before class on Thursday)
- Node.js and HTTP Servers (screencast) (before class on Thursday)
Lectures/Lab:
- Tuesday 04-04-2017
- Workshop 08 RAP
- Startup 05: Dynamic React Mockups
- Thursday 04-06-2017
- Workshop 09 RAP
- Workshop 09: Writing a Web Server
Assignments:
- Workshops
- Startups
- Startup 04: ER Diagrams (due)
- Peer Review
- Workshop 06: JavaScript, Static React, and Facebook Peer Review (due)
- Workshop 07: Data Modeling and Mock Databases Peer Review (released)
Week 12 Database Integration
04/10 – 04/14
Reading/Material:
- Workshop 10: Adding a Database (before class on Tuesday)
- Document-Oriented Databases
- Introduction to Document Databases
- MongoDB Documentations
Lectures/Lab:
- Tuesday 04-11-2017
- Thursday 04-13-2017
Assignments:
- Workshops
- Workshop 09: Writing a Web Server (due)
- Workshop 10: Adding a Database (released)
- Startups
- Startup 05: Dynamic React Mockups (due)
- Startup 06: Adding a Web Server (released)
- Peer Review
Week 13 Authentication
04/17 – 04/21
Reading/Material:
- Workshop 11: Authentication (before class on Thursday)
Lectures/Lab:
- Tuesday: No Class / Patriot’s Day
- Startup 07: Adding a Database
Assignments:
- Workshops
- Workshop 10: Adding a Database (due)
- Workshop 11: Authentication (released)
- Startups
- Startup 06: Adding a Web Server (due)
- Startup 07: Adding a Database (released)
- Peer Review
- Workshop 08: Supporting Interaction with React (released)
- Workshop 09: Writing a Web Server (released)
Week 14 Authentication
04/24 – 04/28
Reading/Material:
- None
Lectures/Lab:
- Lec 22: Startup Final Work / Authentication
- Lec 23: Startup Final Work / Authentication
Assignments:
- Workshops
- Workshop 11: Authentication (due)
- Startups
- Startup 07: Adding a Database (due)
- Peer Review
- Workshop 08: Supporting Interaction with React (due)
- Workshop 09: Writing a Web Server (due)
- Workshop 10: Adding a Database (released)
- Workshop 11: Authentication (released)
Week 15 Pitch Party
05/01 – 05/05
Reading/Material:
- None
Lectures/Lab:
- Lec 24: Pitch Party
Assignments:
- Startups
- Final Startup Submission (due)
- Peer Review
- Workshop 10: Adding a Database (due)
- Workshop 11: Authentication (due)