1+ "use client" ;
2+
3+ import { useState , useEffect } from "react" ;
4+ // Assuming these are custom components, they are preserved
5+ import Background from "@/components/Background" ;
6+ import Navbar from "@/components/Navbar" ;
7+ import Footer from "@/components/Footer" ;
8+ import Major from "@/components/Text/Major" ; // Used for Headings
9+ import Mini from "@/components/Text/Mini" ; // Used for Body Text
10+
11+ // Custom Icon Components (Placeholder for better UI)
12+ const CodeIcon = ( props : React . SVGProps < SVGSVGElement > ) => (
13+ < svg { ...props } xmlns = "http://www.w3.org/2000/svg" fill = "none" viewBox = "0 0 24 24" strokeWidth = { 1.5 } stroke = "currentColor" >
14+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M17.25 6.75 14.25 12l3 5.25m-1.5-8.625 2.25 2.25M17.25 6.75l-4.25 4.25m4.25-4.25 4.25 4.25M7.75 6.75l3 5.25-3 5.25m1.5-8.625-2.25 2.25m-1.5 1.5 4.25 4.25M6.75 17.25l-4.25-4.25m4.25 4.25-4.25 4.25" />
15+ </ svg >
16+ ) ;
17+ const BookOpenIcon = ( props : React . SVGProps < SVGSVGElement > ) => (
18+ < svg { ...props } xmlns = "http://www.w3.org/2000/svg" fill = "none" viewBox = "0 0 24 24" strokeWidth = { 1.5 } stroke = "currentColor" >
19+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 12.6716 5 13.5 5H18.5C19.3284 5 20 5.67157 20 6.5V17.5C20 18.3284 19.3284 19 18.5 19H13.5C12.6716 19 12 18.3284 12 17.5V6.5Z" />
20+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
21+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
22+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
23+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
24+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
25+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
26+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
27+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
28+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
29+ </ svg >
30+ ) ;
31+ const UsersIcon = ( props : React . SVGProps < SVGSVGElement > ) => (
32+ < svg { ...props } xmlns = "http://www.w3.org/2000/svg" fill = "none" viewBox = "0 0 24 24" strokeWidth = { 1.5 } stroke = "currentColor" >
33+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.964 0a7.5 7.5 0 0 0-11.964 0M12 5.75a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z" />
34+ < path strokeLinecap = "round" strokeLinejoin = "round" d = "M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.964 0a7.5 7.5 0 0 0-11.964 0M12 5.75a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z" />
35+ </ svg >
36+ ) ;
37+
38+
39+ const BootcampPage : React . FC = ( ) => {
40+ const [ windowWidth , setWindowWidth ] = useState < number > (
41+ typeof window !== "undefined" ? window . innerWidth : 1024
42+ ) ;
43+
44+ useEffect ( ( ) => {
45+ const handleResize = ( ) => setWindowWidth ( window . innerWidth ) ;
46+ window . addEventListener ( "resize" , handleResize ) ;
47+ return ( ) => window . removeEventListener ( "resize" , handleResize ) ;
48+ } , [ ] ) ;
49+
50+ return (
51+ // Use a very dark background for contrast (e.g., bg-gray-900)
52+ < div className = "relative min-h-screen flex flex-col bg-gray-950" >
53+ < Background className = "absolute inset-0 z-0 opacity-50" />
54+
55+ < Navbar
56+ screen_width = { windowWidth }
57+ className = "fixed top-0 left-0 w-full z-30 bg-gray-950/90 backdrop-blur-sm shadow-lg shadow-indigo-900/10"
58+ page = "other"
59+ />
60+
61+ { /* Main content with refined vertical spacing */ }
62+ < main className = "relative z-10 pt-[120px] pb-32 px-4 sm:px-8 md:px-16 space-y-32" >
63+ { /* HERO SECTION - Enhanced Typography and Gradient */ }
64+ < section className = "text-center space-y-4" >
65+ < Major type = "b" className = "text-white text-5xl sm:text-6xl font-extrabold tracking-tight" >
66+ Data Science Bootcamp
67+ </ Major >
68+
69+ < Major type = "b" className = "text-transparent bg-clip-text bg-gradient-to-r from-indigo-400 to-cyan-400 text-3xl sm:text-4xl font-bold" >
70+ Georgia Tech
71+ </ Major >
72+
73+ < Mini className = "text-gray-400 max-w-xl mx-auto pt-2 text-lg" >
74+ Making data science accessible for all students, regardless of prior experience.
75+ </ Mini >
76+ </ section >
77+
78+ { /* ABOUT THE BOOTCAMP - Clean Card */ }
79+ < section className = "max-w-4xl mx-auto space-y-8 bg-gray-900/60 p-8 rounded-xl shadow-2xl border border-indigo-700/50" >
80+ < Major type = "b" className = "text-indigo-400 text-3xl border-b border-indigo-400/30 pb-3" >
81+ About the Bootcamp
82+ </ Major >
83+
84+ < Mini className = "text-gray-300 leading-relaxed" >
85+ The DSGT Data Science Bootcamp is designed to introduce students to
86+ the core tools and ideas behind modern data science—< strong > no prior
87+ experience required</ strong > .
88+ </ Mini >
89+
90+ < Mini className = "text-gray-300 leading-relaxed" >
91+ Through structured workshops, guided projects, and collaborative
92+ learning, the bootcamp focuses on building < strong > practical skills</ strong > that can
93+ be applied to real-world problems and enhance your portfolio.
94+ </ Mini >
95+ </ section >
96+
97+ { /* WHAT YOU’LL LEARN - Iconic Card Grid */ }
98+ < section className = "max-w-6xl mx-auto space-y-12" >
99+ < Major type = "b" className = "text-white text-4xl text-center font-bold" >
100+ Essential Skills You’ll Master
101+ </ Major >
102+
103+ < div className = "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6" >
104+ { /* Python Card */ }
105+ < div className = "bg-gray-800/70 p-6 rounded-2xl shadow-xl border border-gray-700 hover:bg-gray-700/80 transition duration-300 ease-in-out transform hover:scale-[1.02]" >
106+ < CodeIcon className = "h-8 w-8 text-yellow-500 mb-3" />
107+ < Major as = "h3" compact className = "text-white text-xl" > Python</ Major >
108+ < Mini className = "text-gray-400 mt-2 text-sm" >
109+ Learn the fundamentals of this powerful, beginner-friendly language, essential for data science and machine learning.
110+ </ Mini >
111+ </ div >
112+
113+ { /* Pandas Card */ }
114+ < div className = "bg-gray-800/70 p-6 rounded-2xl shadow-xl border border-gray-700 hover:bg-gray-700/80 transition duration-300 ease-in-out transform hover:scale-[1.02]" >
115+ < CodeIcon className = "h-8 w-8 text-blue-500 mb-3" />
116+ < Major as = "h3" compact className = "text-white text-xl" > Pandas</ Major >
117+ < Mini className = "text-gray-400 mt-2 text-sm" >
118+ Master DataFrames to clean, manipulate, and analyze structured datasets from real-world sources efficiently.
119+ </ Mini >
120+ </ div >
121+
122+ { /* NumPy Card */ }
123+ < div className = "bg-gray-800/70 p-6 rounded-2xl shadow-xl border border-gray-700 hover:bg-gray-700/80 transition duration-300 ease-in-out transform hover:scale-[1.02]" >
124+ < CodeIcon className = "h-8 w-8 text-green-500 mb-3" />
125+ < Major as = "h3" compact className = "text-white text-xl" > NumPy</ Major >
126+ < Mini className = "text-gray-400 mt-2 text-sm" >
127+ Build a foundation in numerical computing for high-performance array and matrix operations, core to ML algorithms.
128+ </ Mini >
129+ </ div >
130+
131+ { /* Machine Learning Card */ }
132+ < div className = "bg-gray-800/70 p-6 rounded-2xl shadow-xl border border-gray-700 hover:bg-gray-700/80 transition duration-300 ease-in-out transform hover:scale-[1.02]" >
133+ < CodeIcon className = "h-8 w-8 text-purple-500 mb-3" />
134+ < Major as = "h3" compact className = "text-white text-xl" > Machine Learning</ Major >
135+ < Mini className = "text-gray-400 mt-2 text-sm" >
136+ Introduction to key ML concepts, how models learn from data, and making predictions and uncovering patterns.
137+ </ Mini >
138+ </ div >
139+ </ div >
140+
141+ < Mini className = "text-gray-500 text-center text-sm italic" >
142+ …and additional tools commonly used in the data science pipeline
143+ </ Mini >
144+ </ section >
145+
146+ { /* WHAT IS DATA SCIENCE - Iconic Visualization Section */ }
147+ < section className = "max-w-4xl mx-auto space-y-6 text-center" >
148+ < Major type = "b" className = "text-white text-4xl font-bold" >
149+ What Is Data Science?
150+ </ Major >
151+
152+ < Mini className = "text-gray-400 text-lg leading-relaxed" >
153+ Data science is the intersection of three key disciplines—< strong > programming</ strong > , < strong > statistics</ strong > , and < strong > domain knowledge</ strong > —used to extract actionable insights from raw data. It enables organizations to identify trends and make data-driven decisions.
154+ </ Mini >
155+
156+
157+ </ section >
158+
159+ { /* BOOTCAMP OPTIONS - Comparison Cards */ }
160+ < section className = "max-w-6xl mx-auto space-y-12" >
161+ < Major type = "b" className = "text-white text-4xl text-center font-bold" >
162+ Choose Your Path
163+ </ Major >
164+
165+ < div className = "grid grid-cols-1 md:grid-cols-2 gap-8" >
166+ { /* In-Person Option */ }
167+ < div className = "bg-gray-800 border-t-4 border-indigo-500 rounded-2xl p-8 shadow-2xl hover:shadow-indigo-500/30 transition duration-300" >
168+ < UsersIcon className = "h-10 w-10 text-indigo-400 mb-4" />
169+ < Major as = "h3" compact className = "text-white text-2xl mb-4" >
170+ In-Person Bootcamp
171+ </ Major >
172+ < ul className = "mt-4 space-y-3 text-gray-300 text-base" >
173+ < li className = "flex items-start" >
174+ < span className = "text-indigo-400 text-xl mr-2" > •</ span > Introductory data science curriculum
175+ </ li >
176+ < li className = "flex items-start" >
177+ < span className = "text-indigo-400 text-xl mr-2" > •</ span > Biweekly hands-on workshops
178+ </ li >
179+ < li className = "flex items-start" >
180+ < span className = "text-indigo-400 text-xl mr-2" > •</ span > < strong > Weekly dedicated mentor meetings</ strong >
181+ </ li >
182+ < li className = "flex items-start" >
183+ < span className = "text-indigo-400 text-xl mr-2" > •</ span > Guided, hands-on project experience
184+ </ li >
185+ < li className = "flex items-start" >
186+ < span className = "text-indigo-400 text-xl mr-2" > •</ span > Communication and support via Slack
187+ </ li >
188+ </ ul >
189+ </ div >
190+
191+ { /* Udemy Option */ }
192+ < div className = "bg-gray-800 border-t-4 border-cyan-500 rounded-2xl p-8 shadow-2xl hover:shadow-cyan-500/30 transition duration-300" >
193+ < BookOpenIcon className = "h-10 w-10 text-cyan-400 mb-4" />
194+ < Major as = "h3" compact className = "text-white text-2xl mb-4" > Udemy Self-Paced Course</ Major >
195+ < ul className = "mt-4 space-y-3 text-gray-300 text-base" >
196+ < li className = "flex items-start" >
197+ < span className = "text-cyan-400 text-xl mr-2" > •</ span > Introductory data science curriculum
198+ </ li >
199+ < li className = "flex items-start" >
200+ < span className = "text-cyan-400 text-xl mr-2" > •</ span > Fully self-paced, flexible learning
201+ </ li >
202+ < li className = "flex items-start" >
203+ < span className = "text-cyan-400 text-xl mr-2" > •</ span > < strong > Focus on core concepts only</ strong > (No guided projects)
204+ </ li >
205+ < li className = "flex items-start" >
206+ < span className = "text-cyan-400 text-xl mr-2" > •</ span > Peer collaboration via dedicated Slack channel
207+ </ li >
208+ < li className = "flex items-start" >
209+ < span className = "text-cyan-400 text-xl mr-2" > •</ span > Access to all recorded lecture content
210+ </ li >
211+ </ ul >
212+ </ div >
213+ </ div >
214+ </ section >
215+
216+ { /* RESOURCES - Clean List with better emphasis */ }
217+ < section className = "max-w-5xl mx-auto space-y-8 pb-24" >
218+ < Major type = "b" className = "text-white text-4xl text-center font-bold" >
219+ Advanced Learning Resources
220+ </ Major >
221+
222+ < div className = "bg-gray-800/70 p-8 rounded-xl space-y-4 shadow-xl border border-gray-700" >
223+ { [
224+ { title : 'Mathematics for Machine Learning' , prereq : 'No prerequisites' } ,
225+ { title : 'Python for Data Science (Beginner)' , prereq : 'No prerequisites' } ,
226+ { title : 'Advanced Python' , prereq : 'Beginner Python knowledge required' } ,
227+ { title : 'Fundamentals of Machine Learning' , prereq : 'No prerequisites' } ,
228+ { title : 'Neural Networks & Deep Learning' , prereq : 'Linear Algebra, Calculus, Python' } ,
229+ { title : 'Linear Algebra (3Blue1Brown)' , prereq : 'Video Series' } ,
230+ ] . map ( ( resource , index ) => (
231+ < div key = { index } className = "flex justify-between items-center border-b border-gray-700 last:border-b-0 py-2" >
232+ < Mini className = "text-white text-lg font-medium" >
233+ { resource . title }
234+ </ Mini >
235+ < Mini className = "text-indigo-300 text-sm font-light italic" >
236+ { resource . prereq }
237+ </ Mini >
238+ </ div >
239+ ) ) }
240+ </ div >
241+ </ section >
242+ </ main >
243+
244+ < Footer screen_width = { windowWidth } className = "bg-gray-900/80 border-t border-indigo-900" />
245+ </ div >
246+ ) ;
247+ } ;
248+
249+ export default BootcampPage ;
0 commit comments