Friday, February 20, 2026

Full Stack Development- BIS601 — covering JavaScript, React, Express, MongoDB, and the complete MERN stack.

Full Stack Development – BIS601 | Complete Course Portal
Loading Course Portal
Semester 6 · BIS601 · Complete Academic Portal

Full Stack
Development

Theory · Real-World Examples · Lab Programs · Exercises · Mini-Projects · Activities — all in one place for the MERN Stack.

0
Modules
0
Lab Programs
0
Exercises
0
Mini Projects
0
Activities
0
Credits
▼ scroll
Course Overview

What You'll Master

From JavaScript basics to a fully deployed MERN application — a complete 16-week journey.

๐Ÿ“‹
Course Code
BIS601
๐Ÿ“…
Semester
6th
Credits
04
๐Ÿ•
L:T:P
3:0:2
๐Ÿ“–
Theory Hrs
40
๐Ÿงช
Lab Slots
8–10
๐Ÿ“
CIE Marks
50
๐Ÿ†
SEE Marks
50

๐Ÿ“Š Syllabus Coverage Map

Module 1 · JavaScript Basics & ES6+100%
Module 2 · DOM Manipulation & Events100%
Module 3 · React Components & MERN Intro100%
Module 4 · React State, Express & GraphQL100%
Module 5 · MongoDB, Mongoose & Webpack100%
Syllabus

5 Complete Modules

Expand any module to see full topics, syntax-highlighted code, and textbook references.

01

Basic JavaScript

Statements · Variables · Arrays · Functions · OOP · ES6+

Instructions & Statementsvar / let / constData TypesType CoercionTemplate LiteralsArrays & MethodsString MethodsArrow FunctionsObjects & PrototypesClasses & OOPif/else / switchfor / while / forEachDestructuringSpread & RestModules (import/export)Promisesasync / awaitError Handling
JavaScript ES6+
// ── Variables & Types ── const student = { name: "Priya", marks: [85, 90, 78, 92] }; const { name, marks } = student; // destructuring const updated = { ...student, grade: "A" }; // spread operator // ── Array Methods ── const avg = marks.reduce((a, b) => a + b, 0) / marks.length; const pass = marks.filter(m => m >= 80); const pct = marks.map(m => `${m}%`); console.log(`${name}'s Average: ${avg.toFixed(1)}`); // ── Classes & OOP ── class BankAccount { constructor(owner, balance = 0) { this.owner = owner; this.balance = balance; this.history = []; } deposit(amt) { this.balance += amt; this.history.push({ type: 'credit', amt }); } withdraw(amt) { if (amt > this.balance) throw new Error('Insufficient balance'); this.balance -= amt; this.history.push({ type: 'debit', amt }); } getStatement() { return this.history; } } // ── Async/Await ── const fetchUser = async (id) => { try { const res = await fetch(`/api/users/${id}`); const data = await res.json(); return data; } catch(err) { console.error(err); } };
๐Ÿ“– Text Book 1: Ch 2, 3, 4  |  ๐Ÿ’ก Industry: Amazon cart logic, Paytm transaction history, Zomato menu filter
02

Document Object Model

DOM Manipulation · Events · Delegation · Forms

DOM Tree & NodesquerySelector / AllgetElementByIdcreateElementappendChild / prependinnerHTML vs textContentsetAttribute / datasetclassList APIClick EventsInput EventsForm SubmitKeyboard EventsMouse EventsEvent Bubbling & CaptureEvent DelegationCustom EventsMutationObserverIntersectionObserver
DOM API
// ── Event Delegation (efficient pattern) ── const taskList = document.querySelector('#tasks'); taskList.addEventListener('click', (e) => { const btn = e.target.closest('button'); if (!btn) return; const action = btn.dataset.action; const li = btn.closest('li'); if (action === 'done') li.classList.toggle('completed'); if (action === 'delete') li.remove(); }); // ── Dynamic DOM creation ── function createTask(text) { const li = document.createElement('li'); li.innerHTML = ` <span>${text}</span> <button data-action="done">✓</button> <button data-action="delete">✕</button> `; taskList.appendChild(li); } // ── Intersection Observer (Scroll animations) ── const observer = new IntersectionObserver(entries => { entries.forEach(e => e.target.classList.toggle('visible', e.isIntersecting)); }, { threshold: 0.1 }); document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
๐Ÿ“– Text Book 1: Ch 5, 6, 7, 13  |  ๐Ÿ’ก Industry: Google Docs real-time edit, Gmail dynamic thread loading, Flipkart cart update
03

React Components & MERN Intro

JSX · Props · Composition · Issue Tracker

What is MERN StackJSX Syntax RulesFunctional ComponentsClass ComponentsProps PassingChildren PropsDefault PropsPropTypes ValidationComponent CompositionDynamic CompositionLists & KeysConditional RenderingControlled InputsUncontrolled InputsForm EnhancementIssue Tracker App
React JSX
// ── Reusable Status Badge ── const Badge = ({ status }) => { const styles = { Open: { color: '#00e676', bg: 'rgba(0,230,118,0.12)' }, Closed: { color: '#ff6b35', bg: 'rgba(255,107,53,0.12)' }, Pending: { color: '#ffd740', bg: 'rgba(255,215,64,0.12)' }, }; const s = styles[status] || {}; return <span style={{ color: s.color, background: s.bg, padding:'2px 10px', borderRadius:'20px' }}>{status}</span>; }; // ── Issue Card – receives all data via props ── const IssueCard = ({ id, title, description, status, priority, assignee }) => ( <div className="issue-card"> <h3>#{id} {title}</h3> <p>{description}</p> <div><Badge status={status} /> <span>P{priority}</span></div> <small>Assigned to: {assignee}</small> </div> ); // ── IssueTracker – composes multiple cards ── const IssueTracker = ({ issues, filterStatus }) => { const filtered = filterStatus ? issues.filter(i => i.status === filterStatus) : issues; return ( <div> <h2>Issues ({filtered.length})</h2> {filtered.map(i => <IssueCard key={i.id} {...i} />)} </div> ); };
๐Ÿ“– Text Book 2: Ch 1, 2, 3  |  ๐Ÿ’ก Industry: GitHub Issues, Jira board, Freshdesk ticket system
04

React State & Express/GraphQL

Hooks · REST API · GraphQL · Validation

useState HookuseEffect HookuseReduceruseContextCustom HooksAsync State InitLifting State UpState vs PropsExpress SetupExpress RoutingMiddlewareREST CRUD APIsGraphQL SchemaQuery & MutationResolversApollo ServerInput ValidationError Handling
React Hooks + Express REST
// ── Custom hook for data fetching ── function useFetch(url) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetch(url) .then(r => { if(!r.ok) throw new Error(r.status); return r.json(); }) .then(d => { setData(d); setLoading(false); }) .catch(e => { setError(e.message); setLoading(false); }); }, [url]); return { data, loading, error }; } // ── Express REST API ── const express = require('express'); const router = express.Router(); router.get('/products', async (req, res) => { const { category, sort, page = 1 } = req.query; const filter = category ? { category } : {}; const products = await Product.find(filter) .sort(sort || '-createdAt') .skip((page - 1) * 10).limit(10); const total = await Product.countDocuments(filter); res.json({ products, total, pages: Math.ceil(total/10) }); }); router.post('/products', authenticate, async (req, res) => { const product = new Product(req.body); await product.save(); res.status(201).json(product); });
๐Ÿ“– Text Book 2: Ch 4, 5  |  ๐Ÿ’ก Industry: Swiggy order dashboard, Meesho seller analytics, OLX listing management
05

MongoDB & Webpack / Modularization

CRUD · Mongoose · Aggregation · Bundling

Documents & CollectionsBSON TypesMongoDB ShellinsertOne / insertManyfind / findOneProjectionsupdateOne / $setdeleteOne / deleteManyQuery OperatorsAggregation Pipeline$match $group $sort$lookup (joins)Mongoose SchemaMongoose ModelsValidation & HooksWebpack ConfigLoaders & PluginsCode SplittingHMRProduction Build
MongoDB + Mongoose
// ── Mongoose Schema with hooks & virtuals ── const productSchema = new mongoose.Schema({ name: { type: String, required: [true, 'Name required'], trim: true }, price: { type: Number, required: true, min: [0, 'Price cannot be negative'] }, category: { type: String, enum: ['Electronics','Clothing','Food','Books'] }, stock: { type: Number, default: 0 }, ratings: [{ user: String, stars: Number, review: String }] }, { timestamps: true }); // Virtual: average rating productSchema.virtual('avgRating').get(function() { if (!this.ratings.length) return 0; return (this.ratings.reduce((s,r) => s+r.stars, 0) / this.ratings.length).toFixed(1); }); // ── Aggregation: Sales by category ── const report = await Order.aggregate([ { $match: { status: 'delivered', createdAt: { $gte: new Date('2024-01-01') }}}, { $unwind: '$items' }, { $group: { _id: '$items.category', revenue: { $sum: { $multiply: ['$items.price', '$items.qty'] }}, orders: { $sum: 1 } }}, { $sort: { revenue: -1 } } ]);
๐Ÿ“– Text Book 2: Ch 6, 7  |  ๐Ÿ’ก Industry: Meesho seller reports, Flipkart inventory, BigBasket product catalogue
Lab Programs

8 Hands-On Experiments

Progressive lab experiments from Hello World to a full MERN CRUD application.

#Experiment TitleObjectiveTech Stack
01
JavaScript Hello World & BasicsWrite and run JS programs using variables, conditionals, loops, and functions. Solve problems: factorial, Fibonacci, palindrome check.
HTMLJavaScriptBrowser Console
02
DOM Manipulation – Interactive Todo AppBuild a fully functional Todo application. Add tasks via form, mark complete with click, delete tasks, persist using localStorage. Implement search/filter.
HTMLCSSDOM APIlocalStorage
03
React Components – Student Card SystemBuild reusable StudentCard and StudentList components using props. Include name, marks, subject list, grade badge. Filter by pass/fail dynamically.
ReactJSXPropsCDN React
04
React State – Shopping CartCreate a product listing page with Add to Cart functionality. Manage cart state with useState. Show item count, total price, and remove items.
ReactuseStateuseEffect
05
Express REST API – Product ManagementBuild a Node/Express REST API for Products: GET all, GET by ID, POST create, PUT update, DELETE. Test with Postman. Add input validation.
Node.jsExpressPostmanJSON
06
MongoDB CRUD – Student DatabaseConnect MongoDB with Mongoose. Create Student schema. Implement full CRUD: add students, query by marks/name, update records, delete, and run aggregation for averages.
MongoDBMongooseNode.js
07
GraphQL API – Issue TrackerBuild a GraphQL server for issues. Define typeDefs: Issue type, Query (issues, issue), Mutation (createIssue, updateStatus, deleteIssue). Connect MongoDB as data source.
GraphQLApolloMongoDB
08
Full MERN App – Blog PlatformComplete MERN application: React frontend with create/read/delete posts, Express backend with JWT auth, MongoDB storage. Deploy with Webpack production build.
MongoDBExpressReactNodeJWTWebpack
Industry Context

Real-World Examples

Every concept maps to a real app used by millions of people in India and worldwide.

๐Ÿ›’

E-Commerce Cart (Flipkart / Amazon Style)

JavaScript OOP & Array methods power shopping cart logic

๐Ÿ“Œ Scenario: When you click "Add to Cart" on Flipkart, JavaScript OOP manages the cart — adding/removing items, updating quantities, applying coupons, and computing totals all in memory before syncing to the server.
ShoppingCart – JavaScript OOP
class ShoppingCart { constructor() { this.items = []; this.coupon = null; } add(product, qty = 1) { const found = this.items.find(i => i.id === product.id); found ? found.qty += qty : this.items.push({ ...product, qty }); this.render(); } remove(id) { this.items = this.items.filter(i => i.id !== id); this.render(); } couponApply(code) { const codes = { SAVE10: 0.1, SAVE20: 0.2, FLAT50: 50 }; this.coupon = codes[code] ?? null; } getTotal() { const sub = this.items.reduce((s, i) => s + i.price * i.qty, 0); if (!this.coupon) return sub; return this.coupon < 1 ? sub * (1 - this.coupon) : sub - this.coupon; } render() { document.querySelector('#cart-count').textContent = this.items.length; document.querySelector('#cart-total').textContent = `₹${this.getTotal().toLocaleString()}`; } } const cart = new ShoppingCart(); cart.add({ id: 1, name: 'iPhone 15', price: 79999 }); cart.couponApply('SAVE10'); console.log(cart.getTotal()); // ₹71,999
๐Ÿ”

Debounced Search (Swiggy / Zomato Style)

Prevents API flood on every keystroke

๐Ÿ“Œ Scenario: Swiggy waits 300ms after you stop typing before searching restaurants — this "debounce" prevents 30+ API calls per second and saves server costs.
Debounce Pattern
const debounce = (fn, ms) => { let timer; return (...args) => { clearTimeout(timer); timer = setTimeout(() => fn(...args), ms); }; }; const searchAPI = async (query) => { const r = await fetch(`/api/restaurants?q=${query}`); const data = await r.json(); renderResults(data); }; const debouncedSearch = debounce(searchAPI, 300); document.querySelector('#search').addEventListener('input', e => debouncedSearch(e.target.value));

Live Kanban Board (Trello / Jira Style)

Drag-and-drop DOM manipulation

๐Ÿ“Œ Scenario: Trello uses drag-and-drop DOM events to move task cards between "To Do / In Progress / Done" columns. Each drag operation updates the DOM instantly, then syncs to the database.
Drag & Drop DOM
// Cards are draggable document.querySelectorAll('.card').forEach(card => { card.draggable = true; card.addEventListener('dragstart', e => { e.dataTransfer.setData('text/plain', card.id); card.classList.add('dragging'); }); card.addEventListener('dragend', () => card.classList.remove('dragging')); }); // Columns accept drops document.querySelectorAll('.column').forEach(col => { col.addEventListener('dragover', e => e.preventDefault()); col.addEventListener('drop', e => { const cardId = e.dataTransfer.getData('text/plain'); const card = document.getElementById(cardId); col.appendChild(card); updateStatusAPI(cardId, col.dataset.status); // sync to DB }); });
๐Ÿ“Š

Live Order Dashboard (Zomato Restaurant Partner)

useReducer + real-time state management

๐Ÿ“Œ Scenario: Zomato's restaurant partner app uses React + Socket.io. When a new order arrives, the state updates instantly — the dashboard re-renders to show the new order without any page refresh.
React useReducer – Order Dashboard
const orderReducer = (state, action) => { switch(action.type) { case 'NEW_ORDER': return [action.order, ...state]; case 'ACCEPT': return state.map(o => o.id===action.id ? {...o,status:'Preparing'}:o); case 'READY': return state.map(o => o.id===action.id ? {...o,status:'Ready'}:o); case 'DISPATCHED': return state.map(o => o.id===action.id ? {...o,status:'On the way'}:o); default: return state; } }; function Dashboard() { const [orders, dispatch] = useReducer(orderReducer, []); useEffect(() => { socket.on('new-order', order => dispatch({ type: 'NEW_ORDER', order })); }, []); const pending = orders.filter(o => o.status === 'Pending'); const revenue = orders.reduce((s, o) => s + o.total, 0); return ( <div> <h1>Orders: {orders.length} | Revenue: ₹{revenue} | Pending: {pending.length}</h1> {orders.map(o => <OrderCard key={o.id} order={o} dispatch={dispatch} />)} </div> ); }
๐Ÿ”

JWT Auth API (PhonePe / BHIM Style)

Express middleware + JWT token flow

๐Ÿ“Œ Scenario: When you log into PhonePe with your PIN, the Express backend validates credentials, issues a JWT token, and all subsequent API calls (balance check, payments) carry this token to prove identity.
Express JWT Auth
const authenticate = (req, res, next) => { const token = req.headers.authorization?.split(' ')[1]; if (!token) return res.status(401).json({ error: 'No token provided' }); try { req.user = jwt.verify(token, process.env.JWT_SECRET); next(); } catch { res.status(401).json({ error: 'Invalid or expired token' }); } }; app.post('/login', async (req, res) => { const { phone, pin } = req.body; const user = await User.findOne({ phone }); if (!user || !await bcrypt.compare(pin, user.hashedPin)) return res.status(400).json({ error: 'Invalid credentials' }); const token = jwt.sign({ id: user._id }, process.env.JWT_SECRET, { expiresIn: '7d' }); res.json({ token }); }); app.get('/wallet/balance', authenticate, async (req, res) => { const wallet = await Wallet.findOne({ user: req.user.id }); res.json({ balance: wallet.balance }); });
๐Ÿ“ฆ

Sales Analytics (Meesho Seller Portal Style)

MongoDB aggregation pipeline for business reports

๐Ÿ“Œ Scenario: Meesho's seller dashboard uses MongoDB aggregation to instantly compute total revenue by product category, daily order counts for the last 30 days, and top-performing products — all in a single optimized query.
MongoDB Aggregation Pipeline
const salesReport = await Order.aggregate([ { $match: { status: 'delivered', createdAt: { $gte: new Date(Date.now() - 30*24*3600*1000) } }}, { $unwind: '$items' }, { $group: { _id: { cat: '$items.category', day: { $dateToString: { format:'%Y-%m-%d', date:'$createdAt' }}}, revenue: { $sum: { $multiply: ['$items.price', '$items.qty'] }}, units: { $sum: '$items.qty' }, orders: { $addToSet: '$_id' } }}, { $sort: { revenue: -1 } }, { $limit: 20 } ]); // → Returns top 20 category+day combos by revenue in last 30 days
Practice Problems

30+ Graded Exercises

Easy → Medium → Hard progression across all 5 modules.

Easy

1. Grade Calculator

Accept 5 subject marks, compute average, find highest/lowest, assign grade (A/B/C/D/F), and print a formatted report card.

ArraysMath.maxconditions
Easy

2. Palindrome & Anagram

Write isPalindrome() and isAnagram() functions. Handle spaces, case, and special characters. Test with sample words.

Stringssortregex
Easy

3. Number Guessing Game

Generate random 1–100 number. Accept guesses, respond "Too High" / "Too Low" / "Correct!". Count attempts. Allow replay.

Math.randomwhileprompt
Medium

4. Bank Account OOP

Create BankAccount class: deposit(), withdraw() with balance check, getStatement(), and compound interest calculator using closure.

ClassesclosuresOOP
Medium

5. Student Array Pipeline

Given 20 students array (name, grade, marks): group by grade, find top 5, compute subject averages — using only map/filter/reduce.

map/filter/reduceobjects
Hard

6. Retry Fetch with Backoff

Simulate async API calls that fail randomly. Implement retry with exponential backoff (1s, 2s, 4s). Show loading/error/success states.

Promisesasync/awaitrecursion
Easy

7. Image Carousel

Build a slideshow with prev/next, auto-play (3s), dot indicators, and keyboard arrow key support. Pause on hover.

DOMsetIntervalkeyboard events
Easy

8. Color Picker Tool

Create a color palette grid. On hover show hex code tooltip. On click copy to clipboard. Show "Copied!" animation.

DOMclassListClipboard API
Medium

9. Live Form Validator

Real-time validation: email format, password strength meter (8+ chars / number / special), confirm match. Block submit on error.

Regexinput eventslive feedback
Medium

10. Drag-and-Drop Kanban

3-column board (Todo/Doing/Done). Drag cards between columns. Count per column dynamically. Persist to localStorage.

dragstartdrop eventslocalStorage
Hard

11. Canvas Drawing App

Paint-like app with freehand, shapes (rect/circle/line), colors, brush sizes, undo/redo stack, eraser, and PNG export.

Canvas APImouse eventshistory stack
Hard

12. Infinite Scroll Feed

Simulate an Instagram-style feed. Load 10 items initially, detect scroll bottom with IntersectionObserver, lazy-load more items.

IntersectionObserverDOMasync
Easy

13. Profile Card Component

Build reusable ProfileCard with name, role, avatar, skills[] props. Toggle "Follow" button that updates follower count state.

PropsJSXcomponent design
Medium

14. Restaurant Menu Filter

Menu with categories, veg/non-veg filter, price range slider. All filtering via controlled React components and props.

Controlled inputsConditional render
Hard

15. Multi-Step Form Wizard

3-step registration: Personal → Address → Review. Progress bar, per-step validation, back/next navigation, final summary preview.

Component hierarchystateprops
Easy

16. Weather Widget

Fetch from OpenWeatherMap API using useEffect. Show temp, humidity, wind, icon. Auto-refresh every 5 min. Show loading skeleton.

useEffectfetch APIasync state
Medium

17. Cart with Context API

Full cart using useContext + useReducer. Add/remove/update qty, apply discount, persist in localStorage. Global state accessible anywhere.

useContextuseReducerlocalStorage
Hard

18. GraphQL Blog API

Apollo Server with Post & User types. Queries: posts, post(id). Mutations: createPost, updatePost, deletePost, addComment. MongoDB backend.

GraphQLApolloMongoDB
Easy

19. MongoDB Shell CRUD

Using mongo shell: create students DB, insert 10 records, query marks>80, update, delete, sort/count. Write all commands documented.

MongoDB ShellCRUDqueries
Medium

20. Blog Schema with Refs

Design Post and Comment schemas with references. Use populate() to get comments with posts. Add indexes, timestamps, and virtuals.

Mongooserefspopulate
Hard

21. Sales Analytics Dashboard

MongoDB aggregation: revenue by category, daily totals for last 30 days, top 5 products, avg order value, $lookup for user details.

$group$match$lookup$facet
Build Real Apps

6 Mini Projects

End-to-end MERN projects. Each one maps to a real-world industry application.

๐Ÿ“

1. MERN Blog Platform

Full-featured blog with user authentication, Markdown posts, nested comments, tags, search, and pagination.

ReactExpressMongoDBJWTWebpack
  • JWT registration & login
  • Create / Edit / Delete posts (Markdown)
  • Nested comments with likes
  • Category filter + full-text search
  • Profile page with post history
Difficulty:★★★☆☆
๐Ÿ›’

2. E-Commerce Store

Complete online store with product catalogue, cart, order management, and an admin panel for inventory control.

ReactRedux/ContextExpressMongoDBStripe
  • Product listing with filters & sorting
  • Cart with quantity management
  • Order placement & tracking
  • Admin: add/edit products & stock
  • Payment gateway (mock / Stripe)
Difficulty:★★★★☆
๐Ÿ’ฌ

3. Real-Time Chat App

WhatsApp-style chat with private messages, group rooms, online status, and message history using Socket.io.

ReactSocket.ioExpressMongoDB
  • Real-time messaging (Socket.io)
  • Group creation & management
  • Online / offline status
  • Message history from MongoDB
  • Image sharing support
Difficulty:★★★★☆
๐Ÿ“‹

4. Kanban Project Manager

Trello-like board: drag-and-drop cards, assign members, deadlines, priority labels, and activity feed.

ReactDnD KitExpressMongoDB
  • Drag-and-drop between columns
  • Task assignment to team members
  • Due dates with overdue alerts
  • Labels, comments, attachments
  • Activity log per task
Difficulty:★★★☆☆
๐Ÿ•

5. Food Delivery App

Swiggy-style app: restaurant listing, menu browsing, order placement, live tracking UI, and review system.

ReactGraphQLExpressMongoDB
  • Location-based restaurant listing
  • Category menu with filter
  • Cart and order placement
  • Live order status tracker
  • Ratings & review system
Difficulty:★★★★★
๐Ÿ“Š

6. Student Analytics Portal

College ERP module: marks entry, attendance tracking, grade charts, subject analytics, and role-based access.

ReactRechartsExpressMongoDB
  • Marks entry and CIE computation
  • Attendance with % alerts
  • Bar/line/pie charts (Recharts)
  • Export reports as PDF / Excel
  • Role: Admin / Faculty / Student
Difficulty:★★★★☆
Classroom & Lab

12 Learning Activities

Collaborative, competitive, and project-based activities that make concepts stick.

๐Ÿ†

Code Challenge Sprint

Weekly 30-min timed challenge on just-taught topics. Top 3 solutions get live code review.

  • Instructor posts 3 problems on projector
  • Students solve individually
  • Live review of top 3 solutions
  • Class votes best solution
⏱ 45 min
๐Ÿ”„

Pair Programming

Driver codes, Navigator guides. Switch roles every 15 min. Build a small feature together.

  • Pair mixed-ability students
  • Driver codes, navigator reviews
  • Switch roles at 15-min mark
  • Both explain their decisions
⏱ 60 min
๐Ÿ›

Bug Hunt Competition

Students receive code with 5 intentional bugs. First team to find and fix all bugs wins.

  • Distribute buggy code files
  • Teams of 2 race to find bugs
  • Explain each bug to class
  • Discuss why bug was introduced
⏱ 30 min
๐ŸŽค

5-Minute Live Demos

Each student picks one concept and explains it in 5 minutes with live code. No slides allowed.

  • Draw topics randomly at start
  • 5-min live coding demo (strict timer)
  • 2-min Q&A from classmates
  • Peer evaluation form
⏱ 7 min/student
๐ŸŽจ

UI Clone Challenge

Replicate a shown UI screenshot (Amazon/Google page) using HTML+CSS+JS. Compare with original.

  • Show screenshot for 10 seconds
  • Students build from memory (1 hr)
  • Compare side-by-side with original
  • Award points for accuracy
⏱ 75 min
๐Ÿงฉ

Component Jigsaw

Each team builds one React component. Teams combine all components into a single working page.

  • Assign Header/Sidebar/Card/Footer to teams
  • Define props contracts together
  • Build independently then integrate
  • Debug combined page as class
⏱ 90 min
๐ŸŽฒ

API Design Workshop

Groups design a REST API for a given domain (hospital/library). Define all endpoints before coding.

  • Assign real-world domain to teams
  • Design endpoints on whiteboard
  • Peer review of each design
  • Implement one endpoint per team
⏱ 60 min
๐Ÿ“ฆ

MongoDB Schema Design

Design optimal MongoDB schemas for a real scenario. Decide embedded vs referenced documents.

  • Present hospital/library scenario
  • Teams sketch document structure
  • Discuss embed vs reference trade-offs
  • Insert sample data and query
⏱ 60 min
๐Ÿ”ด

Live Code Review

Students share screen and walk through their lab solution. Class suggests improvements live.

  • Student presents code line-by-line
  • Class asks "what if" questions
  • Refactor one section live together
  • Document best practices found
⏱ 20 min/person
๐Ÿš€

48-Hour Hackathon

Weekend: teams of 2–3 build a complete MERN app. Present to faculty + external judge panel.

  • Form teams and choose domain
  • 48 hours to build prototype
  • 5-min demo + 2-min Q&A to panel
  • Awards: Best UI / Best Backend / Innovation
⏱ 48 hours
๐Ÿ“

State Flow Diagramming

Draw React component trees and trace how state flows. Find where to lift state for shared usage.

  • Start with app wireframe on whiteboard
  • Identify component boundaries
  • Trace props/state with arrows
  • Implement planned architecture
⏱ 45 min
๐ŸŒ

API Integration Relay

Teams connect 3 free APIs (Weather/News/Currency). First team to show all 3 styled on a page wins.

  • Give list of free public APIs
  • Teams race to fetch and display
  • Bonus for error handling
  • Bonus for best-styled page
⏱ 45 min
Semester Plan

16-Week Schedule

Week 1–2
JS Basics: Variables, Types, Arrays, Functions
Activities: Live coding · Exercise set 1–3 · Pair programming on array methods
Week 3–4
Advanced JS: OOP, Promises, async/await, ES6+
Activities: Bug Hunt on closures · Lightning talks on Promises · BankAccount OOP exercise
Week 5–6
DOM Manipulation, Events, Forms
Activities: UI Clone Challenge · Todo App lab · Event Delegation exercise
Week 7–8
React Components, Props, JSX — CIE Test 1
Activities: Component Jigsaw · Issue Tracker lab · Internal Test 1 (Modules 1–2)
Week 9–10
React State, Hooks, useEffect, Custom Hooks
Activities: State Flow Diagramming · Weather API lab · Order Dashboard useReducer exercise
Week 11–12
Express REST API, Middleware & GraphQL
Activities: API Design Workshop · Postman testing · REST API relay race
Week 13–14
MongoDB, Mongoose, Aggregation
Activities: Schema Design lab · MongoDB shell practice · Full MERN CRUD app (Lab 8)
Week 15–16
Webpack, Deployment & Mini Project Demos — CIE Test 2
Activities: 48-hr Hackathon · Project presentations · Code Review sessions · Internal Test 2 (Modules 3–5)
Self Assessment

Knowledge Quiz

Test your understanding across all modules. 10 questions on MERN concepts.

Question 1 of 10
Score: 0
Learning Goals

Course Outcomes

What you'll be able to do after successfully completing BIS601.

CO1

Build JavaScript Applications

Write clean, modular JavaScript using ES6+ features, OOP, and async patterns to solve real-world problems.

CO2

Develop Interactive Web Pages

Manipulate the DOM, handle user events, and build dynamic interfaces without any external framework.

CO3

Create React Applications

Design component-based UIs with proper state management, hooks, and component composition patterns.

CO4

Design RESTful & GraphQL APIs

Build backend APIs with Express, implement GraphQL queries/mutations, and handle authentication with JWT.

CO5

Manage Data with MongoDB

Design schemas with Mongoose, perform CRUD operations, and write aggregation pipelines for analytics.

CO6

Deploy Full-Stack MERN Applications

Connect all MERN layers, bundle with Webpack, and deploy a working full-stack web application.

Evaluation

Assessment Structure

๐Ÿ“ CIE – Continuous Internal Evaluation

Total CIE Marks50 Marks
Internal Tests (2 × 12.5)25 Marks
Assignments / Project25 Marks
Test 1 – Modules 1 & 2After Week 8
Test 2 – Modules 3, 4 & 5After Week 15
Minimum to Pass CIE20 / 50

๐Ÿ† SEE – Semester End Examination

Total SEE Marks50 Marks
Duration3 Hours
Total Questions10 Questions
Questions per Module2 per Module
Attempt any5 Questions (1/module)
Minimum to Pass SEE18 / 50
✅ Overall Passing Criteria: Minimum 40 marks out of 100 (CIE + SEE combined). Must pass both components individually.
Study Material

Books & Online Resources

๐Ÿ“š Prescribed Textbooks

Text Book 1
JavaScript & jQuery: Interactive Front-End Web Development
Jon Duckett · Wiley · 2014
Text Book 2
Pro MERN Stack: Full Stack Web App Development
Vasan Subramanian · Apress · 2nd Ed · 2019
⚡ BIS601 · Full Stack Development

Complete Academic Portal · MERN Stack · Semester 6 · 4 Credits

Modules · Lab Programs · Real-World Examples · Exercises · Mini Projects · Activities · Quiz

Full Stack Development- BIS601 — covering JavaScript, React, Express, MongoDB, and the complete MERN stack.

Full Stack Development – BIS601 | Complete Course Portal Loading Course Portal ⚡ BIS601 · Full Stack Dev About ...