Software Development
Relevant Coursework:
-
CSCE 1030 - Computer Science I
-
CSCE 1040 - Computer Science II
-
CSCE 2100 - Foundations of Computing (not Discrete Structures)
-
CSCE 2110 - Foundations of Data Structures (not Computer Organization)
-
TECM 2700 - Technical Writing
-
MATH 1710 - Calculus I
Recommended Electives:
-
Software Engineering: Learn modular design, software testing, and documentation practices.
-
Artificial Intelligence: Explore machine learning, natural language processing, and data science.
-
Database Systems: Gain insights into database functionality and how to design efficient data storage solutions.
Each course is designed to build on the knowledge gained in previous ones, ensuring you develop a comprehensive understanding of computer science. We encourage you to take advantage of these opportunities to learn, grow, and prepare for a rewarding career in technology.
Median Total Comp: (will be updated with resources)
-
Front-end Developer: $50,000 to $70,000 annually
-
Back-end Developer: $55,000 to $75,000 annually
-
Full-stack Developer: $58,000 to $80,000 annually
-
Mobile App Developer (iOS, Android): $50,000 to $75,000 annually
-
Game Developer: $40,000 to $65,000 annually, depending on the specific focus within game development
-
DevOps Engineer: $60,000 to $85,000 annually
Top Tech Companies:
Google, Microsoft, Apple, Amazon, Facebook (Meta), Tesla, SpaceX, Netflix, IBM, Intel, NVIDIA, Salesforce, SAP
​
Front-end Developer​​
HTML (Hyper Text Markup Language)
-
Structure web pages effectively.
-
Understand and apply semantic HTML for accessibility and SEO.
-
Use various HTML tags appropriately.
CSS (Cascading Style Sheets)
-
Master styling techniques for web pages.
-
Utilize CSS preprocessors like Sass or LESS.
-
Implement responsive design principles for cross-device compatibility.
JavaScript
-
Understand the core programming concepts of JavaScript.
-
Manipulate the DOM (Document Object Model) for interactivity.
-
Work with asynchronous operations using callbacks, promises, and async/await.
-
Apply modern JavaScript features (ES6+).
JavaScript Frameworks and Libraries
-
Familiarity with frameworks like React, Angular, or Vue.js.
-
Knowledge of state management libraries such as Redux or Vuex.
-
Implement component-based architectures.
Responsive Design
-
Create responsive layouts using media queries.
-
Embrace mobile-first design principles.
Cross-Browser Compatibility
-
Ensure applications work consistently across various browsers.
-
Debug using browser developer tools.
Version Control / Git
-
Use Git for version control.
-
Understand branching, merging, and pull requests.
Build Tools and Task Runners
-
Work with tools like Webpack or Parcel.
-
Automate tasks with npm scripts.
Web Performance Optimization
-
Optimize website speed and performance.
-
Implement lazy loading, code splitting, and other best practices.
Basic Graphic Design Skills
-
Understand design principles: color theory, typography, and layout.
-
Use design tools like Adobe XD, Figma, or Sketch.
Command Line / Shell
-
Navigate and execute commands using the command line.
-
Understand basic shell scripting.
RESTful APIs and AJAX
-
Make API calls using AJAX or Fetch API.
-
Integrate external data into web applications.
Testing and Debugging
-
Write unit tests using frameworks like Jest.
-
Debug efficiently with browser developer tools.
Continuous Learning
-
Stay updated on industry trends, technologies, and best practices.
-
Engage with the developer community through forums, blogs, and conferences.
Back End Developer
Server-Side Programming Languages
-
Proficiency in at least one back-end programming language such as:
-
Java (with frameworks like Spring or Jakarta EE).
-
Python (with frameworks like Django or Flask).
-
Ruby (with Ruby on Rails).
-
PHP (with frameworks like Laravel or Symfony).
-
Node.js (using JavaScript or TypeScript).
-
Database Management
-
Knowledge of relational databases (e.g., MySQL, PostgreSQL, Oracle) or NoSQL databases (e.g., MongoDB, Cassandra).
-
Understanding of database design and optimization.
-
Ability to write complex SQL queries.
Server-Side Frameworks
-
Familiarity with server-side frameworks that streamline development (e.g., Express.js for Node.js, Django for Python, Ruby on Rails for Ruby).
API (Application Programming Interface)
-
Design and implementation of RESTful APIs.
-
Knowledge of API authentication and authorization (e.g., OAuth, JWT).
Web Servers and Deployment
-
Configuration and management of web servers (e.g., Apache, Nginx).
-
Deployment of applications using platforms like Heroku, AWS, or Docker.
Server-Side Templating
-
Using templating engines to generate dynamic content on the server-side (e.g., EJS, Jinja).
Version Control/Git
-
Proficiency in using Git for version control.
-
Understanding of branching, merging, and pull requests.
Authentication and Authorization
-
Implementation of user authentication and authorization mechanisms.
-
Security best practices to protect user data.
Testing
-
Writing unit tests for server-side code using testing frameworks (e.g., JUnit for Java, PyTest for Python).
-
Integration testing and end-to-end testing.
Caching
-
Knowledge of caching strategies to optimize performance.
-
Use of caching mechanisms like Redis or Memcached.
RESTful Services
-
Building and consuming RESTful services.
-
Knowledge of HATEOAS (Hypermedia As The Engine Of Application State).
Web Security
-
Awareness of common web security threats (e.g., Cross-Site Scripting, SQL Injection).
-
Implementation of secure coding practices.
Scalability and Performance Optimization
-
Designing scalable and efficient back-end systems.
-
Performance profiling and optimization.
Command Line/Shell
-
Basic command line navigation and execution of commands.
-
Familiarity with basic shell scripting.
Continuous Integration/Continuous Deployment (CI/CD)
-
Understanding of CI/CD pipelines for automating testing and deployment processes.
Logging and Monitoring
-
Implementing logging for debugging and monitoring purposes.
-
Familiarity with monitoring tools like Prometheus, Grafana, or New Relic.
Full Stack Developer
Front-End Development:
-
HTML, CSS, JavaScript
-
Front-end frameworks/libraries (e.g., React, Angular, Vue.js)
-
Responsive web design
-
Cross-browser compatibility
-
State management (e.g., Redux, Context API)
Back-End Development:
-
Proficiency in a back-end programming language (e.g., JavaScript/Node.js, Python, Java, Ruby, PHP)
-
Server-side frameworks (e.g., Express.js for Node.js, Django for Python, Spring for Java)
-
Database management (SQL and NoSQL databases)
-
API design and development
-
Authentication and authorization mechanisms
Database Management:
-
Relational databases (e.g., MySQL, PostgreSQL, Oracle)
-
NoSQL databases (e.g., MongoDB, Cassandra)
-
Database design and optimization
-
ORM (Object-Relational Mapping) tools (e.g., Sequelize, Hibernate)
Version Control/Git:
-
Proficiency in using Git for version control
-
Branching, merging, and pull requests
Web Servers and Deployment:
-
Configuring and managing web servers (e.g., Apache, Nginx)
-
Deployment of applications using platforms like Heroku, AWS, or Docker, Kubernetes
API Integration:
-
Consuming and integrating third-party APIs
-
Understanding of RESTful and GraphQL APIs
Front-End Build Tools:
-
Familiarity with front-end build tools (e.g., Webpack, Parcel)
-
Task runners (e.g., npm scripts)
Testing:
-
Unit testing for both front-end and back-end code
-
Integration testing and end-to-end testing
-
Testing frameworks (e.g., Jest, Mocha, Jasmine)
Asynchronous Programming:
-
Understanding asynchronous programming concepts
-
Handling asynchronous tasks using callbacks, Promises, or async/await
Web Security:
-
Awareness of common web security threats
-
Implementation of secure coding practices
Command Line/Shell:
-
Basic command line navigation and execution of commands
-
Shell scripting for automation
Cross-Functional Collaboration:
-
Ability to collaborate with designers, front-end developers, and other team members
-
Understanding of UI/UX principles
Continuous Integration/Continuous Deployment (CI/CD):
-
Setting up CI/CD pipelines for automated testing and deployment
Logging and Monitoring:
-
Implementing logging for debugging and monitoring purposes
-
Familiarity with monitoring tools like Prometheus, Grafana, or New Relic
Full-Stack Frameworks:
-
Familiarity with full-stack frameworks (e.g., MEAN, MERN, LAMP)
Development Tools and IDEs:
-
Proficiency in using development tools and integrated development environments (IDEs)
Soft Skills:
-
Effective communication and collaboration skills
-
Problem-solving and critical thinking
-
Adaptability and willingness to learn new technologies
Mobile App Developer (iOS, Android)
Programming Languages:
-
iOS (Swift):
-
Proficiency in Swift programming language.
-
Understanding of Objective-C for compatibility with existing codebases.
-
-
Android (Java/Kotlin):
-
Strong knowledge of Java or Kotlin for Android development.
-
Familiarity with the Android NDK (Native Development Kit) for native code integration.
-
Integrated Development Environments (IDEs):
-
iOS (Xcode):
-
Proficiency in using Xcode for iOS app development.
-
-
Android (Android Studio):
-
Familiarity with Android Studio as the primary IDE for Android app development.
-
Mobile App Architecture:
-
Understanding of mobile app architecture patterns.
-
Familiarity with iOS MVC, MVVM, or VIPER architecture.
-
Knowledge of Android's recommended architecture patterns like MVC, MVVM, or MVI.
User Interface (UI) Design:
-
Proficiency in designing mobile app interfaces.
-
Familiarity with iOS Human Interface Guidelines and Android Material Design.
-
Use of Interface Builder in Xcode for iOS development and XML layouts for Android.
Mobile App Lifecycle:
-
Understanding of the lifecycle of mobile applications on both iOS and Android.
-
Handling app states, background processes, and memory management.
APIs and Web Services:
-
Integration of RESTful APIs into mobile applications.
-
Handling JSON or XML data formats for data interchange.
Version Control/Git:
-
Proficiency in using Git for version control.
Mobile App Testing:
-
Unit testing and UI testing for mobile applications.
-
Familiarity with testing frameworks like XCTest (iOS) and JUnit/Espresso (Android).
Mobile App Deployment:
-
Understanding the app submission process for the Apple App Store and Google Play Store.
-
Knowledge of code signing, certificates, and provisioning profiles for iOS.
Cross-Platform Development:
-
Familiarity with cross-platform frameworks (e.g., React Native, Flutter) for building apps that run on both iOS and Android.
Push Notifications:
-
Implementing push notifications for both iOS and Android platforms.
Security Best Practices:
-
Awareness of mobile app security best practices.
-
Secure handling of sensitive data and user authentication.
Performance Optimization:
-
Profiling and optimizing mobile app performance.
-
Efficient handling of resources to ensure smooth user experience.
Continuous Learning:
-
Staying updated with the latest platform updates, SDKs, and best practices.
Soft Skills:
-
Effective communication and collaboration skills.
-
Attention to detail and user-centric mindset
Game Developer
Programming Languages:
-
Proficiency in programming languages commonly used in game development, such as:
-
C++ (for engines like Unreal Engine)
-
C# (for engines like Unity)
-
Python or JavaScript (for web-based games)
-
Game Engines:
-
Mastery of game engines for development, such as:
-
Unity (using C#)
-
Unreal Engine (using C++)
-
Godot Engine (using GDScript or C#)
-
Phaser (for HTML5 games using JavaScript)
-
Mathematics for Game Development:
-
Understanding of essential mathematical concepts used in game development, including:
-
Vector and matrix operations
-
Physics calculations
-
Trigonometry
-
Graphics and Animation:
-
Knowledge of graphics programming and rendering techniques.
-
Understanding of 2D and 3D graphics concepts.
-
Animation principles and techniques.
Game Design Principles:
-
Understanding of game mechanics, dynamics, and aesthetics.
-
Familiarity with player experience (UX) and user interface (UI) design.
-
Level design and storytelling for creating engaging gameplay experiences.
AI (Artificial Intelligence) in Games:
-
Implementing AI for non-player characters (NPCs) and enemies.
-
Pathfinding algorithms and decision-making processes for AI entities.
Physics in Games:
-
Implementing realistic physics for game objects.
-
Collision detection and response algorithms.
Sound and Music Integration:
-
Integrating sound effects and music into games.
-
Understanding audio engines and middleware.
Virtual Reality (VR) or Augmented Reality (AR):
-
Knowledge of VR or AR development if working on immersive experiences.
-
Familiarity with platforms like Oculus, HTC Vive, or ARKit/ARCore.
Networking and Multiplayer:
-
Implementing multiplayer functionality in games.
-
Networking protocols and synchronization techniques.
Game Monetization:
-
Understanding monetization models for games (e.g., in-app purchases, ads).
-
Integrating monetization features into games.
Game Testing:
-
Conducting thorough testing of games for bugs and performance issues.
-
Familiarity with testing frameworks and tools.
Version Control/Git:
-
Proficiency in using Git for version control.
Virtual Development Environments:
-
Setting up and working with virtual development environments for testing.
Cross-Platform Development:
-
Building games that can run on multiple platforms (PC, console, mobile).
Continuous Learning:
-
Staying updated with the latest game development trends, technologies, and tools.
Soft Skills:
-
Effective communication and collaboration skills.
-
Creativity and problem-solving abilities.
DevOps Engineer
Version Control:
-
Proficiency in version control systems like Git.
-
Understanding branching strategies and merging techniques.
Continuous Integration/Continuous Deployment (CI/CD):
-
Setting up and maintaining CI/CD pipelines for automated testing and deployment.
-
Familiarity with CI/CD tools such as Jenkins, Travis CI, GitLab CI, or CircleCI.
Infrastructure as Code (IaC):
-
Using IaC tools to automate infrastructure provisioning and management.
-
Familiarity with tools like Terraform, Ansible, or Chef.
Containerization:
-
Understanding of containerization technologies like Docker.
-
Experience with container orchestration tools like Kubernetes.
Cloud Platforms:
-
Proficiency in using cloud platforms like AWS, Azure, or Google Cloud.
-
Knowledge of cloud services for infrastructure provisioning.
Monitoring and Logging:
-
Implementing monitoring solutions for applications and infrastructure.
-
Familiarity with tools like Prometheus, Grafana, ELK stack (Elasticsearch, Logstash, Kibana).
Collaboration and Communication:
-
Collaboration with development, operations, and other teams.
-
Effective communication skills for documenting processes and sharing knowledge.
Scripting and Automation:
-
Scripting skills in languages like Python, Bash, or PowerShell.
-
Automation of repetitive tasks and workflows.
Security Practices:
-
Implementing security best practices in infrastructure and code.
-
Awareness of security vulnerabilities and mitigation strategies.
Networking:
-
Understanding of networking concepts and protocols.
-
Configuration of network infrastructure and security groups.
Database Management:
-
Database configuration and management in a DevOps context.
-
Handling database backups, migrations, and optimizations.
Incident Response and Recovery:
-
Developing incident response plans.
-
Implementing strategies for system recovery and resilience.
Collaboration Tools:
-
Proficiency in collaboration tools like Slack, Microsoft Teams, or communication platforms.
-
Use of issue tracking systems like Jira or GitHub Issues.
Agile and Scrum Methodologies:
-
Understanding of Agile and Scrum principles.
-
Integration of DevOps practices into Agile workflows.
Continuous Learning:
-
Staying updated with the latest DevOps trends, tools, and best practices.
-
Pursuing relevant certifications (e.g., AWS Certified DevOps Engineer, Docker Certified Associate).
Soft Skills:
-
Strong problem-solving skills.
-
Adaptability and flexibility in a dynamic environment.
-
Team collaboration and interpersonal skills.
Understanding of Microservices Architecture:
-
Familiarity with microservices architecture and its implications on DevOps practices.