Course: Full Stack Development
Course Objectives:
1. Database Management: Master both SQL (PostgreSQL) and NoSQL concepts.
2. Backend Development: Learn how to interact with databases in Node.js using ORM
(Sequelize) and SQL/NoSQL query skills.
3. Full-Stack Development: Build modern web applications using backend and
frontend technologies.
Module 1: Introduction to Databases (SQL/NoSQL)
Topics:
• What is a Database? Overview of relational (SQL) vs. non-relational (NoSQL)
databases.
• NoSQL Basics: Understanding key-value stores, document-based, column-family,
and graph databases.
• Database Use Cases: When to use SQL vs. NoSQL databases.
• Database Setup: Installing PostgreSQL, Node.js, npm, and Angular CLI.
Assignment:
• Install PostgreSQL, Node.js, and Angular.
• Create a basic Node.js app and a PostgreSQL database for learning purposes.
Quiz:
• Key differences between SQL and NoSQL databases.
• When to use each type of database.
Learning Outcomes:
• Understand the basics of SQL/NoSQL and set up the development environment.
Module 2: Introduction to PostgreSQL
Topics:
• PostgreSQL Overview: Features, use cases, architecture.
• Installing PostgreSQL: Setup on various platforms (Windows, Linux, Mac).
• PostgreSQL Tools: pgAdmin, psql, and basic database management.
Assignment:
• Install PostgreSQL and create a sample database for a basic system (e.g., library
database).
Quiz:
• Basic PostgreSQL concepts (e.g., data types, schema, and installation).
Learning Outcomes:
• Understand PostgreSQL architecture and install it for real-world applications.
Module 3: SQL Database Structure and Queries
Topics:
• SQL Basics: Understanding tables, schemas, data types (numeric, string, date/time,
JSON).
• SQL Queries:
o SELECT: Retrieving data from tables.
o INSERT: Inserting new records.
o UPDATE: Modifying existing data.
o DELETE: Removing data.
o TRUNCATE: Efficiently removing all rows from a table.
o JOINS: Inner Join, Left Join, Right Join, Full Outer Join for data combining.
• GROUP BY, HAVING, and Aggregate Functions: Working with data aggregation.
Assignment:
• Write SQL queries to perform CRUD operations on a PostgreSQL database for a
basic application (e.g., library system).
Quiz:
• Questions on SELECT, JOIN, and basic SQL query usage.
Learning Outcomes:
• Master basic SQL queries and database structures for relational databases.
Module 4: Express.js ORM (Sequelize) Basics
Topics:
• Introduction to ORMs: What is an ORM, and why use it?
• Sequelize ORM Overview: Basics of Sequelize in Node.js for interacting with
PostgreSQL.
• Setting up Sequelize: Connecting to PostgreSQL, defining models, and setting up
associations (One-to-Many, Many-to-Many).
• CRUD Operations with Sequelize: Performing Create, Read, Update, Delete
operations using Sequelize.
Assignment:
• Create models and perform CRUD operations on the PostgreSQL database using
Sequelize ORM.
• Build a small API that manages user data with Sequelize (e.g., user registration and
profile management).
Quiz:
• Key Sequelize functions: findAll(), create(), update(), destroy(), and
findOne().
• How to define models and associations in Sequelize.
Learning Outcomes:
• Integrate Sequelize ORM with Node.js to interact with PostgreSQL databases.
Module 5: Advanced SQL Queries and Database Performance
Topics:
• Advanced SQL Queries:
o Subqueries, Common Table Expressions (CTEs).
o Window functions (e.g., RANK, ROW_NUMBER).
o Nested queries and joins.
• Database Optimization Techniques:
o Indexing, EXPLAIN ANALYZE for query performance tuning.
o Optimizing queries and database design for efficiency.
Assignment:
• Write advanced SQL queries to analyze large datasets (e.g., customer orders in an e-
commerce system).
• Optimize a PostgreSQL query using EXPLAIN ANALYZE.
Quiz:
• SQL performance concepts and advanced query techniques.
Learning Outcomes:
• Write complex SQL queries and optimize database performance for large-scale
applications.
Module 6: Front-End Development with Angular
Topics:
• Angular Basics: Components, services, modules, directives, and pipes.
• Data Binding and Event Handling: Understanding two-way binding, property
binding, and event binding.
• API Communication: Using Angular’s HttpClient to send requests to the backend
and display data.
Assignment:
• Create an Angular front-end application that interacts with a Node.js/Sequelize
backend.
Quiz:
• Basic Angular concepts like components, services, and HttpClient.
Learning Outcomes:
• Build dynamic Angular applications that can interact with backend APIs.
Module 7: Connecting Front-End (Angular) with Back-End
(Node.js/Express.js & Sequelize)
Topics:
• Integrating Angular with Node.js/Express.js Backend: Connecting the front-end to
the back-end using RESTful APIs.
• Error Handling and Debugging: Techniques for handling errors and debugging
Angular and Node.js applications.
• User Authentication and Authorization: Implementing JWT (JSON Web Tokens)
for secure API access.
Assignment:
• Complete a full-stack application (e.g., a simple blog or e-commerce app) integrating
Angular front-end with Node.js and PostgreSQL backend.
Quiz:
• Questions on API integration, error handling, and JWT authentication.
Learning Outcomes:
• Successfully integrate Angular with a Node.js/Express backend and implement user
authentication.
Module 8: Deployment, Optimization, and Final Project
Topics:
• Application Deployment: Deploying the MEAN stack (Angular + Node.js) and
PostgreSQL on cloud platforms like AWS, Heroku, etc.
• Optimizing Application Performance: Best practices for caching, query
optimization, and scaling applications.
• Backup and Restore in PostgreSQL: Using pg_dump and pg_restore for database
backup and recovery.
Assignment:
• Deploy the full-stack application (e-commerce or blog) to the cloud.
• Optimize database queries and application performance.
Quiz:
• Questions on deployment strategies, database backup, and performance optimization.
Learning Outcomes:
• Deploy full-stack applications, optimize them for performance, and manage database
backups.
Final Project
Objective:
• Build a real-world full-stack application (e.g., an e-commerce platform or task
management tool) using PostgreSQL for the database and Node.js/Express/Angular
for the backend and front-end.
Requirements:
• Utilize PostgreSQL with Sequelize ORM for data management.
• Implement all CRUD operations, secure user authentication, and deploy the app to the
cloud.
Evaluation:
• Project demonstration, code review, and documentation.
Overall Learning Outcomes:
• PostgreSQL and SQL/NoSQL: Master relational and non-relational database
concepts, from SQL queries to advanced performance optimization.
• Sequelize ORM: Interact with databases in Node.js applications using Sequelize
ORM.
• Full-Stack Development: Build complete full-stack applications using Angular,
Node.js, Express.js, and PostgreSQL.
• Application Deployment: Deploy applications to cloud platforms, ensuring
scalability and optimization.