Computer Science MS

Department Requirements

A comprehensive exam will be given during the semester in which a student expects to graduate.

Deficiency Requirements: CSCI 515, CSCI 516.  Students must have a 'B' or better in these deficiency courses to continue in the Master's program.  Undergraduate courses may be substituted with departmental approval.  Students with deficiencies in mathematics will be required to complete one or more of the following: MATH 2413, MATH 2414 Calculus II, MATH 401, and MATH 2320 Differential Equations or MATH 2318 Linear Algebra.  In addition, ENG 341 Technical Writing (Technical Writing) is strongly recommended for all international students.

Students must have a 'B' average overall and not more than 3 'C's in total.  At most one 'C' is allowed for Required Core Courses.  At most one 'C' is allowed for courses in student's specialization track.

Note: The Department reserves the right to suspend from the program any student who in the judgment of a duly constituted departmental committee does not meet the professional expectations of the field.

Master of Science in Computer Science - Option I Thesis

Thesis ( 6 semester hours)
CSCI 518Thesis (6 semester hours required)6
Only 6 semester hours of credit for 518 per degree will be given upon satisfactory completion of the requirement.
Required Core Courses (16 semester hours)
CSCI 520Data Structures and Algorithm Analysis4
CSCI 530Operating Systems 3
CSCI 532Algorithm Design 3
CSCI 540Computer Architecture 3
CSCI 549Automata Theory 3
Students must complete one of the following tracks: (6 semester hours)
Track courses can be taken as electives.
Database Track
CSCI 526Database Systems3
CSCI 527Advanced Databases3
Computer Networks Track
CSCI 525Networking I3
CSCI 534Networking II - Routers and Switches3
Cyber Security Track
CSCI 563Information Security3
CSCI 554Digital Forensics3
Artificial Intelligence Track
CSCI 538Artificial Intelligence3
CSCI 574Machine Learning3
Data Science Track
CSCI 556Data Analysis & Visualization3
CSCI 573Big Data Computing and Analytics3
Image Processing Track
CSCI 567Image Processing with Elements of Learning3
CSCI 569Image Analysis and Recognition with Learning3
Software Engineering Track
CSCI 524Analysis & Design Softwr Sys3
CSCI 548Software Testing3
Electives (3 semester hours)
3 semester hours may be taken in an appropriate supporting field with approval of the graduate advisor. Requirements for a minor will be determined by evaluating a student's background in computer science.3
Total Hours31

Master of Science in Computer Science - Option II Non-Thesis

Research (3 semester hours
CSCI 595Research Lit & Techniques (3 semester hours required)3
Required Core Courses (16 semester hours)
CSCI 520Data Structures and Algorithm Analysis4
CSCI 530Operating Systems3
CSCI 532Algorithm Design3
CSCI 540Computer Architecture3
CSCI 549Automata Theory3
Students must complete one of the following tracks: (6 semester hours)
Track courses can be taken as electives.
Database Track
CSCI 526Database Systems3
CSCI 527Advanced Databases3
Computer Networks Track
CSCI 525Networking I3
CSCI 534Networking II - Routers and Switches3
Cyber Security Track
CSCI 563Information Security3
CSCI 554Digital Forensics3
Artificial Intelligence Track
CSCI 538Artificial Intelligence3
CSCI 574Machine Learning3
Data Science Track
CSCI 556Data Analysis & Visualization3
CSCI 573Big Data Computing and Analytics3
Image Processing Track
CSCI 567Image Processing with Elements of Learning3
CSCI 569Image Analysis and Recognition with Learning3
Software Engineering Track
CSCI 524Analysis & Design Softwr Sys3
CSCI 548Software Testing3
Electives (12 semester hours)
12 semester hours may be taken in an appropriate supporting field with approval of the graduate advisor. Requirements for a minor will be determined by evaluating a student's background in computer science.12
Total Hours37

Note:  Successful completion of the Comprehensive Exam is required of all students.

CSCI 502 - Statistics for Scientific Computation and Analysis
Hours: 3
Hours: Three. This course provides an introductory framework for the statistical background required for scientific computation and data analysis. The course introduces fundamental statistical concepts such as probability, random variables, probability distributions, statistical expectation, sampling distributions, hypothesis testing, linear regression, correlation, and visualization/plotting of data, with emphasis on applications to scientific computing and computational science problems. Concepts will be reinforced by having students use a statistical/scientific computing & visualization software in order to apply the concepts that they learn by solving problems from various disciplines.

CSCI 505 - Internship
Hours: 3
This course gives students the opportunity to earn credit while obtaining valuable working experience. This course is offered to students who have obtained an internship with a company or organization that employs personnel with computer science and information technology skills. Students are supervised by the employer and by Computer Science faculty.

CSCI 507 - Computational Science Internship Practicum
Hours: 3
This course is mandatory for non-thesis students. Students learn how to analyze an interdisciplinary scientific problem, how to identify and define the computing requirements, and how to apply appropriate tools of computing toward its solution. Students earn course credit while obtaining valuable working experience by working for a company, or a faculty member performing tasks that require computational science skills. Students are aimed to have hands on experience on interdisciplinary scientific problems and develop mathematical models. The structured plan of the course prepares student for work-readiness. The focus of CSCI 507 is to develop initial knowledge, theory, models, and foundation to be used in CSCI 508. Student will submit a written internship report. Prerequisites: CSCI 509, CSCI 502, CSCI 515, CSCI 530, CSCI 532, CSCI 549, and departmental approval.

CSCI 508 - Computational Science Internship
Hours: 3
This course is mandatory for non-thesis students. The Computational Science internship course is designed to provide students with advanced instruction and professional experience. Students learn how to apply appropriate tools of mathematics and statistics toward a solution of an interdisciplinary scientific problem, how to validate the results of a solution to an interdisciplinary scientific problem, and how to communicate effectively with an interdisciplinary audience. The internship rules for CSCI 507 also apply to CSCI 508. The focus of CSCI 508 is the applications and practical results based on initial knowledge, theory, models, and foundation developed in CSCI 507. Student will submit a written internship report demonstrating how they practiced scientific methods for project outcome. Prerequisites: CSCI 509, CSCI 502, CSCI 515, CSCI 530, CSCI 532, CSCI 549, and departmental approval.

CSCI 509 - Introduction to Computational Science
Hours: 3
This course is an introduction to the MS in Computational Science degree. The course emphasizes the multidisciplinary nature of the field and provides students with concepts needed for working computational scientists. The course will provide an introduction to high level scripting languages used for scientific programming. Concepts such as vectorized and functional programming, issues affecting the creation and use of numerical results for research, the limits of numerical accuracy and an introduction to the Taylor Series will be presented. Computational modeling and mathematical simulation techniques include: solutions of ordinary differential equations, numerical integration, nonlinear equations, random numbers and Monte Carlo method. Prerequisites: CSCI 515.

CSCI 515 - Fundamentals Of Programming C/C++
Hours: 4
Three hours of lecture and two hours of lab. This is an advanced programming course using a high level programming language. Specific objectives are to introduce the development of algorithms as a disciplined approach to problem solving; to present programming practices in design, decoding, debugging, testing and documentation of computer programs; to provide the student with the basic knowledge necessary for further study in the field of computer science.

CSCI 516 - Fundamental Concepts in Computing and Machine Organization
Hours: 3
Concepts of assembly language programming and machine organization of a modern digital computer are presented. Students will have the opportunity to study machine addressing, stack operations, subroutines, programmed and interrupt driven I/O, machine organization and computer architecture at the register level. Students will utilize the 80x86 instruction set and will perform programming exercises.

CSCI 518 - Thesis
Hours: 3-6
Thesis. Six semester hours.

CSCI 520 - Data Structures and Algorithm Analysis
Hours: 4
Three hours of lecture and two hours of lab. The concept of abstract data structures forms the basis for the study of the data structures introduced in this course. Well known, basic data structures and the algorithms associated with them form the primary subject matter. Knowledge of these basic data structures will allow the student to create large scale programs which process meaningful amounts of data. Comparative efficiency analysis of the algorithms studied in the course will be introduced. The student will also become acquainted with formal methods for specifying abstract data types as well as algorithms. Prerequisites: CSCI 515.

CSCI 524 - Analysis & Design Softwr Sys
Hours: 3
This course will provide the student with the opportunity to experience the several phases of conventional software development. Established software engineering practices will be presented. Various software architectures will be introduced. Each student is expected to fully participate in a team project over the course of the semester. Prerequisites: CSCI 515.

CSCI 525 - Networking I
Hours: 3
This course provides a self-contained overview of computer networking by introducing many key concepts and terminology. In particular, we will study the concepts of computer networks and communication including layered architecture, network application services and domain name resolution, transport layer services and TCP/UDP protocols, network layer forwarding and routing functions and subnet/NAT configurations, and link layer functions with the focus of Ethernet standards.

CSCI 526 - Database Systems
Hours: 3
Basic database concepts, organization, and definitions; data and management systems; data description languages; logical and physical differences of database; indexed and multiple-key organization; relational database concepts and examples; and comparison of database systems.

CSCI 527 - Advanced Databases
Hours: 3
Advanced Databases. Three semester hours. General theory, concept, and techniques related to allow students the design of intelligent databases will be discussed. Other topics to be covered include expert systems, neural networks, hypermedia, and text retrieval. A moderate-size semester project will be assigned to practice the design of an intelligent database. Prerequisite: CSCI 526.

CSCI 528 - Advanced Object-Oriented Programming
Hours: 3
This course investigates object-oriented methods including object-oriented programming, analysis and design. Current methodology is emphasized. The use of object-oriented features such as encapsulation, information hiding, inheritance and polymorphism is reinforced by class assignments and programming exercises. Prerequisites: CSCI 515.

CSCI 530 - Operating Systems
Hours: 3
The course objectives are two-fold: (1) to learn general theory, concept, and techniques related to the design of operating systems; (2) to practice the design of an operating system by performing a design project. The course is basically divided into four sections: Introduction to Operating Systems, Process Management, Storage Management, and UNIX (Shell and Interpreter). Prerequisites: CSCI 515 and CSCI 516.

CSCI 531 - Java Language Programming
Hours: 3
This is a computer programming course designed to teach the use of the Java Programming Language. The course will emphasize Java applets and their use in HTML files as applied to Internet web pages. Students will learn how to write Java applets, how to utilize pre-existing Java controls, and how to write new Java controls. Students will be expected to complete numerous programming assignments and programming projects. Experience with C++ programming language and object oriented methods are required. Prerequisites: CSCI 515.

CSCI 532 - Algorithm Design
Hours: 3
Algorithms, being the foundation of computing, allow us to create well-defined sequences of computational steps in order to solve computational problems – with stipulation on input/out relation, correctly and efficiently within a definite time frame. This course provides a comprehensive introduction to the modern study of computer algorithms. In particular, we will study the design and analysis of algorithms with special emphasis on correctness of algorithms, asymptotic notations, divide-and-conquer, dynamic programming, greedy algorithms, graph algorithms, shortest paths, and selected special topics. Prerequisites: CSCI 515.

CSCI 533 - Applied Computer Algorithms
Hours: 3
This course provides an introduction to the application of design and analysis of algorithms to real-world practical problems. Topics include correctness of algorithms, asymptotic notation, time complexity of algorithms, and NP-completeness. Several algorithm design techniques will be discussed in detail including divide and conquer algorithms, dynamic programming algorithms and greedy algorithms. Algorithms based on these techniques will be studied for solving a wide variety of problems in networks, graph theory, optimization, sorting, string processing, mathematical applications, and other areas. Prerequisites: CSCI 515.

CSCI 534 - Networking II - Routers and Switches
Hours: 3
This course instructs students in the detailed operation and configuration of network routers and data communication switches. Topics include the use of routers and switches in a modern digital network, router configuration, switch configuration, and common network security techniques such as Virtual Local Area Networks (VLANs) and Access Control Lists (ACLs). Students will have the opportunity to gain experience in configuring these network devices as they work with routers and switch equipment in the laboratory. Note About 50% of class time will be spent in the CCNA Networking Laboratory. Prerequisites: CSCI 525.

CSCI 538 - Artificial Intelligence
Hours: 3
The course will introduce related concepts and techniques to build intelligent systems that aim at acting rationally given perceived and represented knowledge. An overview of artificial intelligence techniques include knowledge representation, problem solving, reasoning, deduction, searching, planning, learning, etc. Advanced topics in application areas, such as natural language processing, computer vision, pattern recognition, and robotics will also be examined. Prerequisites: CSCI 515.

CSCI 540 - Computer Architecture
Hours: 3
Computer Architecture. Three semester hours. Introduction to current high level computing machines in both hardware and software design. Topics include the design decisions involved in the development of computer architectures, hardware organizations needed to implement various instructions sets, and future trends in computer architectures. Prerequisites: CSCI 516.

CSCI 543 - UNIX NETWORK ADMINISTRATION
Hours: 3
An examination of wide area computer networks (WAN) utilizing current technology. TCP/IP; transmission media; Ethernet; Internetworking (bridges, routers, hubs); WAN network operating systems (UNIX); standard services (FTP, Telnet, etc.); network security, reliability, stability, and design. Prerequisites: CSCI 525.

CSCI 544 - Evolutionary Compututation & Genetic Programming
Hours: 3
Evolutionary Computation and Genetic Programming - Three semester hours Evolutionary computing is the collective name for a range of problem solving techniques based on principles of biological evolution, such as natural selection and genetic inheritance. These techniques have proven to be particularly successful in many diverse problem domains, ranging from economics and finance, to design and automatic programming. Specific topics addressed include theoretical models of evolutionary computation; search, optimization, and machine learning; evolution of programs; population dynamics; and emergent behavior. Prerequisites: CSCI 515.

CSCI 546 - Numerical Analysis
Hours: 3
The course will include numerical methods for derivatives approximation; will teach data approximation and interpolation by Fourier series; Euler's and Runge-Kutta methods for solving ordinary differential equations (ODE) and systems of ODE. Also, the students will study methods for approximate solution of partial differential equations (PDE), including parabolic PDE. Further, the students will learn how to generalize methods for their computer implementation, and will program the basic methods in MatLab. Prerequisites: CSCI 515 and MATH 2414.

CSCI 548 - Software Testing
Hours: 3
This course presents an overview of the principles and practices of software testing. It covers different concepts and techniques on how to test and debug software. Topics include various testing methods such as structural and functional testing; various testing approaches such as unit, integration, regression and system testing. Students will also be introduced to manual and automatic techniques for generating test cases. Prerequisites: CSCI 515.

CSCI 549 - Automata Theory
Hours: 3
This course teaches the general theory, concept, and techniques related to the theory of automata. Practical examples related to programming languages are emphasized. Students will have the opportunity to utilize theoretical aspects of automata theory by performing a medium-scale design project. Topics include: Finite Automata, Transition Graphs, Nondeterminism, Finite Automata with Output, Context-Free Grammars, Regular Grammars, Chomsky Normal Form, Pushdown Automata, Context-Free Languages, Non-Context-Free Languages, Parsing, and Turing Machines. Prerequisites: CSCI 515.

CSCI 551 - Compiler Design
Hours: 3
This class introduces the fundamental concepts in the design and implementation of a compiler, a computer program that converts one programming language into another. The goal is to familiarize students with the basic structure of a typical modern compiler. A variety of tools such as JFLex, JavaCUP and Jasmin will be introduced and used. Prerequisites: CSCI 515.

CSCI 553 - Networking III-Unix Based Ntwk
Hours: 3
This course is designed to introduce advanced concepts of networking applications of UNIX-based mini and micro based computing environments. The UNIX-model of networking, interprocess communication, and TCP/IP sockets are the major topics to be discussed. A moderate-sized course project involving intensive coding will be implemented to exercise and demonstrate TCP/IP aspects and other networking concepts introduced in class. Prerequisites: CSCI 525.

CSCI 554 - Digital Forensics
Hours: 3
This course presents an overview of the principles and practices of digital investigation. The objective of this class is to emphasize the fundamentals and importance of digital forensics. Students will learn different techniques and procedures that enable them to perform a digital investigation. This course focuses mainly on the analysis of physical storage media and volume analysis. It covers the major phases of digital investigation such as preservation, analysis and acquisition of artifacts that reside in hard disks and random access memory. Prerequisites: CSCI 515.

CSCI 556 - Data Analysis & Visualization
Hours: 3
Big scientific data sets are growing exponentially both in size and complexity. Extracting meaningful information from these data requires not only programming skills, but also understanding the analysis work-flows, mathematical models and visualization tools that help to condense large amounts of information into a comprehensible story. We will introduce standard statistical data analysis and modeling methods such as correlation functions, linear regression, clustering, pattern extraction, classification, data mining, as well as Monte Carlo methods which are commonly used in creating simulations in the computational sciences. Different analysis and visualization packages popular in scientific modeling, analysis, and visualization will be introduced. Prerequisite: CSCI 515.

CSCI 558 - Applied Computational Science
Hours: 3
Applied Computational Science - Three semester hours This course provides an introduction and framework for the Master’s degree in Computational Science program. The course emphasizes the multidisciplinary nature of computational science and provides students with basic tools and concepts needed for the degree program. Three main areas are covered: 1) basic software development, software design and programming skills and high level scientific tools and environments 2) introduction to advanced programming techniques and 3) basic computational modeling and mathematical simulation techniques for industry-oriented solving. Prerequisites: CSCI 509.

CSCI 559 - Software Development for Mobile Devices
Hours: 3
This course introduces development of software applications for network enabled mobile devices including smart phones. Topics include components for graphical user interface, memory management, custom user interface development, touch-based or timer-based event handling, file I/O, animation using 2-D/3-D graphics, audio and video application programming interfaces, Bluetooth applications, client-server models, database access, data storage, marketing research. Object Oriented Programming will be introduced with the Objective–C, Java, or Swift. Prerequisites: CSCI 515.

CSCI 560 - Neural Networks and Deep Learning
Hours: 3
In this course the theory and practice of neural computation for machine learning are introduced. Artificial neural networks are used for many real-world problems: classification, time-series prediction, regression, pattern recognition. The class starts with an introduction to feed forward neural networks. More complicated multi-layered "deep" networks are then covered. Basic backpropagation, gradient descent and modern regularization techniques are implemented in assignments. The class will look at modern deep learning techniques: convolutional neural networks, deep belief networks and deep recurrent neural models such as LSTM nets. Readings and current results from the literature on neural network research will be discussed. Prerequisites: CSCI 574.

CSCI 563 - Information Security
Hours: 3
This course provides an introduction to the study of information security and covers the most important features of computer security. Topics include basic concepts and principles in information security, authentication and access control, operating systems security, software vulnerabilities and threats, database security, and basic cryptography including encryption and key establishment.

CSCI 567 - Image Processing with Elements of Learning
Hours: 3
This class will provide the students with an introduction to image processing, with applications to medical, urban agricultural and satellite images. Students will learn methods for 2D image enhancement, sharpening, blurring, noise detection, modeling and cleaning, as well as edge detection in gray level images. The methods students will be able to implement include local statistics, Laplacian and Gradient operators, Fourier transforms and the Fast Fourier Transform. Further, the class will introduce basic elements of convolutional neural networks to learn noise and its cleaning. At the end of the class the students will know which gray level image methods apply to color images. The students will develop skills in programming, reporting and presenting advanced method from the field. Prerequisites: CSCI 515.

CSCI 568 - Cryptography
Hours: 3
The course begins with some classical cryptanalysis (Vigenere ciphers, etc.). The remainder of the course deals primarily with number-theoretic and/or algebraic public and private key cryptosystems and authentication, including RSA, DES, AES and other block ciphers. Some cryptographic protocols are described as well. Prerequisites: CSCI 515.

CSCI 569 - Image Analysis and Recognition with Learning
Hours: 3
This class will start with a study of the basic color image models. Next, the students will learn how to decompose a function to Wavelets. In the following stage the students will learn the basic methods for image segmentation to objects and background. The students will have a knowledge on image segmentation with active contours using deep learning. Further they will learn about images and objects representation and description. The students will know methods from two major approaches: boundary and regions description. The following methods will be taught from the field of Recognition: Decision making; structural methods; features extraction and classification with convolutional neural networks. The students will develop skills in programming, reporting and presenting advanced method from Prerequisites: CSCI 515.

CSCI 570 - Bioinformatics Algorithms
Hours: 3
DNA and RNA carry the information to regulate processes in living organisms. Bioinformatics is the study of these processes in the view of information processing. The focus of this course is to understand these processes and make use of them with the help of algorithms. This course will include the following topics: Sequencing DNA, finding genes, sequence alignment, identifying proteins, repeat analysis, DNA arrays, genome rearrangements, building phylogenetic trees, RNA structure analysis. Some of the practical questions we address are the following: How do we assemble genomes? How do we compare biological sequences? How do we locate disease-causing mutations? Prerequisites: CSCI 515.

CSCI 572 - Parallel Computing
Hours: 3
(Same as PHYS 572) Computer topologies and networks, programming techniques, and parallel algorithms for multiprocessor and multi-computer systems including microprocessor clusters. Prerequisites: CSCI 515.

CSCI 573 - Big Data Computing and Analytics
Hours: 3
Big Data computing is a new computing paradigm, involving analysis of large quantities of data in industry and science communities. It has led to the development of large distributed systems with thousands of computing servers and disks connected over a high-speed network. For such distributed systems, there are several challenges of performance, scalability, and reliability as well as data storage. The goal of this course is to study modern technologies that are used to construct big-data computing systems and methods and tools for big-data analytics. Topics of interest include big-data computing paradigms, big-data storage, and big-data analytics. Prerequisites: CSCI 515.

CSCI 574 - Machine Learning
Hours: 3
Study of computer algorithms that automatically acquire new knowledge and improve their own performance through experience. Theory and practical implementation of algorithms for machine learning. Topics include linear and logistic regression, artificial neural networks, Bayesian networks and learning, decision trees, kernel / support-vector machines, statistical learning methods, unsupervised learning, reinforcement learning, and other modern, emerging algorithms. Short programming assignments and/or projects with hands-on experiments with various learning algorithms will be given. Prerequisites: CSCI 515.

CSCI 575 - Cyber-physical Systems and Industrial IOT
Hours: 3
This course introduces general and/or advanced topics in Cyber-Physical Systems (CPS) which can be defined as engineered systems that are built from, and depend upon, the seamless integration of computational algorithms and physical components. Topics discussed in the course will include CPS capability, adaptability, scalability, resiliency, safety, security, and usability considerations that will far exceed the simple embedded systems of today. Trustworthy embedded systems connected to the Internet will be introduced in context of Industrial Internet of Things (IIoT). A case study team project provides an opportunity for students to demonstrate their practical CPS and IIoT knowledge using platform software covered in the course. Students will be able to develop a career path upon gradua

CSCI 577 - Computer System Performance Evaluation
Hours: 3
Computer System Performance Evaluation - Three semester hours Operations research is the discipline of applying advanced analytical methods to help make better decisions. It uses mathematical modeling, analysis and optimization to improve our knowledge and efficiency of system and model design. This course introduces methods of analysis of computer system performance. It covers predictive performance models with emphasis on queuing models; exact and appropriate solution methods, discrete-event simulation, and numeric iterative approaches; analytical solutions and their computation; separable queuing networks, decomposition approaches; examples of practical application; and performance measurement, model validation, robustness of models, and operational analysis. Prerequisites: CSCI 515.

CSCI 581 - Network Security
Hours: 3
This course provides key concepts in network security. Topics include overview of TCP/IP networks; cryptography including symmetric/asymmetric ciphers, cryptographic hash functions, message authentication codes, and digital signatures; mutual trust including key distribution and user authentication protocols; network and Internet security; and network system security including firewalls. Prerequisites: CSCI 525.

CSCI 587 - SECURE PROTOCOLS
Hours: 3
Secure Protocols. Three semester hours. This course introduces students to advanced protocols that provide information and communications security. Basic protocol building blocks are discussed. Advanced protocols will be analyzed to determine if they satisfy specific security requirements, to discover security loopholes, and to discuss modifications to remove the loopholes. Prerequisites: CSCI 525.

CSCI 589 - Independent Study
Hours: 1-4
Independent Study. One to four semester hours. Individualized instruction/research at an advanced level in a specialized content area under the direction of a faculty member. No more than three hours of independent study may be counted towards the degree. Prerequisite: Consent of department head and supervising faculty member.

CSCI 595 - Research Lit & Techniques
Hours: 3
Research Literature and Techniques. Three semester hours. A course designed to acquaint the student with the role of research in the initiation, development and modification of concepts and theories in computer science. A final written report and presentation and/or demonstration of results obtained during the course will be made to interested faculty members and students. Prerequisite: Completion of the required core courses.

CSCI 597 - Special Topics
Hours: 1-4
Special Topics. One to four semester hours. Organized class in a specialized area of current interest. May be repeated when topics vary.