Web Application Development

    CIS 526 Course Textbook

    Nathan Bean

    Kansas State University

    © 2020

    Creative Commons License
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

    6.0.0

    Last modified by: Russell Feldhausen Aug 10, 2023

    CIS 526 | CC 515
    Web Development

    • 0. Course Information
      • 1.Course Introduction
      • 2.Navigating Canvas
      • 3.Where to Find Help
      • 4.What You'll Learn
      • 5.Course Textbooks
      • 6.Spring 2025 Syllabus
    • 1. The Document Object Model
      • 1. Introduction
      • 2. Document Object Model
      • 3. CSS and the DOM
      • 4. JavaScript and the DOM
      • 5. JavaScript Events
      • 6. The DOM and External Resource Loading
      • 7. Summary
    • 2. Hyper-Text Transfer Protocol
      • 1. Introduction
      • 2. Browser Requests
      • 3. Request Format
      • 4. Request Methods
      • 5. URIs and URLs
      • 6. Request Headers
      • 7. Request Body
      • 8. Response Format
      • 9. Status Codes
      • 10. Response Headers
      • 11. Response Body
      • 12. HTTP 2.0
      • 13. Statelessness and Scaling
      • 14. Summary
    • 3. Asynchronous JavaScript
      • 1.Introduction
      • 2. Concurrency Approaches
      • 3. Concurrency Challenges
      • 4. Asynchronous Programming
      • 5. Web Workers
      • 6. Callbacks
      • 7. Promises
      • 8. Async and Await
      • 9. Summary
    • 4. Introduction to Node
      • 1. Introduction
      • 2. Event Loop & Console
      • 3. Asynchronous Functions
      • 4. Modules
      • 5. Packages
      • 6. Dependencies
      • 7. Git
      • 8. Summary
    • 5. Basic Web Servers
      • 1. Introduction
      • 2. HTTP in Node
      • 3. Request Handling
      • 4. The Importance of Being Async
      • 5. Caching for the Win
      • 6. Index Pages
      • 7. Partial Downloads
    • 6. Dynamic Web Servers
      • 1. Introduction
      • 2. CGI Scripts
      • 3. Server Pages
      • 4. Custom Servers
      • 5. Query and Hash Strings
      • 6. Form Encoding
      • 7. Request Body
      • 8. Cookies
      • 9. Sessions
      • 10. Template Rendering
      • 11. Script Injection
      • 12. Full Stack Development
      • 13. Summary
    • 7. Persistent Storage
      • 1. Introduction
      • 2. Data Serialization
      • 3. Databases
      • 4. Relational Databases
      • 5. SQL Injection
      • 6. Object-Relational Mapping
    • 8. Routing
      • 1. Introduction
      • 2. Request Routing
      • 2. Resources
      • 4. Request Revisted
      • 5. REST
      • 6. Routers
      • 7. APIs
      • 8. Web Hooks
      • 9. Summary
    • 9. Authentication
      • 1. Introduction
      • 2. HTTP Authentication
      • 3. Password Authentication
      • 4. Stronger Passwords
      • 5. Single Sign On
      • 6. CAS
      • 7. SAML
      • 8. JSON Web Tokens
      • 9. OAuth
      • 10. Summary
    • 10. Dynamic Web Frameworks
      • 1. Introduction
      • 2. Web Frameworks
      • 3. Web Framework Characteristics
      • 4. Single Page Apps
      • 5. Progressive Web Apps
    • A. Hyper-Text Markup Language
      • 1. Introduction
      • 2. HTML Element Structure
      • 3. HTML Document Structure
      • 4. Inline vs. Block Elements
      • 5. Tables
      • 6. Forms
      • 7. Common HTML Elements
    • B. Cascading Style Sheets
      • 1. Introduction
      • 2. CSS Rules
      • 3. CSS Selectors
      • 4. Applying CSS Rules
      • 5. CSS Cascade
      • 6. CSS Specificity
      • 7. CSS Units
      • 8. CSS Functions
      • 9. CSS Colors
      • 10. CSS and Text
      • 11. CSS Box Model
      • 12. CSS Positioning
      • 13. CSS Layouts
      • 14. Responsive Web Design
    • C. JavaScript
      • 1. Introduction
      • 2. Basic Syntax
      • 3. JavaScript Functions
      • 4. Arrays - Lists by Another Name
      • 5. Objects and Classes
      • 6. Attaching Scripts
      • 7. The Document Object Model
      • 8. Strict Mode
      • 9. Regular Expressions
      • 10. JSON
      • 11. AJAX
    • X. Example Projects
      • 1. Express Starter Project
        • 1. GitHub Codespace
        • 2. Express Starter
        • 3. Convert to ES Modules
        • 4. Debugging & Logging
        • 5. Request Logging
        • 6. Other Libraries
        • 7. Environment
        • 8. OpenAPI Documentation
        • 9. JSDoc Documentation
        • 10. Linting & Formatting
        • 11. Summary
      • 2. Adding a Database
        • 1. Sequelize
        • 2. Migrations
        • 3. Seeds
        • 4. Models
        • 5. Documenting Models
        • 6. Automation
        • 7. Another Table
      • 3. RESTful API
        • 1. API Design
        • 2. Unit Testing
        • 3. Code Coverage
        • 4. Other Tests
        • 5. Testing Roles
        • 6. Retrieve All
        • 7. Retrieve One
        • 8. Create
        • 9. Testing Create
        • 10. Update
        • 11. Delete
      • 4. Authentication
        • 1. Bypass Auth
        • 2. Cookie Sessions
        • 3. JSON Web Token
        • 4. Auth Routing
        • 5. CAS Authentication
        • 6. New Users
        • 7. Testing Authentication
        • 8. Role-Based Authorization
        • 9. Updating Tests
        • 10. Testing Roles
        • 11. Users API Updates
      • 5. Vue.js Starter Project
        • 1. Vue Starter
        • 2. Exploring Vue
        • 3. PrimeVue
        • 4. Routing
        • 5. Tailwind
        • 6. Dark Mode
        • 7. Icons
        • 8. API Proxy
        • 9. Authentication
        • 10. Route Guards
        • 11. Accessing API
      • 6. Vue.js CRUD App
        • 1. Roles View
        • 2. Users Table
        • 3. Edit User
        • 4. Edit Roles
        • 5. New User
        • 6. Delete User
      • 7. Advanced Topics
        • 1. Pinia
        • 2. Reusing Components
        • 3. Preparing for Deployment
        • 4. Dockerfile
        • 5. GitHub Actions
        • 6. Docker Compose
        • 7. External Database
    • X. Milestones
      • 1. Express Starter Project
      • 2. Add a Database
      • 3. RESTful API
      • 4. Authentication
      • 5. Vue.js Starter Project
      • 6. Vue.js CRUD App
      • 7. Advanced Topics
    • Y. Announcements
      • Spring '25 Week 8
      • Spring '25 Week 9
      • Spring '25 Week 10
      • Spring '25 Week 11
      • Spring '25 Week 12
      • Spring '25 Week 13
      • Spring '25 Week 14
      • Spring '25 Week 15

    •  
    •  
    •  

    Built using Hugo and Hugo Relearn Theme.

    Creative Commons License
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.