{"id":754,"date":"2025-10-06T16:45:56","date_gmt":"2025-10-06T20:45:56","guid":{"rendered":"https:\/\/mse.ucf.edu\/fms\/?page_id=754"},"modified":"2026-04-15T14:03:32","modified_gmt":"2026-04-15T18:03:32","slug":"openings","status":"publish","type":"page","link":"https:\/\/mse.ucf.edu\/fms\/openings\/","title":{"rendered":"Openings"},"content":{"rendered":"\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.2\/css\/all.min.css\">\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/aos@next\/dist\/aos.css\" \/>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800&#038;family=Space+Grotesk:wght@400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n<style>\n        :root {\n            --primary-color: #00f2fe;\n            --secondary-color: #4facfe;\n            --dark-bg: #0a192f;\n            --darker-bg: #020c1b;\n            --text-color: #ffffff;\n            --text-muted: #b8c5e6;\n            --border-color: rgba(255, 255, 255, 0.15);\n            --glass-bg: rgba(255, 255, 255, 0.08);\n            --glass-border: rgba(255, 255, 255, 0.15);\n            --shadow-light: 0 4px 20px rgba(0, 242, 254, 0.1);\n            --shadow-medium: 0 8px 32px rgba(0, 242, 254, 0.15);\n            --shadow-heavy: 0 16px 64px rgba(0, 242, 254, 0.2);\n            --gradient-primary: linear-gradient(135deg, var(--primary-color), var(--secondary-color));\n            --gradient-bg: linear-gradient(135deg, var(--darker-bg), var(--dark-bg));\n            --border-radius: 16px;\n            --border-radius-sm: 12px;\n            --border-radius-lg: 24px;\n            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n            --transition-fast: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);\n        }\n\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: 'Space Grotesk', sans-serif;\n            background-color: var(--dark-bg);\n            color: var(--text-color);\n            line-height: 1.6;\n        }\n\n        .container {\n            max-width: 1200px;\n            margin: 0 auto;\n            padding: 0 2rem;\n        }\n\n        .page-header {\n            background: var(--darker-bg);\n            padding: 120px 0 80px;\n            position: relative;\n            overflow: hidden;\n            text-align: center;\n        }\n\n        .page-header::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            bottom: 0;\n            background: \n                radial-gradient(circle at 20% 20%, rgba(0, 242, 254, 0.1) 0%, transparent 50%),\n                radial-gradient(circle at 80% 80%, rgba(79, 172, 254, 0.1) 0%, transparent 50%);\n        }\n\n        .page-title {\n            font-size: 3.5rem;\n            font-weight: 800;\n            margin-bottom: 1rem;\n            background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));\n            -webkit-background-clip: text;\n            background-clip: text;\n            -webkit-text-fill-color: transparent;\n            position: relative;\n            z-index: 1;\n        }\n\n        .page-subtitle {\n            font-size: 1.3rem;\n            color: var(--text-muted);\n            max-width: 600px;\n            margin: 0 auto;\n            position: relative;\n            z-index: 1;\n        }\n\n        .openings-section {\n            padding: 100px 0;\n            position: relative;\n        }\n\n        .openings-grid {\n            display: grid;\n            gap: 2rem;\n            padding: 2rem 0 6rem;\n        }\n\n        .opening-card {\n            position: relative;\n            background: var(--glass-bg);\n            border: 1px solid var(--glass-border);\n            border-radius: var(--border-radius-lg);\n            padding: 3rem;\n            transition: var(--transition);\n            overflow: hidden;\n            backdrop-filter: blur(20px);\n            -webkit-backdrop-filter: blur(20px);\n            box-shadow: var(--shadow-light);\n        }\n\n        .opening-card::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            height: 2px;\n            background: var(--gradient-primary);\n            opacity: 0;\n            transition: var(--transition);\n        }\n\n        .opening-card:hover::before {\n            opacity: 1;\n        }\n\n        .opening-card:hover {\n            transform: translateY(-4px);\n            box-shadow: var(--shadow-medium);\n            border-color: rgba(0, 242, 254, 0.2);\n        }\n\n        .opening-icon {\n            width: 80px;\n            height: 80px;\n            border-radius: var(--border-radius);\n            background: var(--gradient-primary);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 2rem;\n            margin-bottom: 2rem;\n            box-shadow: var(--shadow-light);\n            transition: var(--transition);\n        }\n\n        .opening-card:hover .opening-icon {\n            transform: scale(1.05) rotate(5deg);\n            box-shadow: var(--shadow-medium);\n        }\n\n        .opening-title {\n            font-family: 'Space Grotesk', sans-serif;\n            font-size: 2.25rem;\n            font-weight: 700;\n            margin-bottom: 1rem;\n            letter-spacing: -0.02em;\n            color: var(--text-color);\n            line-height: 1.2;\n        }\n\n        .opening-level {\n            font-size: 1.25rem;\n            color: var(--primary-color);\n            font-weight: 600;\n            margin-bottom: 1.5rem;\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n        }\n\n        .opening-description {\n            color: var(--text-muted);\n            font-size: 1.125rem;\n            line-height: 1.7;\n            margin-bottom: 2rem;\n        }\n\n        .opening-requirements {\n            display: grid;\n            gap: 1rem;\n            margin-bottom: 2.5rem;\n        }\n\n        .requirement-item {\n            display: flex;\n            gap: 1.25rem;\n            align-items: flex-start;\n            padding: 1.25rem;\n            background: rgba(255, 255, 255, 0.05);\n            border-radius: var(--border-radius-sm);\n            border: 1px solid rgba(255, 255, 255, 0.08);\n            transition: var(--transition-fast);\n        }\n\n        .requirement-item:hover {\n            background: rgba(255, 255, 255, 0.08);\n            border-color: rgba(0, 242, 254, 0.3);\n            transform: translateY(-2px);\n        }\n\n        .requirement-icon {\n            width: 32px;\n            height: 32px;\n            border-radius: var(--border-radius-sm);\n            background: var(--gradient-primary);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: var(--dark-bg);\n            font-size: 0.875rem;\n            flex-shrink: 0;\n            box-shadow: var(--shadow-light);\n        }\n\n        .requirement-text {\n            color: var(--text-color);\n            line-height: 1.6;\n            font-size: 1rem;\n            font-weight: 500;\n        }\n\n        .opening-actions {\n            display: flex;\n            gap: 1rem;\n            flex-wrap: wrap;\n        }\n\n        .btn {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            gap: 0.75rem;\n            padding: 1rem 2rem;\n            border-radius: var(--border-radius-sm);\n            font-weight: 600;\n            font-size: 1rem;\n            text-decoration: none;\n            transition: var(--transition);\n            border: 1px solid transparent;\n            cursor: pointer;\n            position: relative;\n            overflow: hidden;\n            font-family: 'Inter', sans-serif;\n        }\n\n        .btn::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: -100%;\n            width: 100%;\n            height: 100%;\n            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);\n            transition: left 0.5s;\n        }\n\n        .btn:hover::before {\n            left: 100%;\n        }\n\n        .btn-primary {\n            background: var(--gradient-primary);\n            color: var(--dark-bg);\n            border: none;\n            font-weight: 600;\n        }\n\n        .btn-primary:hover {\n            transform: translateY(-2px);\n            box-shadow: var(--shadow-medium);\n        }\n\n        .btn-secondary {\n            background: var(--glass-bg);\n            color: var(--text-color);\n            border: 1px solid var(--glass-border);\n            backdrop-filter: blur(20px);\n            -webkit-backdrop-filter: blur(20px);\n        }\n\n        .btn-secondary:hover {\n            background: rgba(255, 255, 255, 0.1);\n            border-color: var(--primary-color);\n            transform: translateY(-2px);\n            box-shadow: var(--shadow-light);\n        }\n\n        .contact-section {\n            background: var(--darker-bg);\n            padding: 100px 0;\n            position: relative;\n            text-align: center;\n        }\n\n        .contact-card {\n            background: var(--glass-bg);\n            border: 1px solid var(--glass-border);\n            border-radius: var(--border-radius-lg);\n            padding: 4rem 3rem;\n            backdrop-filter: blur(20px);\n            -webkit-backdrop-filter: blur(20px);\n            position: relative;\n            overflow: hidden;\n            max-width: 800px;\n            margin: 0 auto;\n            box-shadow: var(--shadow-light);\n        }\n\n        .contact-card::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            height: 2px;\n            background: var(--gradient-primary);\n        }\n\n        .contact-title {\n            font-size: 2.5rem;\n            font-weight: 700;\n            margin-bottom: 1.5rem;\n            background: var(--gradient-primary);\n            -webkit-background-clip: text;\n            background-clip: text;\n            -webkit-text-fill-color: transparent;\n            font-family: 'Space Grotesk', sans-serif;\n        }\n\n        .contact-description {\n            color: var(--text-muted);\n            font-size: 1.2rem;\n            line-height: 1.8;\n            margin-bottom: 2rem;\n        }\n\n        .dynamic-orb {\n            position: fixed;\n            border-radius: 50%;\n            filter: blur(60px);\n            opacity: 0.1;\n            animation: orbFloat 20s infinite ease-in-out;\n            pointer-events: none;\n            z-index: -1;\n        }\n\n        .orb-1 {\n            width: 300px;\n            height: 300px;\n            background: radial-gradient(circle, var(--primary-color), transparent);\n            top: 10%;\n            left: 10%;\n            animation-delay: 0s;\n        }\n\n        .orb-2 {\n            width: 250px;\n            height: 250px;\n            background: radial-gradient(circle, var(--secondary-color), transparent);\n            top: 60%;\n            right: 15%;\n            animation-delay: -8s;\n        }\n\n        .orb-3 {\n            width: 200px;\n            height: 200px;\n            background: radial-gradient(circle, #64ffda, transparent);\n            bottom: 20%;\n            left: 20%;\n            animation-delay: -16s;\n        }\n\n        @keyframes orbFloat {\n            0%, 100% {\n                transform: translate(0, 0) scale(1);\n            }\n            25% {\n                transform: translate(20px, -30px) scale(1.1);\n            }\n            50% {\n                transform: translate(-10px, -20px) scale(0.9);\n            }\n            75% {\n                transform: translate(-20px, 10px) scale(1.05);\n            }\n        }\n\n        #openingsParticleCanvas {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            z-index: 0;\n            pointer-events: none;\n            opacity: 0.3;\n        }\n\n        body::before {\n            content: '';\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: \n                radial-gradient(circle at 20% 20%, rgba(0, 242, 254, 0.1) 0%, transparent 50%),\n                radial-gradient(circle at 80% 80%, rgba(79, 172, 254, 0.1) 0%, transparent 50%),\n                radial-gradient(circle at 40% 60%, rgba(100, 255, 218, 0.05) 0%, transparent 50%);\n            z-index: -1;\n            pointer-events: none;\n        }\n\n        .opening-card {\n            animation: slideInUp 0.6s ease-out forwards;\n            opacity: 0;\n            transform: translateY(30px);\n        }\n\n        .opening-card:nth-child(1) { animation-delay: 0.1s; }\n        .opening-card:nth-child(2) { animation-delay: 0.2s; }\n        .opening-card:nth-child(3) { animation-delay: 0.3s; }\n\n        @keyframes slideInUp {\n            to {\n                opacity: 1;\n                transform: translateY(0);\n            }\n        }\n\n        .opening-card {\n            animation: dynamicFloat 8s ease-in-out infinite;\n        }\n\n        .opening-card:nth-child(odd) {\n            animation-delay: -2s;\n        }\n\n        .opening-card:nth-child(even) {\n            animation-delay: -4s;\n        }\n\n        @keyframes dynamicFloat {\n            0%, 100% {\n                transform: translateY(0px) rotate(0deg);\n            }\n            25% {\n                transform: translateY(-8px) rotate(0.5deg);\n            }\n            50% {\n                transform: translateY(-4px) rotate(0deg);\n            }\n            75% {\n                transform: translateY(-12px) rotate(-0.5deg);\n            }\n        }\n\n        .opening-card:hover {\n            animation-play-state: paused;\n            transform: translateY(-8px) scale(1.01) !important;\n            box-shadow: var(--shadow-medium);\n        }\n\n        @media (max-width: 768px) {\n            .container {\n                padding: 0 1.5rem;\n            }\n\n            .page-header {\n                padding: 80px 0 60px;\n            }\n\n            .page-title {\n                font-size: 2.5rem;\n            }\n\n            .page-subtitle {\n                font-size: 1.1rem;\n            }\n\n            .openings-section {\n                padding: 60px 0;\n            }\n\n            .opening-card {\n                padding: 2rem;\n            }\n\n            .opening-actions {\n                flex-direction: column;\n                align-items: center;\n            }\n\n            .btn {\n                width: 100%;\n                justify-content: center;\n            }\n\n            .contact-card {\n                padding: 3rem 2rem;\n            }\n\n            .contact-title {\n                font-size: 2rem;\n            }\n        }\n\n        @media (max-width: 480px) {\n            .container {\n                padding: 0 1rem;\n            }\n\n            .page-title {\n                font-size: 2rem;\n            }\n\n            .opening-card {\n                padding: 1.5rem;\n            }\n\n            .opening-title {\n                font-size: 1.5rem;\n            }\n        }\n        <\/style>\n    <!-- Dynamic Background Elements -->\n    <canvas id=\"openingsParticleCanvas\"><\/canvas>\n    <div class=\"dynamic-orb orb-1\"><\/div>\n    <div class=\"dynamic-orb orb-2\"><\/div>\n    <div class=\"dynamic-orb orb-3\"><\/div>\n    \n    <!-- Openings Section -->\n    <section class=\"openings-section\">\n        <div class=\"container\">\n            <div class=\"openings-grid\">\n                <div class=\"opening-card\" data-aos=\"fade-up\" data-aos-delay=\"100\">\n                    <div class=\"opening-icon\">\n                        <i class=\"fas fa-microchip\"><\/i>\n                    <\/div>\n                    <h3 class=\"opening-title\">FPGA &#038; Hardware Simulation<\/h3>\n                    <div class=\"opening-level\">Undergraduate Research Position<\/div>\n                    <p class=\"opening-description\">\n                        The Functional Materials Studio is seeking an undergraduate research assistant to support ongoing FPGA-based hardware simulation projects. \n                        The student will work directly with graduate researchers and contribute to active experiments in hardware design and computational simulation.\n                    <\/p>\n                    <div class=\"opening-requirements\">\n                        <div class=\"requirement-item\">\n                            <div class=\"requirement-icon\">\n                                <i class=\"fas fa-graduation-cap\"><\/i>\n                            <\/div>\n                            <span class=\"requirement-text\">Undergraduate student in Electrical Engineering, Computer Engineering, or Computer Science<\/span>\n                        <\/div>\n                        <div class=\"requirement-item\">\n                            <div class=\"requirement-icon\">\n                                <i class=\"fas fa-code\"><\/i>\n                            <\/div>\n                            <span class=\"requirement-text\">Coursework or experience in Verilog or VHDL<\/span>\n                        <\/div>\n                        <div class=\"requirement-item\">\n                            <div class=\"requirement-icon\">\n                                <i class=\"fas fa-cogs\"><\/i>\n                            <\/div>\n                            <span class=\"requirement-text\">Background in digital logic design or computer architecture<\/span>\n                        <\/div>\n                        <div class=\"requirement-item\">\n                            <div class=\"requirement-icon\">\n                                <i class=\"fas fa-plus\"><\/i>\n                            <\/div>\n                            <span class=\"requirement-text\">Familiarity with Python or C\/C++ is a plus<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"opening-actions\">\n                        <a href=\"\/fms\/contact\" class=\"btn btn-primary\">\n                            Apply Now\n                            <i class=\"fas fa-paper-plane\"><\/i>\n                        <\/a>\n                        <a href=\"\/fms\/research\" class=\"btn btn-secondary\">\n                            Learn More\n                            <i class=\"fas fa-arrow-right\"><\/i>\n                        <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Scripts -->\n    <script src=\"https:\/\/unpkg.com\/aos@next\/dist\/aos.js\"><\/script>\n        <script>\n        AOS.init({\n            duration: 800,\n            once: true,\n            offset: 100\n        });\n\n        function initDynamicEffects() {\n            initParticleSystem();\n            initDynamicOrbs();\n        }\n\n        function initParticleSystem() {\n            const canvas = document.getElementById('openingsParticleCanvas');\n            if (!canvas) return;\n            \n            const ctx = canvas.getContext('2d');\n            let particles = [];\n\n            function resizeCanvas() {\n                canvas.width = canvas.offsetWidth;\n                canvas.height = canvas.offsetHeight;\n            }\n\n            class Particle {\n                constructor() {\n                    this.reset();\n                    this.hue = Math.random() * 60 + 180;\n                }\n\n                reset() {\n                    this.x = Math.random() * canvas.width;\n                    this.y = Math.random() * canvas.height;\n                    this.size = Math.random() * 2 + 0.5;\n                    this.speedX = Math.random() * 0.3 - 0.15;\n                    this.speedY = Math.random() * 0.3 - 0.15;\n                    this.opacity = Math.random() * 0.3 + 0.1;\n                    this.pulse = Math.random() * Math.PI * 2;\n                    this.pulseSpeed = Math.random() * 0.02 + 0.01;\n                }\n\n                update() {\n                    this.x += this.speedX;\n                    this.y += this.speedY;\n\n                    if (this.x < 0 || this.x > canvas.width) this.speedX *= -1;\n                    if (this.y < 0 || this.y > canvas.height) this.speedY *= -1;\n\n                    this.pulse += this.pulseSpeed;\n                    this.currentSize = this.size + Math.sin(this.pulse) * 0.3;\n                }\n\n                draw() {\n                    const gradient = ctx.createRadialGradient(\n                        this.x, this.y, 0,\n                        this.x, this.y, this.currentSize * 2\n                    );\n                    gradient.addColorStop(0, `hsla(${this.hue}, 70%, 60%, ${this.opacity})`);\n                    gradient.addColorStop(1, `hsla(${this.hue}, 70%, 60%, 0)`);\n                    \n                    ctx.beginPath();\n                    ctx.arc(this.x, this.y, this.currentSize, 0, Math.PI * 2);\n                    ctx.fillStyle = gradient;\n                    ctx.fill();\n                }\n            }\n\n            function createParticles() {\n                const particleCount = Math.min(15, Math.floor(canvas.width * canvas.height \/ 50000));\n                particles = [];\n                for (let i = 0; i < particleCount; i++) {\n                    particles.push(new Particle());\n                }\n            }\n\n            function animate() {\n                ctx.clearRect(0, 0, canvas.width, canvas.height);\n                particles.forEach(particle => {\n                    particle.update();\n                    particle.draw();\n                });\n                requestAnimationFrame(animate);\n            }\n\n            resizeCanvas();\n            createParticles();\n            animate();\n\n            window.addEventListener('resize', () => {\n                resizeCanvas();\n                createParticles();\n            });\n        }\n\n        function initDynamicOrbs() {\n            const orbs = document.querySelectorAll('.dynamic-orb');\n            \n            orbs.forEach((orb, index) => {\n                const randomX = (Math.random() - 0.5) * 100;\n                const randomY = (Math.random() - 0.5) * 100;\n                const randomScale = 0.8 + Math.random() * 0.4;\n                \n                orb.style.transform = `translate(${randomX}px, ${randomY}px) scale(${randomScale})`;\n                \n                window.addEventListener('scroll', () => {\n                    const scrolled = window.pageYOffset;\n                    const rate = scrolled * 0.05;\n                    \n                    orb.style.transform = `translate(${randomX + rate}px, ${randomY + rate * 0.3}px) scale(${randomScale})`;\n                });\n            });\n        }\n\n        document.addEventListener('DOMContentLoaded', () => {\n            initDynamicEffects();\n        });\n        <\/script>\n","protected":false},"excerpt":{"rendered":"<p>FPGA &#038; Hardware Simulation Undergraduate Research Position The Functional Materials Studio is seeking an undergraduate research assistant to support ongoing FPGA-based hardware simulation projects. The student will work directly with graduate researchers and contribute to active experiments in hardware design and computational simulation. Undergraduate student in Electrical Engineering, Computer Engineering, or Computer Science Coursework or [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_analysis_target_kw":"","footnotes":""},"class_list":["post-754","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/pages\/754","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/comments?post=754"}],"version-history":[{"count":32,"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/pages\/754\/revisions"}],"predecessor-version":[{"id":966,"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/pages\/754\/revisions\/966"}],"wp:attachment":[{"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/media?parent=754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}