Break New Ground
The world runs on code. In our Digital Media Software Engineering program, you will learn how to use that code to solve complex problems, develop groundbreaking software applications, and prepare for a rewarding career in any industry.
Dive-in from day one at Ferris. Explore the projects that interest you and build a foundation that moves you forward, from programming languages to game-changing emerging tools. Experiment with machine learning and augmented reality. Design a new streaming service from the ground up. Create a killer mobile app. Discover your passion and pursue it.
In-Seat and Online Options
In Grand Rapids, you can take advantage of small class sizes, a local crew of Ferris staff, and life in one of Michigan's fastest growing, most vibrant cities. Our online option will give you the flexibility you need to keep pace with your busy life. Wherever you decide to take your classes, you'll have access to everything our main campus in Big Rapids has to offer.
Jump directly into software development from day one. Build your coding skills while also developing as a project management expert, a user experience pro, a deliberate engineer, and a savvy business person.
Explore our software engineering classes and then meet our advisor for details.
Software Engineering Foundation ⌄
Build the foundational skills demanded by top employers.
Software Engineering Methodologies and Processes ⌄
This course covers the processes and procedures practiced by software engineering organizations. Methodologies and processes are presented within the framework of the software development lifecycle. Covers popular methodologies being used in the real world and examines the merits of each. Students learn theory and process as well as examine the effects through case study and applied scenarios.
Software Requirement Management ⌄
This course covers the tools and methods involved in capturing and tracing end user requirements through the software development process. Examines dynamics and scenarios that organizations deal with in identifying requirements and processes used in defining software needs.
Software Configuration Management ⌄
This course explains software configuration management approaches for maintaining large and small scale software projects. From the time the first line of code gets written to the time the software package is released to the public, Configuration Management plays an integral role in ensuring all software components are included in the package. Additionally strategies for managing code lines and employing automated process and tools will be examined.
Fundamentals of Operating Systems ⌄
This course explains computer operating systems fundamental concepts and introduces networking essentials from the point of view of software engineers. It examines OS structure and components. It examines process management, memory management, and storage management. It examines practical ways to improve the system performance through tweaks to tasks performed by OS components. Comparative case studies of the common OS options are introduced.
Software Quality Assurance ⌄
This course introduces the concepts of software quality assurance. Students learn processes involved in quality management. Topics include designing test cases, improving software quality, testing methods and tools.
Software Design and Architecture ⌄
This course examines the process and design techniques employed by software architects to design enterprise scale software. Students will be introduced to design tools as well as diagramming techniques and other methods for communicating software designs.
Emerging Tools and Paradigms ⌄
This course provides an introduction to industry accepted software engineering tools and practices used to develop quality software applications. Students will learn modeling and design using the Unified Modeling Language (UML), Code generation, Application Revision Control, Code Analysis, Unit Testing, Code Coverage, Coding Best Practices, Continuous Integration, revision management, and Code Performance/Profiling.
Software Development ⌄
Hands-on, full-contact, no-holds-barred software development. This is where you'll learn everything you need to know to build the projects you're passionate about.
Computer Programming 1 ⌄
This course teaches fundamentals of computer programming. Students learn how to write test and debug small programs. Basic coding concepts and best practices are discussed and explained. Functions, data types, logical constructs required to produce software solutions will be the basis for this exploration.
Computer Programming 2 ⌄
This course is designed to complement Computer Programming 1 and begin to explore more sophisticated programming concepts. Students will begin to learn advanced coding techniques and structures such as Classes, Inheritance, and Polymorphism.
Software Data Structures ⌄
This course explores advanced and abstract data structures. Students will be able to learn how to identify and correctly apply these structures to solve more complex programming problems. Topics include Sorting, Trees, Graphs, and Hash tables.
Programming Languages ⌄
This course will introduce students to the concepts of programming languages and different programming paradigms. Students will be able to identify common concepts and data structures as implemented by various programming languages. This class is intended to facilitate the student\'s ability to quickly learn and utilize a new programming language based on industry commonalities.
Software Component Design ⌄
This course deals with the design and implementation of software subsystems. The concept of design patterns is introduced and common patterns are applied to the development of software components. Laboratory projects provide an opportunity for teams of students to implement components and to integrate them into complete systems.
Engineering Enterprise Software Applications ⌄
This course discusses the concepts involved in designing large scale applications. Architectural concerns are examined along with issues stemming from multiple concurrent users. Students will also gain an understanding of the importance of performance when implementing applications that have high volume usage.
Programming Graphical User Interfaces ⌄
This course focuses on the techniques and technologies employed in creating Software user interfaces (UI). Students learn the importance of clean user interface design along with gaining an appreciation for programming techniques used to enhance the human user experience. UI methodologies and frameworks are explored.
Professional Development ⌄
Put your foundational skills and your software development abilities to use as you gain industry certifications, create your capstone project and gain real-world experience as an intern.
Software Development Industry Certification ⌄
This course allows students the ability to prepare for a highly regarded industry certification program. Students will go through the recommended training materials and course work and prepare to take the certification exam. On course completion the exam is taken and certification earned.
Applied Internship ⌄
This course is intended to be completed between the junior and senior year. The internship shall be setup and approved by means of an internship contract, including approval by the University and employer in a related Software Engineering field.
Capstone in Software Engineering ⌄
This course will focus on helping each student prepare for a career creating commercially viable software. Topics include career choices, software development ethics, and what organizations expect. Students will explore employment opportunities including seeking a posted position, working freelance, and establishing a business.
Machine Learning Engineering Electives ⌄
Machine learning is the next step in technology. In this optional elective track, you'll gain the skills you need to work with big data and machine learning algorithms.
Introduction to Machine Learning ⌄
In algorithm design, we start with a rule that we have already discovered then we build a program to apply it to the data to get the desired solution. Sometimes, this is not easy. Sometimes the data we have is too large, diverse or cannot be investigated by a human expert to extract a rule. The rule might be hidden somewhere in the details. Machine learning offers an alternative, where you let the machine discover the rules automatically through inspecting the data that you have. This course introduces major ML concepts (including supervised, unsupervised and reinforcement learning), in addition to practical real life applications of them.
Applied Machine Learning in SaaS Environments ⌄
Machine learning offers an alternative to classical rule-based development. This helped software engineers achieve incredible results in various fields. This course discusses practical use cases of applying machine learning technique to real life applications and the building ML based software as a service. In addition, students design and execute solutions using specialized hardware (GPUs).
Introduction to Big Data Concepts and Tools ⌄
The amount of data being exchanged over the network globally will increase nearly threefold over the next 5 years, and will have increased 127-fold from 2005 to 2021. This scale of data being exchanged means that traditional database and general data handling methodology are efficient any more. New technologies and software engineering tools are emerging to cope with this phenomenon and perform pre process. Extraction, storage, querying and structuring the data at the expected level. This course discusses the defining concepts of Big data and gives an opportunity to master the skills required of a big data engineer.
Introduction to Cloud Application Development ⌄
Cloud computing is moving rapidly to become the standard infrastructure technology. More than 90% of large organizations in the United States are largely in-the-Cloud. This course gives students an overview of the emerging field of Cloud Computing, its enabling technologies and main building blocks. Hands-on implementation of a software application on public Cloud environment will be covered. Major cloud architectures will be discussed and challenges from the Cloud provider point of view will be tackled.
Game Design and Development Electives ⌄
Expand your software engineering abilities and cross over into game design. In this elective path, you will learn a wide variety of game design and development techniques.
3D Modeling - Animation 1 ⌄
Students use 3D computer software to learn the fundamentals of modeling, texturing, lighting, animation, and rendering. Students are expected to read, write, discuss, research, and explore the application of 3D modeling and animation to a wide range of industries and projects. This is a heavily project-based class that builds to a short animated video.
Intro to Game Design and Development ⌄
This course explores and analyzes games from anthropological, psychological, and design perspectives. Student will study game pleasures, demographics, mechanics, game balancing, level design, morality, censorship, aesthetics, communities, pitches, game design documents, and more.
Game Programming 1 ⌄
This course introduces students to programming for game development. Topics include game loops, vector math, camera systems, input, content pipelines and rendering, collision detection, state machines, and game states.
Level Design ⌄
In this course, students will be introduced to designing game levels for specific player types and solving gameplay related problems. Students will use an industry standard game engine to design 3D spaces, scripted gameplay, lighting, materials, and more. Level and environmental design are vital parts of game design, so focus will be on creating spaces that enable desirable gaming experiences.
Game Programming 2 ⌄
Students will design, program, and debug games in a modern, industry-standard game engine.
Software Engineering students create professional-caliber projects with a wide variety of application.
Explore some of their work and think about what you could accomplish as a Ferris student.
Third-Person VR via Drone ⌄
Students: Brian Buchan
Description: Brian developed a technology that uses a drone-mounted camera to create a third-person over-the-shoulder perspective in virtual reality. This allows a user to see themselves doing a task within a virtual environment. The potential applications for this project include gaming, education and training, among many others.
Tools Used: C#, Unity, Android Studio, Oculus Quest
Students: Eric Leyder, Austin Deyong
Description: CloudMach utilizes cutting-edge machine learning technology from Google TensorFlow to predict the future demands of cloud computing applications.
Tools Used: Java, Python, TensorFlow, Cloud Simulators
Students: Matthew Klawitter, Brian Buchan, Chris Wilson
Description: A game-based web simulator that car dealerships can use for teaching automotive concepts and training staff.
Tools Used: C#, Microsoft Azure, Visual Studio 2019
Internet Music Database ⌄
Students: Christopher Huizenga
Description: You've probably used IMDb, the Internet Movie Database, to lookup which actor played the villain in your favorite film or TV show. But what if you wanted to know who contributed backing vocals to your new favorite song? That's where Christopher's project, The Internet Music Database, comes in. Christopher is using Node and React to create a crowdsourced web platform that collects all the details about musicians and their work in one place.
Tools Used: Node.JS, React.JS
Software Engineers are some of the most in-demand professionals in the world, and earning your Ferris degree will give you the professional edge to compete for the most high-profile positions. The national median salary for Software Developers is more than $100,000 per year, and the profession is expected to grow 21% over the next 10 years.
As a Ferris Software Engineering graduate, you will be ready for positions in any industry where software solutions can make an impact:
- Software / App Development Firms
- Gaming / Entertainment
Since you will develop your skills in project management, business, communications and other key areas, they are excellent candidates for rapid advancement and promotion.
Make a phone or in-person appointment with our Software Engineering advisor to explore all the career options your degree can unlock.
Your degree should be worth every penny you put into it. Our Financial Aid team is here to make sure that it is.
Our online Software Engineering program has been designed as a degree completion program. This means you will need a minimum of 48 transferrable college credits to be admitted to the program. Finishing your general education courses at a community college is a great way earn your credits, and will also save you money. We recommend meeting with our advisor as early as possible to make sure you're on track to complete your degree as quickly and affordably as possible.
- 2.7 cumulative GPA
- Official college transcript from each post secondary institution attended
If you have not yet earned the required 48 college credit hours, you can get started on your Software Engineering degree right away at our Grand Rapids location or work on your associate degree in Digital Media at our main campus in Big Rapids.
Transferring to Ferris
The transfer process at Ferris is simple. We've built multiple tools and resources to help you through each step.
- Transfer Guides—These helpful guides layout your entire degree plan in one convenient place, showing you exactly which classes to take at your community college and which courses you will need to take a Ferris. We have built these guides for many institutions across Michigan.
- Transfer Equivalencies Tool—This tool will help you discover which courses you have already taken—or are planning to take—have an equivalent at Ferris.
- Check out our Transfer Student page for more information on the Michigan Transfer Agreement (MTA), the MACRAO Transfer Agreement, and other helpful resources for transfer students.
1. Submit Your Online Application
It will only take you about 15 minutes. There's no application fee. What are you waiting for? Apply Now!
Make sure to select Digital Media Software Engineering as your program when applying.
2. Send Your Transcripts and Test Scores
We'll need these to make a decision on your application. Check out our App FAQ if you're not sure what to send us.
3. Look For Your Decision Letter
This is the fun part! Once we've received your application and all of your required documents, we'll reach out with our decision on your application.
Meet Faculty & Students
The Digital Media Software Engineering program is a part of our School of Digital Media (SDM). As a member of the SDM, you will have have access to a community of driven, creative faculty, fellow students, alumni and industry leaders from a wide variety of disciplines. They will form the base of your professional network and help launch your career. Meet some of them in our program spotlight video.