MS in Computer Science

Software Engineering Curriculum

Software Engineers


MS in Computer Science

Software Engineering

The program’s curriculum is designed to transition students into software design and development roles. Students will learn:

  • How to write and deploy object-oriented software applications that are efficient, maintainable, and expandable across multiple languages (Java, Javascript, Python)
  • Advanced programming concepts including parallel programming, networking and socket programming, advanced object orientation, systems programming, and user interface design principles
  • Software documentation, design patterns, project management, and database management

Core Courses (16 credits)

An introduction to programming concepts. Emphasis will be placed on algorithms, test-driven design, development, and structured programming in the Python language. Topics include program development, modularity, variables and data types as numbers, strings, arrays and lists, plus the basic programming concepts as conditionals and Boolean algebra, loops, I/O operations, classes,and objects, abstract data types, sorting algorithms, and recursion.

This foundational course is an introduction to algorithmic thinking and the mathematics of computer science. Topics include abstract data types such as lists, stacks, queues, hash maps, trees and graphs, but also basics of asymptotic analysis, recursion, and various algorithmic strategies including brute force, decrease-and-conquer,  and divide-and-conquer. Programming exercises will help create proficiency in Java Programming language. Emphasis will be placed on understanding underlying mathematics, such as discrete probability, statistics, graph theory, and set theory.

This course is an extension of the process of algorithmic thinking and the mathematics of computer science. Topics include asymptotic analysis, and various algorithmic strategies including transform-and-conquer,  dynamic, greedy, amortized analysis, linear and integer programming, randomized, and approximation algorithms. Emphasis will be placed on understanding underlying mathematics, such as discrete probability, statistics, graphs, and set theory.

This course introduces students to the fundamental concepts surrounding legal rights and responsibilities associated with data capture, storage and leveraging data for decision-making. Given the very diverse mix of topics falling under this broad umbrella, the aim of the course is to provide a general overview of the applicable aspects of the US regulatory and legislative framework, and then to offer more topically-focused overview of the key notions falling within the domains of data-capture related rights and responsibilities, data governance design and management, data security and privacy, information quality, and the ethical aspects of data access, usage, and sharing.

Students demonstrate mastery of the material related to their area of study through a faculty-guided capstone project.

Software Engineering Concentration (16 credits)

Great products start out from great designs authored by effective teams. This course introduces the student to the software development lifecycle at the graduate level. Focus will be placed on design and documentation methodologies used by practitioners. Students will learn to author clear and effective software documentation for a host of different design methodologies. Software design methodologies discussed will include: waterfall, spiral, scrum, and agile. Other topics include version control, issue tracking, software project management, debugging, and profiling.

An introduction to databases at the graduate level. In this course students will learn to effectively design, implement, and deploy both relational and non-relational databases. Topics include: relational databases, normal forms, consistency, basic SQL, stored procedures, query optimization, non-relational and no-SQL databases. Examples will be drawn from industry. Students will also obtain hands-on experience with several database engines.

This course introduces students to key programming language families and concepts, and key system programming concepts. Topics include: procedural, object oriented, and functional programming language principles, the role of type systems and type safety, multi-threaded programming and associated design techniques including parallelization, deadlock and deadlock avoidance, and basic scheduling algorithms. Examples will be drawn from contemporary systems and languages.

This course will introduce students to advance concepts in programming. These topics will include: the development and use of large-scale application programmer interfaces (APIs), effective documentation of APIs, authoring clean and useful APIs, sockets, generics, regular expressions, client-server model applications, and design patterns such as factories, decorators, and MVC.

Merrimack College Accolades

At Merrimack College, we’re proud of our long history of providing quality degrees to students entering the job market. Our faculty are more than just teachers. We are committed to helping you grow — academically, personally and spiritually — so that you may graduate as a confident, well-prepared citizen of the world.

  • #10 Top 50 Best Value Online Big Data Programs 2020 by
  • U.S. News & World Report 2022 #34 Best Regional Universities North
  • U.S. News & World Report 2022 #41 Best Value Schools
  • U.S. News & World Report 2022 #3 Most Innovative Schools
  • Money Magazine’s Best Colleges 2020
  • The Princeton Review 2021 Best Northeastern Regional College
  • Apple Inc., Apple Distinguished School

Software Engineers