Master of Science in Computer Science – Software Development
The Software Development program is designed to meet the needs of computer professionals, allowing them to gain state-of-the-art education and skills without interrupting their current career paths. Computer Science classes are held late afternoons and evenings at Marist's main campus in Poughkeepsie, and the regular course offerings take into consideration the needs of part-time as well as full-time students. Students may thus elect to study on a full or part-time basis. Courses are chosen in consultation with the programs' directors who serve as student academic advisors.
Marist's Hancock Technology Center
This 57,000-square-foot facility overlooking the Hudson River has been designed to help fulfill the Marist goal of infusing information technology into all of its academic disciplines. The School of Computer Science and Mathematics is housed in this building as well as many of the existing regional and global technology initiatives for which Marist has earned a leadership reputation, including the Center for Collaborative and On-Demand Computing, the Open Source Development Lab, the Institute for Data Center Professionals, the IBM-Marist Joint Study Project, zEnterprise machine lab, and the New York State Center of Excellence in Cloud Computing and Business Analytics all reside within the walls of this innovative, state-of-the-art building.
Loading contact form...
MS Computer Science Curriculum
The Marist MS in Computer Science / Software Development is comprised of foundation courses, core courses, electives, and optional concentrations. Students, depending on their undergraduate background and GPA, may be waived from foundation courses.
MSCS 510 Software Design & Development
This course introduces a formal approach to the design and development of software systems. The various phases of the software development process are covered and students are introduced to an object-oriented design methodology using Unified Modeling Language. The course is project-driven and student teams design and implement a complex software system that utilizes a well-designed user interface. Java is the language of development and Java Swing will be covered. (Offered: spring semester)
MSCS 542 Database Management Systems
A study of the issues related to the design and administration of modern database systems, with special emphasis on relational database systems. This course will study data modeling, query languages, schema refinement and tuning of existing databases, the physical implementation of databases, and systems issues in the management of data.
MSCS 560 Networking
This course will focus on OSI and internet protocols that provide a reliable communication channel over the physical network linking a heterogeneous collection of computing resources. Topics covered include Switching Techniques, Wireless Protocols, Media Access Control, TCP/IP, and multicasting.
MSCS 630 Security Algorithms & Protocols
Internet Security is the study of mechanisms through which remote parties can authenticate each other's identity and then communicate securely with each other. Topics covered will include basic cryptographic mechanisms, Public Key Infrastructure (PKI) for distributed security, grammatical mechanisms used to specify security protocols, the current government initiatives impacting Internet security. Also covered will be security artifacts that occur in large networks to support and enhance the PKI—these are things like virtual private networks, the secure sockets layer mechanism embedded in all browsers, and directory services such as LDAP which are used as distributed repositories for hold certificates. Included, as well, will be the study of methods that have been used by hackers to break into computer systems.
MSCS 710 Project
MSCS 679 Parallel Processing
Parallel computing has historically played a vital role in addressing the performance demands of high-end engineering and scientific applications. However, it has now moved to center stage in light of current hardware trends and device power efficiency limits. All computer systems – embedded, game consoles, laptop, desktop, high-end supercomputers, and large-scale data center clusters – are being built using chips with an increasing number of processor cores, with little or no increase in clock speed per core. This course will introduce the concept of multicore and multiprocessor parallel programming. Topics such as Amdahl's law, speedup, efficiency, hyper-threading, task-level vs. data-level parallelism, shared memory vs. shared-nothing algorithms, concurrent vs. parallel collections, database sharding, and debugging and testing will be discussed. Small student teams analyze, design, and build a parallel computing application using software-development best practices.
MSCS 620 Cloud Computing
This course studies cloud computing based on open standards including Internet addresses, sockets, streams, universal character codes, threads, and Internet protocols like REST, XML, JSON client-server database management systems, and content management systems. The course pursues a practical approach to security issues such as the application and use of digital certificates, encryption, and transactional security. Small student teams analyze, design, and build a cloud-based system using software-development best practices.
MSCS 565 Game Development I
The objectives of this course are to introduce a disciplined, practical approach to computer game design and programming. The game design aspect focuses on interactive and interface design, world design, play mechanics and rules, and integration of visual and audio components. The game programming aspect focuses on game-specific 2D graphics, animation, physics simulations, algorithms, data structures, and libraries. The course is project-oriented and students working in small teams design and implement their own video games from a list of options.
MSCS 700 Enterprise Mobile Development
Modern software solutions increasingly require deploying applications and system components to mobile devices. Programming for the mobile environment presents a unique combination of challenges as we attempt to satisfy competing constraints of embedded platforms, mobile networking, and security. Students taking this course learn about the challenges and best practices involved in developing robust applications in a mobile environment. Students reinforce and integrate these concepts by designing and coding software to run on devices such as smartphones or tablets.
MSCS 665 Game Development II
This course continues the study of video game design and programming, building on the techniques and methods developed in Game Design & Programming I. In particular, students learn to apply game engines and application program interfaces, strategic and behavioral artificial intelligence, and game optimization techniques for both space and time considerations. Design and programming issues for multiplayer online games are also covered, including event-based and turn-based games. The course is project-oriented, and students design and implement their own video games from a list of options.
MSCS 555 Computer Graphics
This course introduces students to all aspects of computer graphics: hardware, software, and applications. In the course, students will learn the basic concepts underlying computer graphics and gain experience with at least one graphical application programming interface.
MSCS 550 Artificial Intelligence
MSCS 720 Software Verification & Maintenance
Whether a simple standalone tool or complex networked systems, an essential part of the development cycle involves testing whether the software satisfies established requirements and produces the expected results. In this course, students study the methodology behind the testing and debugging of software systems, including extracting test cases from requirements, assembling a test suite, validation, problem diagnosis, and developing fixes. Issues related to ongoing maintenance, porting software to new platforms, and handling feature requests are also considered.
MSCS XXX Independent Study
MSCS 501 Object-Oriented Programming
This course is designed to quickly bring students up to speed with current programming practice including problem-solving methods, algorithm development, and the object-oriented paradigm. Students will practice program design, coding, debugging, testing, and documentation using accepted style conventions. This course establishes a foundation for further studies in computer science. Programming projects are assigned.
MSCS 502 Advanced Data Structures
Linear and non-linear data structures will be discussed and implemented including dynamic lists, linked lists, stacks, queues, trees, heaps, and hashing. Complexity will be considered and efficient structures will be covered including balanced binary search trees and priority queues. Advanced Java topics will be covered including abstract classes, interfaces, and iterators. Students will be expected to construct and/or use generic data structure classes.
MSCS 503 Computer Organization and Architecture
The purpose of this course is to acquire an understanding and appreciation of a computer system's functional components and their characteristics. Students will learn instruction set architecture, the internal implementation of a computer at the register and functional level, and understand how main activities are performed at machine level as well as gain an appreciation for hardware design at the micro level. This course will not meet any graduation requirements and will generally be taken as a foundation course.
MATH 205 Discrete Mathematics
This course introduces the algebraic concepts, methods, and techniques that form the theoretical basis of computer science, including the relevant areas of logic; set theory and the theory of relations; functions; and permutations.