Skip to content

Latest commit

 

History

History
139 lines (104 loc) · 13.9 KB

README.md

File metadata and controls

139 lines (104 loc) · 13.9 KB

Immersive Engineering Lab (CMP 464/343) - Full Stack Web Development

Department of Computer Science, Lehman College

Course Overview

Welcome to the Immersive Engineering Lab! This course is designed to equip students with the practical skills needed to succeed in an AI-driven tech industry. Moving beyond just coding, this class emphasizes systems design and architecture to provide a holistic understanding of modern full-stack web development. Students will learn to conceptualize, build, and deploy scalable web applications while leveraging emerging technologies like AI to enhance productivity and quality.

By the end of this course, students will:

  • Understand the core components of modern web applications, including front-end, back-end, databases, APIs, and cloud infrastructure.
  • Develop systems architecture diagrams and understand the rationale behind design decisions, such as caching and scalability.
  • Gain hands-on experience building projects collaboratively using industry-standard tools and workflows.
  • Learn how to integrate AI tools into the development process, focusing on testing, QA, and automation.

Course Format

This course is about preparing you for the real world. The tech landscape is changing rapidly, and understanding how to design, build, and collaborate in an AI-driven environment will give you a competitive edge. Be curious, ask questions, and dive deep into the projects—your portfolio will thank you later!

Class Schedule

  • Weekly Meetings: 2 sessions (1.5 hours each)
    • Lab Day: Focus on hands-on building, collaborative exercises, and practical implementation.
    • Content Day: Context setting, demonstrations, and deep dives into key concepts.

Learning Approach

  • Active Learning: Class time is dedicated to building projects and working through challenges collaboratively. Lectures are assigned as homework via readings or recorded videos.
  • Flexible Labs: Activities include:
    • Developing systems architecture diagrams and whiteboarding exercises.
    • Implementing design decisions, such as setting up caching mechanisms, scaling services, or integrating APIs.
    • Creating deliverables to showcase on GitHub, such as functional prototypes, architecture diagrams, and documentation.

Tools and Platforms

Students will use the following tools throughout the course:

  • GitHub: For version control and project collaboration.
  • Slack: For communication and peer support.
  • AI Tools: Exploring technologies like GitHub Copilot and ChatGPT for coding assistance and QA.
  • Development Frameworks: React (with minimal JavaScript), Express, and database systems.
  • Cloud Platforms: Hands-on experience with cloud infrastructure for deployment and scalability.

Course Topics

Systems Architecture and Full Stack Development

  • Introduction to core components of a modern web application:
    • Front-End: HTML, CSS, minimal JavaScript, and React basics.
    • Back-End: Express.js, RESTful APIs, and Microservices architecture.
    • Databases: Relational and NoSQL databases (PostgreSQL, MongoDB).
    • Cloud Infrastructure: Basics of deployment, scaling, and serverless functions.

AI-Forward Development

  • Using AI for code generation, debugging, and optimization.
  • Understanding AI’s role in systems design and how to work alongside AI tools effectively.
  • QA and testing in an AI-driven workflow.

Collaborative Development

  • Agile workflows: Sprints, standups, and task management.
  • Version control best practices: Git and GitHub collaboration.
  • Communication and accountability through online platforms (Slack).

Practical Design Choices

  • Systems architecture principles: Caching, load balancing, and fault tolerance.
  • Diagramming and whiteboarding exercises for design planning.
  • Writing effective documentation and README files for projects.

Weekly Schedule and Topics

Week Content Day (Monday) Lab Day (Wednesday) Instructor Resources
1 (Jan 27) Course Introduction and Overview of Full Stack Web Development No Class Full Stack Web Development - Coursera
2 (Feb 3) Introduction to HTML and CSS Hands-on Practice with HTML and CSS HTML & CSS Basics
3 (Feb 10) Introduction to JavaScript No Class JavaScript Basics - MDN
4 (Feb 17) No Class JavaScript DOM Manipulation DOM Manipulation Guide - MDN
5 (Feb 24) Introduction to React.js Building a Simple React Application React Official Docs
6 (Mar 2) Introduction to Node.js and Express.js Creating RESTful APIs with Express Node.js and Express Guide - MDN
7 (Mar 9) Introduction to Databases Working with MongoDB MongoDB Basics
8 (Mar 16) Introduction to Systems Architecture Designing System Architecture Diagrams System Architecture - MIT OpenCourseWare
9 (Mar 23) Introduction to Caching and Performance Optimization Implementing Caching with Redis Redis Documentation
10 (Mar 30) No Class Scaling Applications and Load Balancing AWS Load Balancing
11 (Apr 8) Introduction to Authentication and Security Implementing Authentication with JWT JWT Authentication - JWT.io
12 (Apr 15-19) Spring Break - No Classes - -
13 (Apr 22) Introduction to Cloud Infrastructure Deploying a Full-Stack Application Deploying React and Node.js Apps - Heroku
14 (Apr 29) Introduction to AI and Automation in Development Using AI Tools for Coding and Debugging GitHub Copilot
15 (May 6) Testing and Quality Assurance in Systems Writing Unit Tests and API Testing Jest Testing Guide
16 (May 13) Capstone Project Review and Wrap-Up Final Project Submission and Peer Reviews -

Grading and Expectations

Grading Breakdown

  1. Attendance: Regular attendance is critical for hands-on labs and collaborative exercises.
  2. Project Delivery: Graded based on GitHub commits, functionality of deliverables, and adherence to specified criteria.
  3. Participation: Active engagement through Slack, peer support, and class discussions.

Project Requirements

  • All projects must be hosted on GitHub with clear documentation (e.g., a README file).
  • Deliverables include both working prototypes and supplementary artifacts (e.g., architecture diagrams, testing plans).

Getting Started

Prerequisites

  • Basic programming knowledge (e.g., Java or Python).
  • Familiarity with foundational web concepts (HTML/CSS) is helpful but not required.

Resources

To support your learning, you will have access to:

  • Recorded lectures and reading materials.
  • Sample projects and templates to kickstart development.
  • Online forums for peer collaboration and troubleshooting.

Academic Integrity

This course observed and upholds the CUNY Policy on Academic Integrity (Accessible Plain Text). Each student in this course is expected to abide by this policy. Any work submitted by a student in this course for academic credit will be the student's own work. Collaboration is allowed where assignments are designated as group projects.

You are encouraged to study together and to discuss information and concepts covered in lecture and the sections with other students. You can give "consulting" help to or receive "consulting" help from such students. However, this permissible cooperation should never involve one student having possession of a copy of all or part of work done by someone else, in the form of an e-mail, an e-mail attachment file, a diskette, or a hard copy.

Should copying occur, both the student who copied work from another student and the student who gave material to be copied will both automatically receive a zero for the assignment. Penalty for violation of this Code can also be extended to include failure of the course and University disciplinary action.

During examinations, you must do your own work. Talking or discussion is not permitted during the examinations, nor may you compare papers, copy from others, or collaborate in any way. Any collaborative behavior during the examinations will result in failure of the exam, and may lead to failure of the course and University disciplinary action.

Reasonable Accommodations and Academic Adjustments

In compliance with CUNY policy (PDF) and equal access laws, I am available to discuss appropriate academic accommodations that may be required for student with disabilities.

Inclusivity Statement

We understand that our members represent a rich variety of backgrounds and perspectives. The Computer Science department is committed to providing an atmosphere for learning that respects diversity. While working together to build this community we ask all members to:

  • share their unique experiences, values and beliefs
  • be open to the views of others
  • honor the uniqueness of their colleagues
  • appreciate the opportunity that we have to learn from each other in this community
  • value each other's opinions and communicate in a respectful manner
  • keep confidential discussions that the community has of a personal (or professional) nature
  • use this opportunity together to discuss ways in which we can create an inclusive environment in this course and across the CUNY community