Student involved in work

Master of Science in Computer Science 鈥 Software Development

Menu Display


Curriculum

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 32-40 credits and 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.

4 Credits
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)

4 Credits
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.

4 credits
Algorithm Analysis and Design focuses on the principles and methodologies for creating efficient algorithms. Students learn to evaluate time complexity of algorithms using Big O notation and worst-, best-, and average-case analyses. The ideas of polynomial-time, NP, exponential, and intractable algorithms is introduced. Elementary-recurrence relation problems relating to recursive procedures will be solved. Sorting algorithms will be formally analyzed. Strategies of algorithm design such as backtracking, divide and conquer, dynamic programming, and greedy techniques are emphasized. The course emphasizes both theoretical foundations and practical applications, encouraging the design of algorithms that effectively solve computational problems while optimizing resources. Through lectures, hands-on programming assignments, and problem-solving sessions, students develop a deep understanding of how algorithmic design impacts software development and computational efficiency.


 

4 Credits
Artificial Intelligence is a broad-ranging subject involving the automation of tasks believed to require 鈥渘atural intelligence.鈥 In this course we focus on a type of AI called the artificial neural network (ANN). They are mathematical models of biological neural networks. Our emphasis is on a specific ANN architecture, multilayer perceptrons, and learning algorithms, data manipulation, and testing. Prerequisites: CMPT 221 (Software Development II), MATH 130 (Introduction to Statistics), and MATH 241 (Calculus I).
 

4 Credits
This course provides a broad introduction to automated learning from data. Machine learning is the name given to the collection of techniques that allow computational systems to adaptively improve their performance by learning from past observed data. The course introduces the theoretical underpinnings of learning from data, the study of learning algorithms, as well as machine learning applications. Topics include: supervised and unsupervised learning, including linear models, support vector machines, decision trees, PCA, perceptrons and neural networks), regularization methods, validation and model selection. An introduction to reinforcement learning will be included. 
 

4 Credits
Deep Learning is an advanced course designed to immerse students in the cutting-edge field of artificial intelligence, focusing on training deep neural networks to interpret complex data patterns. The course covers foundational concepts such as neural network architectures, including feedforward, recurrent, convolutional, and generative adversarial neural networks, backpropagation, and optimization algorithms, and the practical implementation of neural network modeling. This course aims to equip students with the skills to tackle real-world problems, leveraging the power of deep learning to drive innovation across various industries.
 

4 Credits
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.

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鈥攖hese 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.

4 Credits
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.

Artificial Intelligence Electives

4 Credits
This intensive course delves into the fundamentals and advanced topics of Computer Vision using Python, equipping students with the skills to build sophisticated image processing and analysis applications. Covering essential techniques such as image manipulation, object detection, face recognition, and neural networks, the curriculum bridges theoretical concepts with practical implementation. Students will engage with OpenCV, TensorFlow/ Keras  and or Pytorch, applying these tools to real-world projects. By course end, participants will have a solid understanding of computer vision algorithms and hands-on experience in deploying computer vision solutions. 

 

4 Credits
This course provides a comprehensive introduction to Natural Language Processing (NLP), a pivotal technology behind the revolution in machine learning and artificial intelligence that allows computers to understand, interpret, and generate human language. Through interactive lectures and hands-on projects, students will learn foundational NLP concepts, including syntax, semantics, text classification, sentiment analysis, machine translation and language generation. The course will place focus on transformers and large language models. By exploring cutting-edge algorithms and tools, participants will gain practical experience in implementing NLP solutions to real-world problems. 
 
Robotics

4 Credits
Hands-on course where the student will learn about robots and about several aspects related to robot design and programming. The course covers material related to mechanical design, issues related to planning and reasoning under uncertainties, and sensors and control.
 
Cloud Computing Electives

4 Credits
This course explores Internet of Things (loT) devices, infrastructure, and architecture including a look at the current state of IoT, examples of real-world applications of IoT in industry, healthcare, home, and mobile environments. The course will also look at protocols used in loT communication, integration into cloud architecture, integration into traditional information systems, and integration with mobile applications. The course will explore enterprise systems design, including deployment, management, and security of IoT systems. The idea is to learn not only what IoT is and how it is used today, but also why they are designed the way they are and how they are likely to evolve in the future. 
 

4 Credits
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.
 
General Electives

4 Credits
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.
 

4 Credits
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.
 

4 Credits
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.
 

4 Credits
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.

4 Credits
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.

4 Credits
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.

4 Credits
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.

4 Credits
This course introduces the basic ideas and techniques of data science including: exploratory data analysis, experimental design and sampling; relationships between one and several variables including single and multiple regression and two way tables; sampling distributions; inferential statistics for means, proportions, and regression coefficients; simple ANOVA. The course includes a computer lab using an appropriate high level statistical software package such as R.