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 the Java programming language. Emphasis will be placed on algorithms, test driven design, development and structured programming in the Java language. Topics include program development, modularity, variables and data types, I/O and file I/O, methods, JavaDoc, conditionals and Boolean algebra, testing (JUnit), strings, arrays and vectors, loops, classes, and objects and references.

An exploration of the java programming language at an intermediate level. Emphasis is played on object orientation and data structures. Topics include objects and references, inheritance, polymorphism, data abstraction, Java APIs, and command-line arguments.

This foundational course is an introduction to algorithmic thinking and the mathematics of computer science. Topics include sorting and searching, basics of asymptotic analysis, recursion, and various algorithmic strategies include divide-and-conquer, brute force, and problem reduction. Emphasis will be placed on understanding underlying mathematics, such as discrete probability, statistics, graph theory, and set theory.

This course is a continuation of Algorithms and Discrete Structures 1. Topics include greedy algorithms, dynamic programming, integer programming, randomized algorithms, genetic algorithms, graph algorithms, and problem transformation. The underlying mathematics will be introduced alongside the primary topics as needed. These topics include discrete probability, number theory and combinatorics, and graph theory.

This course provides an exploration of advanced algorithms in terms of design, efficiency analysis, and implementation. It includes an in-depth look at networks and flows, dynamic algorithms, approximation algorithms, amortized analysis, linear and integer programming, computational geometry, randomized algorithms, and other advanced topics as time allows.

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.


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 2021 #45 Best Regional Universities North
  • U.S. News & World Report 2021 #37 Best Value Schools
  • U.S. News & World Report 2021 #9 Most Innovative Schools
  • Money Magazine’s Best Colleges 2020
  • The Princeton Review 2021 Best Northeastern Regional College
  • Apple Inc., Apple Distinguished School

Software Engineers