User:Vtaylor/CIS89D

2023.1.10 . CIS89D original outline DeAnza . /copy original/ . /notes/ . Foothill CS 77 . /Learn more .../

De Anza logo Credit - Degree Applicable Effective Quarter: Fall 2020

I. Catalog Information

CIS 89D Web Application Development 4 1/2 Unit(s)

Advisory: EWRT 211 and READ 211, or ESL 272 and 273;
 * CIS 89A and 89C.

Lec Hrs: 48.00 Lab Hrs: 18.00 Out of Class Hrs: 96.00 Total Student Learning Hrs: 162.00

Design and develop web-based applications that deliver features and functionality using web client and server technologies.

Student Learning Outcome Statements (SLO)
 * Create data-driven web applications that work with client or server storage systems.
 * Create web pages using Hypertext Markup Language (HTML), Cascading Style Sheets (CSS), JavaScript, and the Document Object Model (DOM), and demonstrate how they interact together within a web document using techniques that are responsive to differing screen sizes.
 * Create Web applications that deliver similar features and functions previously associated with desktop applications through the use of libraries or frameworks.
 * Read, analyze and explain intermediate level Web Applications.

II. Course Objectives
 * -- main points in description

III. Essential Student Materials None

IV. Essential College Facilities None

V. Expanded Description: Content and Form
A.	Explore history, tags, Application Programming Interfaces (API) and Web Applications
 * History of HTML, CSS, JavaScript, Web Applications
 * HTML5 Features.
 * Structural, Content and Application-focused Tags

B.	Explore creating, structuring and styling HTML documents.
 * Structure a user interface with HTML, and include styles with CSS
 * Content models.
 * Structure of basic page, top level elements and interior content.
 * Use Cascading Style Sheets (CSS) to enhance and style Web Applications.
 * Construct basic forms using HyperText Markup Language.
 * Embed Audio and Video in applications.
 * Use responsive web design for different screen sizes.

C. Evaluate client /middleware/ server development tools.
 * Client-side - frontend, HTML, CSS, JavaScript, JavaScript frameworks - Visual Studio Code, Sublime
 * Server-side - backend, hosting and web server, data storage, frameworks, programming language - Python, PHP
 * Libraries and frameworks - Django, Ruby on Rails, Angular, REACT, Bootstrap, Chrome DevTools

D, Create data-driven web applications.
 * Client-side programming - jQuery, JavaScript,
 * Use web API
 * HTML5 controls in web applications
 * Offline applications overview.
 * Client / server linking - AJAX, JavaScript objects, JSON
 * Server-side programming - Node.js
 * Uploading to web host

E. Data store
 * Data caching and storage for web applications - Redis, MongoDB, SQL, SQLite, NoSQL

F. Use security techniques.
 * SSL/TLS, HTTPS, SSH, SFTP
 * Sessions, cookies, and web storage API
 * Single sign on (such as via OAuth)

G. Understand best practices for web application development
 * Basic tips for writing maintainable code on both the client and server
 * Set up a basic workflow with a text editor, version control system, and web browser
 * Checking document outlines and ensuring cross browser structure.
 * Compatibility Testing using browsers and Mobile Devices.
 * Discuss and analyze professional ethics for web applications

== VI. Assignments ==
 * A.	Required reading from the text.
 * B.	Programs: 8-12 programming homework assignments pertaining to the topics listed in X as Lab Topics, including several of more than 50 lines and several which use 3 or more functions.

VII. Methods of Instruction
 * Lecture including discussion of assigned reading
 * Demonstration of developing solutions to programming problems,
 * In-class review as test preparation
 * Discussion of solutions to assigned homework, lab assignment projects, and test problems,
 * Collaborative projects,
 * On-line tutorial

VIII. Methods of Evaluating Objectives
 * Formative exercises, projects, and quizzes requiring students to write code applying covered technology topics
 * Evaluation of programming assignments based on correctness, documentation, code quality, and test plan executions


 * One or two midterm examinations requiring students to write code applying topics covered in the lectures and reading.
 * Final examination requiring students to write code applying topics covered in the lectures,reading, and programming assignments.

IX. Texts and Supporting References

A.	Representative Text(s) and Other Materials


 * Boduch, A., Decks, R. React and React Native: Build cross-platform JavaScript applications with native power for the web, desktop, and mobile, 4th Edition 4th ed. Edition. 2022. ISBN 1803231289


 * Purewal, Semmy. Learning Web App Development: Build Quickly with Proven JavaScript Techniques 1st Edition. 2014. ISBN ‎ 9781449370190


 * Boduch, Adam, and Roy Derks. React and React Native: A Complete Hands-on Guide to Modern Web and Mobile Development with React.js, 3rd ed.. 2020.


 * Robbins, Jennifer. Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics 5th Edition. 2018. ISBN 1491960205


 * Subramanian, Vasan. Pro Mern Stack: Full Stack Web App Development with Mongo, Express, React, and Node. 2019. Types and/or Examples of Required Reading, Writing, and Outside of Class Assignments

== X. Lab Topics ==

The following are the general lab topics that must be covered. Any following lab topic may be separated and/or combined with any other lab topic(s).


 * Semantic web
 * HyperText Markup Language (HTML) documents
 * Basic forms using HTML
 * Web applications
 * Tags and Application Programming Interfaces (API) to build web applications
 * Cascading Style Sheets (CSS) to enhance and style web applications
 * Front end and media technology in web applications
 * Audio and video media
 * 2-D and/or 3-D web API(s)
 * Widgets and/or animation/effects
 * Middleware and server technology
 * Web servers and data servers
 * APIs and controllers
 * Front and back end data storage and modeling for web applications
 * Databases
 * Caching and offline storage
 * Native apps
 * Mobile apps
 * Desktop apps

Labs will typically be structured as follows:
 * Read and run the code that utilizes the associated lab topic(s)
 * Create a web application using the associated lab topic(s)
 * Discuss design and implementation tradeoffs of related techniques and tools