Computer Science

Degrees and Certificates

Mission Statement of the Computer Science Department

In accordance with the University’s mission, the mission of the Computer Science Department is to equip our students with technology competence, literacy, knowledge and skills that will bring them to “their highest potential and prepare them to meet the challenges of the new century with informed minds and understanding hearts.” As a liberal arts University, the CS curricula contribute in providing our graduates with the necessary critical thinking and problem-solving skills needed by today’s workplace and society at large.

The purpose of the Computer Science major is to prepare students to work for government agencies, healthcare institutions, private companies, and to pursue graduate degrees. The field of Computer Science is one of the professions predicted by the U.S. Department of Labor to have very high growth through the year 2020. This program emphasizes an understanding of the field of Computer Science both as an academic discipline as well as a profession. Graduates of this program will be well-versed with various areas of Computer Science that have shaped the discipline during its explosive existence. In addition, this program will provide a firm grounding in the liberal arts, while assuring in-depth study of the discipline of computer science. Topics include software engineering, computer hardware and systems software, network and data communications, computer systems analysis and design, and database management systems.

Computer Science Learning Outcomes

At the end of their program in Computer Science/Cybersecurity Students will:

  1. Apply their ability to make connections between using computer technologies in their lives and in societal values.
  2. Understand how to act as a team worker to fulfill complex projects and tasks.
  3. Create a computer science related project showing their knowledge of the latest developments in computer science and cybersecurity.
  4. Understand the scientific basis of their discipline.
  5. Apply quantitative and scientific reasoning in their discipline.

See the program for School of Business for more degree information.

Classes

CS 500: OBJECT ORIENTED PROGRAMMING IN C++

Credits 4
This is a fast-paced course to enable students to become proficient in the C++ programming language. It is intended statements, loops, functions, and arrays. Students will write programs for a wide variety of problems in math, science, financials, and games. Upon successful completion of this course, students will be able to analyze and design strategies for solving basic programming problems, use primitive data types, selection statements, loops, functions to write programs, use the step-wise refinement approach, use arrays to store, process, and sort data and use an IDE to develop programs. The credits for this course are not counted towards the required 30 credits for the Master’s Degree program.

CS 501: DISCRETE STRUCTURES

Credits 3
This course is a bridge course and designed for students who do not meet admission requirements for Master of Science in Computer Science. This course explores the theoretical foundations and principles of computer science, including an overview of computational complexity. The course covers definitions of sets, operations on sets, formal logic, functions and relations, graphs and trees, graph algorithms, analysis of algorithms, finite automata, regular languages and regular grammars, properties of regular language, context-free languages, and Turing machines. The students will complete problem solving assignments connected with theory. The credits for this course are not counted towards the required 30 credits for the Master’s Degree program.

CS 502: COMPUTER ARCHITECTURE AND ORGANIZATION

Credits 3
This course is a bridge course and designed for students who do not meet admission requirements for Master of Science in Computer Science. This course covers digital electronics and how circuits realize logic, hardware components, logic gates, buses and memory, and their use in constructing adders, comparators and addressing schemes. This course also investigates machine level representation of data, computer architecture and organization at the machine level, assembly level machine organization, microarchitecture, interfacing and communication, memory systems organization and architecture, cache, functional organization, multiprocessing and alternative architectures, performance enhancements, distributed architectures, and future directions in computer architecture evolution. The credits for this course are not counted towards the required 30 credits for the Master’s Degree program.

CS 503: DATA STRUCTURES AND ALGORITHMS

Credits 3
This course is a bridge course and designed for students who do not meet admission requirements for Master of Science in Computer Science. This course provides students with important aspects of data structures, including simpler data structures as well as advanced data structures and algorithms, the connection between data structures and their algorithms, analysis of algorithms complexity, and presentation of data structures using object-oriented language. Topics include complexity analysis, link lists, stacks and queues, recursion, binary trees, graphs, sorting, and hashing. The students are required to complete problem solving and programming assignments. The credits for this course are not counted towards the required 30 credits for the Master’s Degree program.

CS 598: ADVANCED PROGRAMMING WITH JAVA

Credits 3
This course is designed for students who are already familiar with programming in the Java language. It covers the object-oriented programming paradigm on an advanced level, involving enhanced exercises in writing classes and creating objects with Java, creating GUI Applications and Applets, and exploring the concepts of 2D and 3D computer graphics with Java. The students will be exposed to the techniques of developing practical applications using powerful Java packages including graphics. Topics include: writing classes and creating objects, decision structures, loops and files, GUI Applications, creating GUI Applications with JavaFX, creating Applets, 2D and 3D Graphics rendering.

CS 599: ADVANCED DATABASE AND KNOWLEDGE DISCOVERY

Credits 3
This course provides students with the opportunity to reach a demonstrated level of competence in the areas of databases and knowledge discovery, with the primary objective being for students to advance their knowledge of modern databases and data mining techniques. Major topics include modern databases review, advanced query processing and query languages, and development and applications of database management systems (DBMSs) in modern applications, as well as data analysis on large and distributed databases. A final project is required to design and implement a complex database system for knowledge discovery techniques on large data sets.

CS 600: ADVANCED ALGORITHM DESIGN AND IMPLEMENTATION

Credits 3
This course presents many computer algorithms and covers engineering issues in algorithm design, as well as mathematical aspects of algorithm analysis. The students will be exposed to an algorithm design process that begins with problems arising across the full range of computing applications, builds on understanding of algorithm design techniques, and results in the development of efficient solutions to these problems. Topics include: Basic and Advanced Data Structures, Algorithm Analysis, Graph Algorithms, Sorting and Order Statistics, Advanced Design and Analysis Techniques, NP and Computational Intractability, Approximation Algorithms, Randomized Algorithms.

CS 605: GRAPH ALGORITHMS

Credits 3
This course presents design and analysis of graph algorithms, and applications of these algorithms for solving real world problems. This course covers different graph classes, the design and analysis of graph algorithms, distance and connectivity, finding maximum matchings, graph colorings, vertex covers, maximum cuts, matrices, graph searching, planar graphs, digraph and networks, tree codes, NP-complete problems, and graph approximation algorithms. The students are required to complete problem solving and programming assignments.

CS 610: ADVANCED COMPUTER ARCHITECTURE

Credits 3
This is a course on computer design, outlining the evolution and trends and looking into the future possible enhancements in performance of future machines. The course covers topics such as defining computer architecture, trends in computer architecture technology, trends in power in integrated circuits, trends in cost and dependability, measuring, reporting and summarizing performance, quantitative principles of computer design, performance, price vs. performance, fallacies and pitfalls. Other topics to be covered include instruction-level parallelism, limits of instruction-level parallelism, multiprocessors and thread-level parallelism, memory hierarchy design and storage systems.

CS 615: MODELS OF COMPUTATIONS AND FORMAL LANGUAGES

Credits 3
This course covers concepts and methods of theoretical computer science. This course covers finite deterministic and nondeterministic automata, pushdown automata, Turing machines, regular expressions and languages, context-free grammars and languages, properties of regular and context-free languages, algorithms and decision procedures for context-free languages, unrestricted grammars, undecidability, intractable problems, and complexity classes.

CS 620: OPERATING SYSTEMS DESIGN

Credits 3
This course covers design principles and implementation issues of contemporary operating systems. The concepts are illustrated and tied to modern operating systems: Windows, Unix, Linux, Android. Topics include process management, memory management, file systems, distributed and multiprocessor systems, concurrent processes, scheduling, mutual exclusion, synchronization, deadlock prevention, avoidance, and detection; memory management paged and segmented allocation, the memory hierarchy, caching, virtual memory, page replacement algorithms, and their analyses, operating systems protection and security, embedded systems, client/server and clusters, virtualization and clouds. This course involves programming and operating system projects.

CS 625: PRINCIPLES OF PROGRAMMING LANGUAGES

Credits 3

This course discusses various programming language concepts, as well as design and implementation topics for several language families. Topics include introduction languages and grammars; recursive descent parsing; data types, expressions, control structures, and parameter passing; compilers and interpreters; memory management; functional programming principles. Students completing this course should be able to quickly learn to effectively use new computer programming languages. In particular, students should be able to evaluate programming language features and designs, solve problems using the functional, object-oriented, and declarative paradigms, describe the strengths and limitations of the imperative, functional and object oriented paradigms for solving different kinds of problems (or in different application domains), explain and answer questions about specific languages that illustrate different paradigms, including questions about relevant concepts and major features, and design, define, and evaluate parts of programming languages or similar systems and justify their design decisions.

CS 630: INFORMATION SYSTEMS/TECHNOLOGY AND MANAGEMENT OF DATA

Credits 3
(This course was developed for Health Care Professionals) The focus of this course is on the use of information systems and technology to support and improve patient care and healthcare systems. Legal and ethical issues related to informatics and technology as well as budget and productivity information systems/technology tools, practice information systems and decision support will be discussed. The role of the Administrator in the selection, use of information systems/technology to support and improve patient care and healthcare systems, and interdisciplinary leadership within the healthcare systems will be emphasized. Students work in groups to assess the efficacy of patient care information systems and technology appropriate to a specialized area of practice as part of their project based competency assignment.

CS 631: COMPILER DESIGN

Credits 3
This course covers the fundamental techniques for compiler construction. Students will be exposed to formation structures and algorithms required to implement compilers. Topics include overview of the compilation process, compiler components, lexical analysis component, parsing techniques, symbol tables and declaration processing, semantic analysis, code generation and optimization. The course includes a project to implement a compiler.

CS 635: OBJECT-ORIENTED ANALYSIS AND DESIGN

Credits 3

This course focuses on the object-oriented approach for analysis and design of software projects. It is an applied analysis and design class, addressing the use of object-oriented techniques. This course covers domain modeling, use cases, architectural design, and modeling notations, system design, object design, mapping models to code, testing and configuration management. Students will work in small teams, each team having the responsibility for analysis, design and implementation of a software system.

CS 640: PARALLEL PROGRAMMING

Credits 3
This course focuses on scalable parallelism, ability of a parallel program to run well on any number of processors. This course covers the principles of effective and efficient parallel programming. Topics include foundation of parallel parallelism, parallel abstractions, programming and threads MPI and other local view languages, ZPL and other global view languages, assessing the state of the arts, future directions in parallel programming. The students are required to complete programming assignments.

CS 645: ADVANCED WEB DESIGN AND SCRIPTING LANGUAGES

Credits 3
This course presents cutting-edge techniques and technologies for developing dynamic web sites. Topics include a web server, PHP/ASP as the server-side scripting language, the MySQL database, JavaScript and AJAX for enriching web services on the client side, and page layout with HTML and CSS. Security concerns will be considered with details for prevention of such vulnerabilities in web applications. This course includes a team project to design, implement and deploy a dynamic website at the end of the course.

CS 650: INFORMATION AND DIGITAL SECURITY

Credits 3
This course covers the various technical and administrative aspects of Information Assurance and Security. The course covers the basic notions of confidentiality, integrity, availability, authentication models, protection models, security kernels, secure programming, audit, intrusion detection and response, operational security issues, physical security issues, personnel security, policy formation and enforcement, access controls, information flow, legal and social issues, identification and authentication in local and distributed systems, classification and trust modeling, and risk assessment.

CS 655: ADVANCED CRYPTOGRAPHY

Credits 3
Cryptography provides important tools for ensuring the privacy, authenticity, and integrity of the increasingly sensitive information involved in modern digital systems. Nowadays, cryptographic tools, including encryption, message authentication codes, digital signature, key agreement protocols, etc., are used behind millions of daily online transactions. In this course, we will unveil some of the “magic” of cryptography. Modern cryptography uses mathematical language to precisely pin down elusive security goals, design primitives and protocols to achieve these goals, and validate the security of designed primitives and protocols using mathematical proofs based on clearly stated hardness assumptions. Therefore, to learn cryptography, it is essential to understand its mathematical underpinnings. In this course, we will see the inner-workings of cryptography for several core cryptographic tools, from encryption, to message authentication, to hash functions, to digital signatures, etc.

CS 660: CLOUD COMPUTING

Credits 3
This course covers the basics of the emerging cloud computing paradigm. Students learn how this paradigm came about, understand its enabling technologies, and understand the computer systems constraints, tradeoffs and techniques in setting up and using the cloud. It covers how to implement algorithms in the cloud using Hadoop/MapReduce as a programming model for distributed processing of large datasets. In the end, students will be able to gain competence in evaluating the performance and identifying bottlenecks when mapping applications to the cloud, and develop and implement projects accordingly.

CS 665: ARTIFICIAL INTELLIGENCE

Credits 3
The intent of this course is to introduce the idea of an intelligence that receives perceptions from the environment and performs actions. The course covers theory and algorithms related to artificial intelligence. Topics include intelligent agents, reactive agents, problem solving, state space and problem reduction, search methods, theorem proving, natural language processing and pattern recognition techniques, robotics.

CS 670: ADVANCED DATABASE MANAGEMENT SYSTEMS

Credits 3
This course provides students with the opportunity to reach a demonstrated level of competence in the areas of databases and knowledge discovery, with the primary objective to provide a well-defined target for students who want to advance their knowledge of modern databases and knowledge discovery techniques. Topics include modern database review such as object oriented database, deductive databases, semantic query processing, intelligent and cooperative query languages, active databases, heterogeneous databases, multimedia databases, parallel and distributed database systems, and extensible database systems. It also covers a number of advanced topics in development of database management systems (DBMSs) and the application of DBMSs in modern applications, including advanced concurrency control and recovery techniques, query processing and optimization strategies for relational database systems, advanced access methods, as well as data analysis on large databases. A final project is required to design and implement a complex database system for knowledge discovery techniques on large data sets.

CS 675: ADVANCED DATA MINING

Credits 3
The objective of this course is to get an overview of several advanced data mining techniques and understand the research methods applied in the field. It is assumed that students are familiar with the basic data mining topics (clustering, classification, and association rules) and have some experience with programming and one or more data mining tools (R, RapidMiner, Weka, XLMiner, etc.). Topics include Data Stream Mining, Opinion Mining in Natural Language Processing, Outlier Analysis, Bayesian Networks, Social Network Mining, and Big Data Technologies. Most recent research papers will be discussed in the class and a final paper or project will be presented in the class by each student.

CS 680: COMPUTER GRAPHICS

Credits 3
This course covers the basic principles of the design, use, and understanding of computer graphics systems and applications. Topics covered are: overview of graphics systems, graphics output primitives, attributes of graphics primitives, geometric transformations, two and three dimensional viewing, lighting and shading, modeling and hierarchy, texture mapping, animation, curves and surfaces, advanced rendering. The students are required to complete programming assignments.

CS 682: Advanced Network Security

Credits 3

This course introduces security testing to those who are new to the field. This course is intended for novices who have a thorough grounding in computer and networking basics but want to learn how to protect networks by using an attacker’s knowledge to compromise network security. By understanding what tools and methods a hacker uses to break into a network, security testers can protect systems from these attacks.

Both public and private companies rely on skilled professionals to conduct test attacks on their networks as a way to discover vulnerabilities before attackers do. “Ethical hacker” is one term used to describe these professionals; others are “security tester” or “penetration tester.”

CS 683: Capstone Research in Cybersecurity

Credits 3

This course is the capstone course for all students in the Cybersecurity track of MS in CS which provides the student with a hands-on environment to test and apply knowledge and skills learned throughout the program. The student will be required to critically think through real-world scenarios and recognize the value of cyber security methodologies.

CS 685: GAME DEVELOPMENT

Credits 3
This course explores the processes involved in the development of games, including an analysis of gaming and an exploration of game methodologies. The course considers the various platforms used in game development as well as different game genres such as the use of game development as a link between academia and industry professionals, bridging pure research with real-world applications. Topics include: Core game design concepts, digital imaging and manipulation, aspects of 2D and 3D design, the programming of game loops, using and creating software objects, using functions to segment game programming code into manageable parts, game documentation as part of the design process, usability testing, procedural texturing, creating UV maps, interface design. Students work in teams to accomplish collaborative game development.

CS 690: ADVANCED SOFTWARE ENGINEERING

Credits 3
This course examines and analyzes the methodologies used in design, documentation, verification, implementation, validation, performance, evaluation and maintenance for the development of large software systems. The course covers requirements modeling, design concepts, proof of correctness and automated testing techniques, security engineering, software reuse, component-based software engineering, distributed system software engineering, service-oriented software engineering, systems engineering, systems of systems, realtime software engineering, and software management. The students will design and implement large software systems.

CS 691: COMPUTER HUMAN INTERACTION

Credits 3
Human-Computer Interaction (HCI) is the study of the principles and methods with which one builds effective interfaces for users. This course will introduce students to the theory and practice of developing user interfaces. Practical concerns will be balanced by discussion of relevant theory from the literature of computer science (graphics, software engineering, multimedia), cognitive psychology, and industrial design. Students will also participate in group projects to design, implement, and evaluate user interfaces. Specifically, students who take this class will (a) develop practical user interface design skills, (b) develop an understanding of the human side of computing, (c) understand the significance of historical case studies, and (d) learn about future directions in HCI. This course will provide a balance of practical and theoretical knowledge.

CS 692: Ethical Issues in Technology

Credits 3

This course explores the issues of computer ethics on the level of the professional computer scientist. It encourages the student's development of skills in ethical analysis through the use of methodologies such as
exploration of research articles, interactive dialog, case study analysis, and the comparison and contrasting of actual codes of ethics within the profession. Topics include: review of computer crime and computer security vis a vis hardware, software, networking, telecommunications, and database management; computer hacking and the intrusion of viruses/malware/etc.; software theft and intellectual property rights; invasion of privacy on the Internet and at the workplace; software engineering ethics and professional practices; informatics and professional responsibility; computer ethics and computer law; computer and information system failures as an ethical issue; impact of artificial intelligence and expert systems.

CS 695: SPECIAL TOPICS IN COMPUTER SCIENCE

Credits 3
In any given semester the Computer Science department may offer a Special Topics course taught in subject areas that are specific to individual faculty members’ areas of expertise. Content varies from one offering to another. The possible topics may include (but are not limited to) Medical Imaging, Web Mining for Social Networks, Cryptography, etc. The faculty member will introduce experimental or theoretical research on current computer science problems and supervise reading and discussion on topics not covered by regular courses of instruction.

CS 698: Graduate Internship

Credits 3

The Graduate Computer Science (CS) Internship provides the student with a professional work experience in an organizational environment. The internship is an extension of the curriculum and provides meaningful experience related to the student's area of concentration. The internship responsibilities must be approved in advance by a faculty member of the CS department. The student is supervised within the work setting and also by a faculty advisor from the department of Computer Science. 

Graduate Internship 1-3 credits (elective course)

Prerequisites: the student must be in the current MS in CS program.

CS 699: CAPSTONE PROJECT

Credits 3
The capstone project course gives students comprehensive experience working on realworld projects individually or as part of a team. The capstone project demands intensive, face-to-face communication with other team members (if working on a team project), the faculty instructor, or the project mentor. Each project must first be approved by a faculty member (project advisor) before the project commences. At the end of the project, students must submit the documentation for the project and give a final oral presentation. Generally, the work of this project consists of identifying the project requirements, designing, developing and implementing solutions, and planning for the future development and maintenance activities. This course enhances students' programming skills and provides hands-on experiences in designing and building computerized systems.

CS 700: MASTER’S THESIS IN COMPUTER SCIENCE Part 1

Credits 3
Students who choose this option will select a research topic in Computer Science in consultation with a faculty advisor. A brief written Thesis Proposal must be approved by the advisor and a committee, consisting of two faculty members and chosen by the student and advisor. At the end of this course, students must complete preliminary work in the form of a Thesis Report. For students who decide not to continue with research, these three credits will be counted as elective credits. Students who decide to continue research are required to take CS 701 to complete their Thesis.

CS 701: MASTER’S THESIS IN COMPUTER SCIENCE Part 2

Credits 3
This course is a continuation of CS 700. Students who decide to continue their research must complete a written thesis. When the thesis has been completed, each student will be expected to give an oral presentation before his/her committee. The thesis advisor will assign a grade for the work in consultation with the committee.

CS 720: Advanced Topics in Informatics

Credits 3
Clinical information systems and stand-alone information systems are evaluated for use in healthcare systems from an organizational, financial, ethical and legal perspective. Standards and principles for the selection of information systems technology appropriate to specialized population needs are examined. The critical ability to conceptualize, develop and execute a healthcare outcome evaluation plan based on data extraction from an identified system is examined. The management of individual and aggregate level information for the support and quality improvement of patient and population care is analyzed. Communication plans and system roll-out is addressed. Selected topics include information literacy, personal digital assistants, documentation classification systems, electronic health record, data repositories, Community Health Information Network, national informatics initiatives and Institute of Medicine recommendations are addressed

CSEC 665: Advanced Digital Forensics

Credits 3

This course introduces students to the principal activities and state-of-the-art techniques involved in developing digital forensics systems. Topics covered may include advanced file carving and reconstruction, forensic analysis of modern filesystems, network forensics, mobile device forensics, memory forensics, and anti-forensics. This course provides an advanced digital forensic topic relating to malicious software (malware), which represents an increasing information security threat to computer systems and networks. This course also introduces students to the application of forensic science principles and practices for collecting, examining, analyzing, and presenting digital evidence. The course includes selected topics from the legal, forensic, and information technology domains and utilizes lectures, assignments, and programming projects to illustrate these topics. We will explore these topics through the use of various open-source forensic tools.

CSEC 670: Advanced Penetration Testing and Cyberwarfare

Credits 3

Advanced Penetration Testing is a hands-on course that focuses on attacking and defending highly secured environments such as agencies, financial organizations, federal organizations, and large companies. The Advanced Penetration Testing course teaches the cyber-attack lifecycle from the perspective of an adversary. Advanced Penetration Testing is designed as a logical progression point for those who have completed Penetration Testing or for those with existing penetration testing experience. Students with the prerequisite knowledge to take this course will walk through dozens of real-world attacks used by the most seasoned penetration testers. The methodology of a given attack is discussed, followed by exercises in a hands-on lab to consolidate advanced concepts and facilitate the immediate application of techniques in the workplace. A sample of topics covered includes weaponizing Python for penetration testers, attacks against network access control (NAC) and virtual local area network (VLAN) manipulation, network device exploitation, breaking out of Linux and Windows restricted environments, IPv6, Linux privilege escalation and exploit-writing, testing cryptographic implementations, fuzzing, defeating modern OS controls such as address space layout randomization (ASLR) and data execution prevention (DEP), return-oriented programming (ROP), Windows exploit-writing, and much more!