Introduction to Full-stack Development 
                CMU529: Advanced Web Development - Session 1 
                Birmingham Newman University 
                Lecturer: James Williams 
                Understanding client-server architecture and web development stack
                3-hour session • 25 slides • 2 interactive tasks 
                
                    Session Timeline: 
                    
                        10 min: Registration & waiting 
                        20 min: Opening slides 
                        45 min: Task 1 
                        15 min: Break/Catch up 
                        20 min: Secondary slides 
                        45 min: Task 2 
                        Remaining: Self-study 
                     
                 
             
            
            
                Learning Objectives 
                
                    Understand the concept of full-stack web development 
                    Learn about client-server architecture 
                    Explore the web development technology stack 
                    Understand the role of different technologies in web development 
                    Plan and structure an e-commerce project 
                    Set up a local development environment 
                 
             
            
            
                What is Full-stack Development? 
                
                    Full-stack development  involves working on both the front-end
                    (client-side) and back-end (server-side) of web applications
                
                
                    Front-end: What users see and interact with 
                    Back-end: Server-side logic and database operations 
                    Full-stack developers understand the entire application 
                    Enables building complete, functional web applications 
                 
                
                    Full-stack Web Application 
                    Front-end:  HTML, CSS, JavaScript, Bootstrap
                    Back-end:  PHP, MySQL, Server Logic
                    Result:  Complete web application
                 
                
                
                    Watch: Full-stack Development Explained 
                    
                        VIDEO 
                    
                    
                        Understanding the complete web development stack and architecture
                    
                 
             
            
            
                Client-Server Architecture 
                
                    Client (Browser) ←→ Server (Web Server)
                
                
                    Client:  Web browser (Chrome, Firefox, Safari) 
                    Server:  Computer running web server software 
                    Communication:  HTTP/HTTPS protocol 
                    Request-Response:  Client requests, server responds 
                 
                
                    Example:  When you visit a website, your browser (client)
                    requests the page from a web server, which sends back HTML, CSS, and JavaScript
                    files.
                
             
            
            
                How Web Applications Work 
                
                    User enters URL in browser 
                    Browser sends HTTP request to server 
                    Server processes request (PHP logic) 
                    Server queries database (MySQL) 
                    Server generates HTML response 
                    Browser receives and displays page 
                    User interacts with page (JavaScript) 
                 
                
                    Request-Response Cycle 
                    User → Browser → Server → Database → Server → Browser → User
                 
             
            
            
                Front-end Technologies 
                
                    HTML5 (Structure) 
                    + CSS3 (Styling) 
                    + JavaScript (Interactivity) 
                    + Bootstrap (Framework)
                
                
                    HTML5:  Structure and content of web pages 
                    CSS3:  Styling, layout, and visual design 
                    JavaScript:  Client-side interactivity and functionality
                     
                    Bootstrap:  CSS framework for responsive design 
                 
                
                    Front-end Goal:  Create user-friendly, responsive, and
                    interactive web interfaces
                
                
                
                    Watch: Front-end Technologies Explained 
                    
                        VIDEO 
                    
                    
                        Learn how HTML, CSS, and JavaScript work together in web development
                    
                 
             
            
            
                Back-end Technologies 
                
                    PHP (Server Logic) 
                    + MySQL (Database) 
                    + Apache/Nginx (Web Server)
                
                
                    PHP:  Server-side programming language 
                    MySQL:  Relational database management system 
                    Apache/Nginx:  Web server software 
                    File System:  Storage for files and assets 
                 
                
                    Back-end Goal:  Process data, manage business logic, and serve
                    dynamic content
                
                
                
                    Watch: PHP Fundamentals Explained 
                    
                        
                    
                    
                        Comprehensive introduction to PHP - the server-side programming language
                    
                 
             
            
            
                Web Development Stack 
                
                    LAMP Stack (Linux, Apache, MySQL, PHP) 
                    Operating System:  Linux (or Windows/macOS)
                    Web Server:  Apache (or Nginx)
                    Database:  MySQL
                    Programming Language:  PHP
                 
                
                    Industry-standard stack for web development 
                    Open-source and widely supported 
                    Excellent for e-commerce applications 
                    Easy to learn and deploy 
                 
             
            
            
                E-commerce Application Structure 
                
                    E-commerce Website Structure: 
                    ├── Front-end (User Interface) 
                    │ ├── Product catalog pages 
                    │ ├── Shopping cart interface 
                    │ ├── User registration/login 
                    │ ├── Checkout process 
                    │ └── Order tracking 
                    ├── Back-end (Server Logic) 
                    │ ├── User authentication 
                    │ ├── Product management 
                    │ ├── Order processing 
                    │ ├── Payment handling 
                    │ └── Admin panel 
                    └── Database (Data Storage) 
                    ├── User accounts 
                    ├── Product information 
                    ├── Orders and transactions 
                    └── System settings
                
             
            
            
                Development Environment Setup 
                
                    XAMPP:  All-in-one package (Apache, MySQL, PHP) 
                    Code Editor:  Visual Studio Code, Sublime Text 
                    Browser:  Chrome, Firefox with developer tools 
                    Database Tool:  phpMyAdmin (included with XAMPP) 
                 
                
                    Local Development:  Run everything on your computer for testing
                    before deploying to a live server.
                
             
            
            
                E-commerce Project Planning 
                
                    Requirements Analysis:  Define features and functionality
                     
                    Database Design:  Plan tables and relationships 
                    User Interface Design:  Wireframes and mockups 
                    Technology Selection:  Choose appropriate tools 
                    Development Timeline:  Set milestones and deadlines 
                 
                
                    Project Phases: 
                    1. Planning & Design (Sessions 1-3) 
                    2. Back-end Development (Sessions 4-8) 
                    3. Front-end Integration (Sessions 9-11) 
                    4. Testing & Deployment (Session 12)
                
             
            
            
                Database Design Basics 
                
                    E-commerce Database Tables: 
                    users (id, username, email, password, created_at) 
                    products (id, name, description, price, stock, category_id) 
                    categories (id, name, description) 
                    orders (id, user_id, total_amount, status, created_at) 
                    order_items (id, order_id, product_id, quantity, price)
                
                
                    Tables store related data 
                    Relationships connect different tables 
                    Primary keys uniquely identify records 
                    Foreign keys link related data 
                 
                
                
                    Watch: MySQL Fundamentals Explained 
                    
                        
                    
                    
                        Comprehensive introduction to MySQL - the popular database management system
                    
                 
             
            
            
                Security Considerations 
                
                    Input Validation:  Validate all user inputs 
                    SQL Injection Prevention:  Use prepared statements 
                    Password Hashing:  Never store plain text passwords 
                    Session Management:  Secure user sessions 
                    HTTPS:  Encrypt data transmission 
                    File Upload Security:  Validate file types and sizes 
                 
                
                    Security First:  Always consider security implications when
                    handling user data.
                
             
            
            
                Performance Optimization 
                
                    Database Optimization:  Efficient queries and indexing 
                    Caching:  Store frequently accessed data 
                    Image Optimization:  Compress and resize images 
                    Code Optimization:  Efficient algorithms and clean code 
                    CDN Usage:  Distribute static content globally 
                 
                
                    Optimization Techniques:
                    - Use database indexes for faster queries
                    - Implement page caching
                    - Optimize images for web
                    - Minify CSS and JavaScript files
                
             
            
            
                Testing Strategies 
                
                    Unit Testing:  Test individual functions 
                    Integration Testing:  Test component interactions 
                    User Testing:  Real user feedback 
                    Cross-browser Testing:  Test in different browsers 
                    Mobile Testing:  Test on mobile devices 
                    Security Testing:  Vulnerability assessment 
                 
                
                    Test Early, Test Often:  Regular testing helps catch issues
                    before they become problems.
                
             
            
            
                Deployment Process 
                
                    Code Review:  Check code quality and security 
                    Testing:  Comprehensive testing on staging environment 
                    Database Migration:  Set up production database 
                    File Upload:  Upload files to web server 
                    Configuration:  Set up production settings 
                    Monitoring:  Monitor performance and errors 
                 
                
                    Deployment Platforms: 
                    - Shared hosting (cPanel) 
                    - VPS hosting (DigitalOcean, AWS) 
                    - Cloud platforms (Heroku, Vercel) 
                    - Dedicated servers
                
             
            
            
                Industry Best Practices 
                
                    Version Control:  Use Git for code management 
                    Code Standards:  Follow coding conventions 
                    Documentation:  Document code and processes 
                    Backup Strategy:  Regular backups of code and data 
                    Monitoring:  Track application performance 
                    Continuous Learning:  Stay updated with new technologies
                     
                 
                
                    Professional Development:  Good practices lead to maintainable
                    and scalable code.
                
             
            
            
                Task 1: Development Environment Setup 
                
                    Instructions: 
                    
                        Download and install XAMPP on your computer 
                        Start Apache and MySQL services 
                        Create a new project folder in htdocs directory 
                        Install Visual Studio Code or your preferred code editor 
                        Create a simple PHP test file to verify setup 
                        Access phpMyAdmin and create a test database 
                        Create a basic HTML page with PHP integration 
                        Test your setup by viewing the page in a browser 
                     
                    Time:  45 minutes
                    This task will help you set up your development environment and verify
                            everything is working correctly 
                 
             
            
            
                Break Time 
                
                    15 Minutes 
                    Take a break, ask questions, or catch up on the previous task.
                    Next: Secondary slides and Task 2 
                 
             
            
            
                Essential Web Development Tools 
                
                    Browser Developer Tools:  Chrome DevTools, Firefox Developer
                        Tools 
                    Code Editors:  VS Code, Sublime Text, Atom 
                    Version Control:  Git, GitHub, GitLab 
                    Database Tools:  phpMyAdmin, MySQL Workbench 
                    API Testing:  Postman, Insomnia 
                    Image Editing:  GIMP, Photoshop, Figma 
                 
                
                    Tool Selection:  Choose tools that work best for your workflow
                    and project requirements.
                
             
            
            
                Web Standards and Protocols 
                
                    HTTP/HTTPS:  Communication protocol between client and
                        server 
                    HTML5:  Latest standard for web markup 
                    CSS3:  Latest standard for web styling 
                    JavaScript ES6+:  Modern JavaScript features 
                    REST API:  Standard for web service communication 
                    JSON:  Data interchange format 
                 
                
                    HTTP Request Example: 
                    GET /products.php HTTP/1.1 
                    Host: example.com 
                    User-Agent: Mozilla/5.0...
                
             
            
            
                Responsive Design Principles 
                
                    Mobile-First:  Design for mobile devices first 
                    Flexible Grid:  Use CSS Grid and Flexbox 
                    Flexible Images:  Images that scale properly 
                    Media Queries:  CSS rules for different screen sizes 
                    Touch-Friendly:  Design for touch interfaces 
                    Performance:  Optimize for mobile performance 
                 
                
                    Responsive Goal:  Provide optimal viewing experience across all
                    devices.
                
             
            
            
                Web Accessibility Guidelines 
                
                    Semantic HTML:  Use proper HTML elements 
                    Alt Text:  Provide alternative text for images 
                    Keyboard Navigation:  Ensure keyboard accessibility 
                    Color Contrast:  Maintain sufficient color contrast 
                    Screen Reader Support:  Test with screen readers 
                    Focus Indicators:  Clear focus indicators for navigation
                     
                 
                
                    Accessibility Example: 
                    <img src="product.jpg" alt="Red running shoes"> 
                    <button aria-label="Add to cart">+</button>
                
             
            
            
                Task 2: E-commerce Project Planning 
                
                    Instructions: 
                    
                        Create a project planning document for your e-commerce website 
                        Define the target audience and business requirements 
                        List all required features (user registration, product catalog, shopping
                            cart, etc.) 
                        Design a basic database schema with main tables 
                        Create wireframes for key pages (home, product listing, cart, checkout)
                         
                        Plan the technology stack and development timeline 
                        Identify potential challenges and solutions 
                        Create a project folder structure 
                     
                    Time:  45 minutes
                    This task will help you plan your e-commerce project and understand the
                            development process 
                 
             
            
            
                Session Summary 
                
                    Full-stack development involves both front-end and back-end 
                    Client-server architecture is fundamental to web applications 
                    LAMP stack provides a solid foundation for web development 
                    Proper planning is essential for successful projects 
                    Security and performance should be considered from the start 
                    Development environment setup is crucial for productivity 
                 
                
                    Next Session: 
                    Bootstrap Framework Fundamentals - Building responsive user interfaces