Program Information


The most desirable background for an MCS student is someone with an undergraduate degree in a computer-related field (Computer Science, Computer Engineering, Software Engineering, or a closely related field). You will need an overall grade point average of 3.0 or higher on a 4.0 scale. Additionally, you will need to have completed the following UVU or equivalent classes with a C+ or better:

  • CS 2300: Discrete Structures I
  • CS 2420: Introduction to Algorithms and Data Structures
  • CS 2810: Computer Organization and Architecture
  • CS 3060: Operating Systems Theory
  • MATH 1210: Calculus I

Students who feel they are prepared for the MCS, perhaps through work experience, but fail to meet all the requirements should address this issue in their statement of purpose.

Graduate Project

Every graduate student will be required to complete a two semester-long graduate project. Please, do not ever expect to complete this in a single semester. This would be like an inverted Mythical Man-Month; you do not have a baby in four months by just pushing harder and you do not complete two semesters of work in one semester by just working harder.

Picking the right Graduate Project is strongly related to picking the right Graduate Mentor. While all Graduate Projects are required to make students design and implement a large complex system, the specific type of project will differ from professor to professor. Some professors will offer projects that will be very industry related, while other professors may offer projects more research oriented, and some will have a combination of both. Deciding what you want to work on and who you want to do it with is one of your major responsibilities as a graduate student.


Required Courses
CS 6150: Advanced Algorithms 3 credits
CS 6300: Software Engineering Leadership 3 credits
CS 6400: Modern Databases 3 credits
CS 6500: Software Architecture 3 credits
CS 6510: Design and Simulation of Operating Systems 3 credits
CS 6600: Graduate Project I 3 credits
CS 6610: Graduate Project II 3 credits
CS 6700: Advance Mathematics for Computer Science 3 credits
Sub-Total 24 Credits
Elective Courses (Pick 2)
CS 6100: Database Management System Construction 3 credits
CS 6470: Machine Learning 3 credits
CS 6620: Advanced Data Mining and Visualization 3 credits
CS 6730: Advanced Embedded Systems Engineering 3 credits
CS 6800: Computer Graphics 3 credits
Elective Sub-Total 6 Credits
Total Number of Credits 30 Credits

A personal note from the MCS Director

"I was not always an academic; there was a time when I wasn't even a good student. When I finished high school, I was functionally illiterate. I failed college English so many times I was threatened with expulsion and struggled in my math and science-related classes. Yet, even through all that, I was always motived to learn. Eventually I found the help and motivation I needed to excel in school. My undergraduate degree wasn't in math, science, or engineering. It was a BBA in Information Systems. As a result, when I went for my Master of Science in Computer Science, I had to take lots of leveling classes to get into the graduate classes. I never saw these leveling classes as a waste of my time; rather I saw them as an opportunity to grow, learn, and prove myself. I was 40-years old with 17 years of industry experience when I returned to school to get my Ph.D. There were times in class when I knew the material better than my professor, yet there was always something I could learn. Education is truly a journey not a destination. When you complete your study in the MCS, you will learn the real hard truth of graduate education. You're not done, you've only scratched the surface, and you'll need to know even more to solve the really fun, complex, and difficult problems that exist in the world."

Curtis Ray Welborn, Ph.D.

Being a Graduate Student

As a graduate student, you are moving into an area of education where more will be expected of you than ever before--more time, more commitment, more responsibility, more leadership, and perhaps, most importantly, more professionalism. It is not just the depth and complexity of the material taught in graduate classes--it's the entire process. Try to enjoy the journey. Employers who understand this will look at you differently than an undergraduate, not only because you have had different classes, but because you have had a different type of educational experience, one that requires more of you.

To this end, the MCS has been designed around three key elements: 1) to be rigorous, 2) to be relevant, and 3) to be practical. Additionally, all graduate students are expected to achieve four key outcomes before graduating from the MCS: 1) students will design large-scale systems, 2) students will implement large-scale systems, 3) students will exhibit professional maturity, and 4) students will develop a broad base of competency.

What does this mean to you as an MCS student?

  • You should expect courses that require 3+ hours of work outside of class for every 1 hour of lecture.
  • You should expect multiple hands-on assignments in every course that escalate in both depth and complexity as the course progresses.
  • You should expect to gain the fundamental skillset needed to evaluate and, if appropriate, apply the techniques/technologies taught in class in a real-world setting.
  • You should expect to work on projects where the lines of code measure in the thousands rather than the hundreds.
  • You should expect to work with a faculty mentor/advisor who will help guide you through the process of completing your graduate project.
  • You should expect to develop a greater level of confidence for tackling larger and more complex systems.
  • You should expect as an alumni of the MCS that your views and opinions will be valued by the CS Department.

Graduate Mentor's Role

If you have not read the section entitled "Being a Graduate Student," please read that first. As a graduate student, more will be expected of you, and while you might not always agree with what is being expected of you, understand that, too, is part of the process.

As you make your way through the graduate program, you will undoubtedly encounter issues. These may take the form of time management problems, waning commitment to the program, too many interests, as well as a host of other problems. While the MCS Director and individual faculty members teaching a course can assist you, this is where your faculty advisor/mentor can really help you. Finding the right mentor can be essential to your success as a graduate student.

The right faculty mentor can help keep you focused on your goals when you are feeling lost or overwhelmed, but it is your responsibility to pick the correct faculty mentor for you. The department can give you advice on whom to choose, but ultimately you are responsible for choosing your faculty mentor, and they must agree to accept you as a student. The faculty mentor you choose will not necessarily be your best friend or the teacher you like the most. They should be the faculty member you feel most strongly can guide you to achieving your goals. This may actually mean picking the professor that challenges you the most. Like picking a spouse or job, there is no simple set of rules that will always work.