Skip to main content

Anticipated Schedule

Fall 1 : Monday through Friday 8:30 AM -12:30 PM
Spring : Monday through Friday 9 AM -11:20 AM (with CS 6015 on Tuesdays and Thursdays) and the Industry Seminar once a week
Summer : Tuesday/Wednesday/Thursday 8:30 AM -11:30 AM
Fall 2: Tuesday/Wednesday/Thursday 9:30 AM -10:45 AM

Two University of Utah students seated, working on assignments in front of their lap tops.

Courses

The duration of the MSD program is 16 months* (Fall/Spring/Summer/ Fall) involving classroom teaching and extensive lab and project experiences. The MSD program will use active-learning and project-oriented approaches to equip students with tools and perspectives for problem solving while honing their critical-thinking skills that transcend specific software languages or applications. All MSD students are required to take the following courses (4 credit hours each), while Programming Certificate students take only the first Fall semester courses plus the Spring course in Software Engineering.

*20 month option available by postponing the MSD Capstone to Spring(2) and taking courses outside of the MSD program.

Fall (Year 1)

Introduction to Software Development

CS 6010

This course covers (i) basics of hardware and software components of different types of computers including PCs, laptops, mobile devices, servers, and clouds; Software components include operating systems, programming languages, and translators (compilers, interpreters, high level languages, assembly languages, binary code); (ii) Introduction to programming in C++; (iii) the Linux programming environment, shell scripts, processes, file systems, directory structures, paths, and libraries; (iv) Source code control and code repositories – version control, github, subversion.

Computer Programming

CS 6011

This course will build upon CS 6010 and cover (i) object oriented programming principles in depth and specifically, Java; (ii) Windows development environment; (iii) Multithreading. (iv) Comparison of different object oriented programming languages; (iv) Software design. (vi) Programming examples will be drawn for various computer applications including web applications, and mobile applications.

Data Structures and Algorithms

CS 6012

This course will build upon on CS 6010 and CS 6011 and cover (i) different types of data structures including Arrays, Stacks, Queues, Trees, Heaps, and Hash Tables; (ii) Graphs; (iii) Time and space complexity; (iv) Algorithms – Divide and Conquer, Dynamic Programming, and Network flow; (v) NP completeness; (vi) Approximations; (vii) Randomization.

Spring (Year 1)

Software Engineering

CS 6015

This course develops skills in developing and maintaining complex applications. Skills will be developed in (i) creating and interpreting specifications for software, both formal and informal, (ii) using version control systems and continuous integration systems, (iii) creating test cases, creating testable software, and assessing the effectiveness of a testing campaign, (iv), using static and dynamic analysis tools to find and eliminate software defects, (v) refactoring applications, and (vi) writing solid, secure code using techniques such as defensive programming and assertions.

Systems 1 (Computer Arch + Operating Systems)

CS 6013

This course covers (i) an introduction to modern commodity hardware architecture and Operating Systems with an emphasis on their co-design; (ii) concurrent and efficient code for modern machines; (iii) reasoning about concurrent performance including context switch, cache coherence, and non-uniform memory access costs; (iv) The process abstraction, protection, and isolation; (v) Controlling devices through the operating system – device drivers; (vi) System calls; (vii) Virtualization.

Systems 2 (Computer Networks + Security)

CS 6014

This course covers (i) Internet software and hardware components, protocols (e.g., TCP/IP), Internet performance metrics; (ii) Mobile and wireless networking; (iii) Socket programming and applications; (iv) Software defined networking, network function virtualization; (v) Causes and effects of computer and network vulnerabilities (e.g., poor code, limited access control); (vi) Solutions for securing computer and networked systems through cryptography, security-aware programming/coding, and careful protocol design; (vii) DDoS prevention, end-to-end analysis of spam-value chain; (viii) concepts of indirection and randomization in network architectures.

Summer (Year 1)

Database Systems and Applications

CS 6016

This course covers database concepts and tools for both structured and unstructured data. An understanding with corresponding skills will be developed in (i) the effective use of relational databases and in particular SQL; (ii) how to interact with unstructured data via NoSQL; (iii) how the database community has attempted to virtualize heterogeneous data (via SQL-like); and how to apply data analysis tools such as MapReduce and Spark.

Data Analytics, Visualization, and Machine Learning

CS 6017

This course will cover the foundational algorithms and principles of AI and machine learning, including deep learning, transformers and agentic AI, as well as ways of visually representing and interacting with data.

Fall (Year 2)

Application System Design and AI Integration

CS 6018

This course teaches a combination of software-development skills to design and build different types of application systems. These systems include mobile, cloud, and web applications with AI components.

MSD Capstone Project

CS 6019

Students will apply the knowledge of software development to specific disciplines/application domains for a significant capstone project. Examples include design and development of a substantial finance software package, design and development of security protocols or tools, design and development of software for data collection and analysis, etc. Students will acquire deeper knowledge in the domains they choose to work in.

OR

MSD Capstone Internship

CS 6020

Students will apply their knowledge of software development to specific applications while working with a local industry or institutional partner. As a result of real-world, practical experience, students will acquire deeper knowledge in the domains that they choose to work in. As part of the course, students produce a written report and oral presentation.

Certificates

The Software Development Programming Certificate is an 8-month program that corresponds to the first semester of the MSD program (full time) plus one course from the second semester (part time). This certificate offers prospective students a way to get a foot in the door toward a career in programming while preparing them with a rigorous foundation for lifelong learning. Students who complete the certificate program are eligible to resume coursework toward the full MSD program. Requirements listed here.

The Software Development Systems & Data Certificate is an 8-month program that corresponds to the spring and summer semester (8 credits per semester).Â