M.S. in Computer Science

M.S. in Computer Science Program Information

Available onsite at Franklin University , online at Franklin University .

The Master of Science - Computer Science (MSCS) is designed to provide students with the theoretical and practical application skills required: 1) to master a good understanding of the Computer Science discipline; 2) to be able to contribute immediately and make a positive impact in the workplace. This graduate degree is intended for the working person who wants to be part of the development of the technology of the future.

Curriculum & Course Descriptions

36 Semester Hours
Major Area Required
COMP 611 - Advanced Data Structures and Programming (4)

This course covers key knowledge and skills for advanced software development using the object-oriented approach. The student learns, manipulates and reflects on nonlinear data structures such as trees and heaps. Recursive algorithms, sorting algorithms, algorithm efficiency, and advanced design patterns are addressed. To support the advanced concepts and principles of software development, the student will design, code, test, debug, and document programs with increased scale and complexity using industry's best practices (such as GitHub) and the Java programming language.

COMP 620 - Analysis of Algorithms (4)

This course covers various algorithm design paradigms, mathematical analysis of algorithms, empirical analysis of algorithms and NP-completeness.

COMP 630 - Issues in Database Management (4)

This course focuses on the fundamental design considerations in designing a database. Specific topics include performance analysis of design alternatives, system configuration and the administration of a popular database system. The course also offers an in-depth analysis of the algorithms and machine organizations of database systems. Note, this course has proctored exam(s). This exams requires additional technology, if student uses online proctoring.

COMP 655 - Distributed Systems (4)

This course introduces the design of distributed computing systems and distributed application programming. Major concepts of distributed systems covered include: transparency, heterogeneity, process communication, consistency, fault tolerance, and security. Students also will learn to develop a real-world distributed application as a RESTful Web-service on an application server.

COMP 671 - Verification and Testing (4)

This course focuses on the issues of delivering high-quality software, especially in large complex systems. Topics covered include testing strategies (black box, white box, regression, etc.), unit testing, system integration, system verification and support tools. It also will reinforce the need for requirements that are testable and traceable from the early design stages.

COMP 691 - Capstone (4)

This course, the final one in the Master of Science - Computer Science program, challenges students to research a current topic of interest in Computer Science and produce an original paper and presentation on the topic. In addition to the research paper, students are introduced to the economics of software development and the tools needed to estimate the cost of a software development project for management in a corporate environment. The last topic in the course is a discussion of ethics as it relates to Information Technology. Current topics in ethics will be discussed through the use of relevant case studies.

Major Electives

At least 12 credits from the following courses:

MATH 601 - Introduction to Analytics (4)

This course provides an introductory overview of methods, concepts, and current practices in the growing field of statistics and data analytics. Topics to be covered include data collection, data analysis and visualization as well as probability, statistical inference and regression methods for informed decision-making. Students will explore these topics with current statistical software. Some emphasis will also be given to ethical principles of data analytics.

DATA 605 - Data Visualization & Reporting (4)

This course focuses on collecting, preparing, and analyzing data to create visualizations, dashboards, and stories that can be used to communicate critical business insights. Students will learn how to structure and streamline data analysis projects and highlight their implications efficiently using the most popular visualization tools used by businesses today.

DATA 611 - Applied Machine Learning (4)

This course explores two main areas of machine learning: supervised and unsupervised. Topics include the fundamental concepts, roadmap of a machine learning project, classification algorithms, regression algorithms, dimensionality reduction, model evaluation, natural language processing, neural networks and deep learning, typical issues in real-world machine learning problems, and Python programming in data science.

ISEC 610 - Information Assurance (4)

This course covers the fundamentals of security in the enterprise environment. Included are coverage of risks and vulnerabilities, threat modeling, policy formation, controls and protection methods, encryption and authentication technologies, network security, cryptography, personnel and physical security issues, as well as ethical and legal issues. This foundational course serves as an introduction to many of the subsequent topics discussed in depth in later security courses.

ISEC 620 - Software and App Security (4)

Today, software is at the heart of nearly every business from finance to manufacturing. Software pervades everyday life in expected places like phones and computers but also in places that you may not consider such as toasters, thermostats, automobiles, and even light bulbs. Security flaws in software can have impacts ranging from inconvenient to damaging and even catastrophic when it involves life-critical systems. How can software be designed and built to minimize the presence of flaws or mitigate their impacts' This course focuses on software development processes that identify, model, and mitigate threats to all kinds of software. Topics include threat modeling frameworks, attack trees, attack libraries, defensive tactics, secure software development lifecycle, web, cloud, and human factors.

ISEC 640 - Cryptography (4)

The cryptographic primitives of enciphering/deciphering and hashing are the two main methods of preserving confidentiality and data integrity at rest and in transit. As such, the study of cryptographic techniques is of primary interest to security practitioners. This course will cover the essential principles in historical and modern cryptography, including the underlying information theory, mathematics, and randomness. Critical technologies such as stream and block ciphers, symmetric and asymmetric cryptography, public key infrastructure, and key exchange will be explored. Finally, hashing and message authentication codes will be examined as a way of preserving data integrity.

COMP 645 - Object-Oriented Design & Practice (4)

This course surveys current practices in software development and software design, especially in the area of object-oriented design. The course will examine and contrast current and leading edge methodologies and practices, including agile, extreme programming, test-driven design, patterns, aspect-oriented programming, model-driven architecture, Unified Modeling Language, and integrated development environments.

COMP 650 - System Architecture & Engineering (4)

This course covers topics in software systems engineering. Its scope is the design of the overall architecture for software systems with emphasis on distributed architectures. The issues in an architecture centered software development cycle and project management are addressed.

COMP 670 - Application of Artificial Intelligence (4)

This course is an introduction to Artificial Intelligence (AI) from an applied perspective. After an introduction of some basic concepts and techniques (such as searching and knowledge representation), the course illustrates both the theoretical foundation and application of these techniques with examples from a variety of problems. The course surveys a wide range of active areas in AI such as machine learning, artificial neural networks, evolutionary computing, robotics, intelligent agents and bio-inspired AI approaches. It strikes a balance between engineering approaches and theory. Exercises include hands-on application of basic AI techniques as well as selection of appropriate technologies for a given problem. The principal topics in the selected areas are also coupled with projects where groups of students will participate in the creation of AI-based applications.

COMP 610 - Internship in Computer Science (1-4)

This course provides MSCS students the opportunity to further their education with relevant work experience in the field of Computer Science. This internship is an ongoing seminar between the student, faculty and the employment supervisor. It involves a Learning Contract (Curricular Practical Training [CPT] Information, or other), periodic meetings with the faculty representative, and professional experience at a level equivalent to other electives of the MSCS program. Specification of the materials to be submitted is established in the learning contract. Participation cannot be guaranteed for all applicants.

COMP 699 - Independent Studies in Graduate Computer Science (1-4)

Independent studies courses allow students in good academic standing to pursue learning in areas not covered by the regular curriculum or to extend study in areas presently taught. Study is under faculty supervision and graded on Pass/No Credit basis. For international students, curricular practiced training may be used as an independent study with approval of program chair. (See the "Independent Studies" section of the Academic Bulletin for more details.)

Optional Focus Areas

Students may complete a focus area to fulfill the Major Elective requirement.

OR

Data Analytics:

MATH 601 - Introduction to Analytics (4)

This course provides an introductory overview of methods, concepts, and current practices in the growing field of statistics and data analytics. Topics to be covered include data collection, data analysis and visualization as well as probability, statistical inference and regression methods for informed decision-making. Students will explore these topics with current statistical software. Some emphasis will also be given to ethical principles of data analytics.

DATA 605 - Data Visualization & Reporting (4)

This course focuses on collecting, preparing, and analyzing data to create visualizations, dashboards, and stories that can be used to communicate critical business insights. Students will learn how to structure and streamline data analysis projects and highlight their implications efficiently using the most popular visualization tools used by businesses today.

DATA 611 - Applied Machine Learning (4)

This course explores two main areas of machine learning: supervised and unsupervised. Topics include the fundamental concepts, roadmap of a machine learning project, classification algorithms, regression algorithms, dimensionality reduction, model evaluation, natural language processing, neural networks and deep learning, typical issues in real-world machine learning problems, and Python programming in data science.

OR

Cybersecurity:

ISEC 610 - Information Assurance (4)

This course covers the fundamentals of security in the enterprise environment. Included are coverage of risks and vulnerabilities, threat modeling, policy formation, controls and protection methods, encryption and authentication technologies, network security, cryptography, personnel and physical security issues, as well as ethical and legal issues. This foundational course serves as an introduction to many of the subsequent topics discussed in depth in later security courses.

ISEC 620 - Software and App Security (4)

Today, software is at the heart of nearly every business from finance to manufacturing. Software pervades everyday life in expected places like phones and computers but also in places that you may not consider such as toasters, thermostats, automobiles, and even light bulbs. Security flaws in software can have impacts ranging from inconvenient to damaging and even catastrophic when it involves life-critical systems. How can software be designed and built to minimize the presence of flaws or mitigate their impacts' This course focuses on software development processes that identify, model, and mitigate threats to all kinds of software. Topics include threat modeling frameworks, attack trees, attack libraries, defensive tactics, secure software development lifecycle, web, cloud, and human factors.

ISEC 640 - Cryptography (4)

The cryptographic primitives of enciphering/deciphering and hashing are the two main methods of preserving confidentiality and data integrity at rest and in transit. As such, the study of cryptographic techniques is of primary interest to security practitioners. This course will cover the essential principles in historical and modern cryptography, including the underlying information theory, mathematics, and randomness. Critical technologies such as stream and block ciphers, symmetric and asymmetric cryptography, public key infrastructure, and key exchange will be explored. Finally, hashing and message authentication codes will be examined as a way of preserving data integrity.

OR

Software Systems:

COMP 645 - Object-Oriented Design & Practice (4)

This course surveys current practices in software development and software design, especially in the area of object-oriented design. The course will examine and contrast current and leading edge methodologies and practices, including agile, extreme programming, test-driven design, patterns, aspect-oriented programming, model-driven architecture, Unified Modeling Language, and integrated development environments.

COMP 650 - System Architecture & Engineering (4)

This course covers topics in software systems engineering. Its scope is the design of the overall architecture for software systems with emphasis on distributed architectures. The issues in an architecture centered software development cycle and project management are addressed.

COMP 670 - Application of Artificial Intelligence (4)

This course is an introduction to Artificial Intelligence (AI) from an applied perspective. After an introduction of some basic concepts and techniques (such as searching and knowledge representation), the course illustrates both the theoretical foundation and application of these techniques with examples from a variety of problems. The course surveys a wide range of active areas in AI such as machine learning, artificial neural networks, evolutionary computing, robotics, intelligent agents and bio-inspired AI approaches. It strikes a balance between engineering approaches and theory. Exercises include hands-on application of basic AI techniques as well as selection of appropriate technologies for a given problem. The principal topics in the selected areas are also coupled with projects where groups of students will participate in the creation of AI-based applications.

Corequisites
COMP 501 - Foundations of Programming (4)

This course covers fundamental programming principles. Students will learn about the basic elements of a computer program, such as data types, assignments, conditional branching, loops, functions, recursion, basic data structures, program debugging, and testing.

OR ITEC 136 - Principles of Programming (4)

This course introduces programming to individuals with little or no programming background. The goal of this course is to introduce the fundamentals of structured programming, problem solving, algorithm design, and software lifecycle. Topics will include testing, data types, operations, repetition and selection control structures, functions and procedures, arrays, and top down stepwise refinement. Students will design, code, test, debug, and document programs in a relevant programming language.

OR COMP 111 - Introduction to Computer Science & Object-Oriented Programming (4)

This course provides an introduction to software construction using an object-oriented approach. The student learns and reflects on problem analysis, object-oriented design, implementation, and testing. To support the concepts and principles of software construction, the student will design, code, test, debug, and document programs using the Java programming language. Basic data types, control structures, methods, and classes are used as the building blocks for reusable software components. Automated unit testing, programming style, and industrial practice are emphasized in addition to the object-oriented techniques of abstraction, encapsulation, and composition.

COMP 511 - Foundation Data Struc & Obj Orntd Design (4)

This course continues the object-oriented approach to intermediate-level software development. The student will learn and reflect on fundamental object-oriented analysis techniques, basic design patterns, and linear data structures such as lists and queues.

OR COMP 121 - Object-Oriented Data Structures & Algorithms I (4)

This course continues the objected-oriented approach to software construction. The student learns and reflects on advanced object-oriented techniques, algorithm efficiency, class hierarchies, and data structures. To support the concepts and principles of software construction, the student will design, code, test, debug, and document programs using the Java programming language. Design principles, I/O, exception handling, linear data structures (lists, stacks, and queues), and design patterns are emphasized in addition to the object-oriented techniques of inheritance and polymorphism.

MATH 503 - Foundations of Mathematics for Computing (4)

This course introduces students to fundamental algebraic, logical, and combinational concepts in mathematics that are needed in upper division computer science courses. Topics include integer representation; algorithms; modular arithmetic and exponentiation; discrete logarithms; cryptography; recursion; primality testing; number theory; graphs and directed graphs; trees; and Boolean Algebra.

OR MATH 320 - Discrete Mathematics (4)

This course introduces students to fundamental algebraic, logical, and combinational concepts in mathematics that are needed in upper-division computer science courses. Topics include sets, mappings, and relations; elementary counting principles; proof techniques with an emphasis on mathematical induction; graphs and directed graphs; Boolean algebras; recursion; and applications to computer science.

Students with an undergraduate degree in computer science will be admitted without future prerequisites. However, the students will be expected to possess intermediate Java programming skills as determined by completing COMP 121 or COMP 511, having a Java SE 8 programmer certification from Oracle, or a portfolio of Java-related examples that would include the fundamentals of object-oriented programming, linear and non-liner data structures (stacks, queues, lists, etc.)

Students without a computer science degree will need to have credit for the above Franklin University courses or the equivalent undergraduate course work for the prerequisites at an institutionally (formerly regionally) accredited institution OR appropriate relevant work experience. Graduate prerequisite courses (500 level) must be completed with a grade of "C" or better. Undergraduate prerequisite courses must be completed with a grade of "C" or better. Work experience as a software engineer, developer, or programmer analyst will be evaluated by the program chair upon request. Resumes, work samples, and personal interviews may all be used to determine the depth of knowledge in these areas.