Computer Science
Chair: Vincent Oria
Associate Chair: Ioannis Koutis
Computing has become integrated into every aspect of business, science, engineering, medicine, and daily life, and is undergoing rapid evolution. NJIT’s Department of Computer Science is dedicated to meeting the demands of the private and public sectors by producing highly qualified computing professionals. We provide a top-notch computer science education that empowers our graduates to achieve remarkable success in their careers at renowned tech companies, start-ups, government agencies, and nonprofit organizations. Our programs equip students with both the theoretical foundations and practical skills necessary not only to excel in the short term, but also be adaptive to the ever-changing landscape of technology.
NJIT’s Department of Computer Science is a thriving center for students at all levels looking to delve into the field of computing. The department offers B.A., B.S., M.S. and Ph.D. degree programs in computer science and evolving specialized interdisciplinary programs.
Undergraduate Degrees. The B.S. program provides a comprehensive and in-depth exploration of computer science, emphasizing technical expertise and advanced concepts. The B.A. program is designed for students with interests in liberal arts or management. Beyond traditional coursework, the department provides students with the Senior Capstone Program, a semester-long course that empowers students to apply their accumulated knowledge and skills to real-world projects, in collaboration with one of NJIT's 200 industry sponsors and partners.
Graduate Degrees. The MS in Computer Science offers a well-rounded advanced education in computer science. Students acquire theoretical knowledge and technical skills that enable them to pursue various types of careers in computing and technology. Students can shape their coursework based on their interests and professional needs, by selecting courses from various areas, including artificial intelligence, cybersecurity, computer algorithms, data management, programming languages and environments, systems, software engineering and other advanced topics. The department also offers cutting-edge specialized MS degrees in Cybersecurity and Privacy, in Software Engineering, and in Bioinformatics.
Ph.D. Degree. NJIT is positioned among the nation’s most elite and productive research institutions, with an R1 (very high research activity) Carnegie classification. The Ph.D. degree offers to students the opportunity to engage, along with the department’s faculty, in world-level research across a wide range of areas. The overarching objective of our research is to generate intellectual contributions and outcomes that will translate into tangible products and services, ultimately enhancing the lives of billions of people.
NJIT Faculty
A
Arafeh, Bassel, Senior University Lecturer
B
Bakhshaliyev, Khalid, Senior University Lecturer
Basu Roy, Senjuti, Associate Professor
Berenjian, Samaneh, Senior University Lecturer
Borcea, Cristian M., Professor
C
Calvin, James M., Professor
Curtmola, Reza, Professor
D
Dale, Mohit, University Lecturer
Ding, Xiaoning, Associate Professor
E
Eljabiri, Osama, Senior University Lecturer
Eren, Canan, Senior University Lecturer
Eskandari, Marzieh, Senior University Lecturer
G
Gerbessiotis, Alexandros, Associate Professor
Gotsman, Craig J., Distinguished Professor
H
Hamidli, Fuad, University Lecturer
Houle, Michael, Senior University Lecturer
I
Itani, Abdul-Rahman M., Senior University Lecturer
J
Jayarajah, Kasthuri, Assistant Professor
K
Kapleau, Jonathan, J., University Lecturer
Kaur, Arashdeep, Senior University Lecturer
Kellogg, Martin, Assistant Professor
Koutis, Ioannis, Associate Professor
L
Lay, Larry, Professor of Practice
Le, Huong, University Lecturer
Li, Jing, Assistant Professor
Li, Yajuan, University Lecturer
Liu, Chengjun, Professor
M
Mani, Kumar, Senior University Lecturer
Mili, Ali, Professor and Associate Dean for Academic Affairs
Musialski, Przemyslaw, Associate Proffessor
N
Naik, Kamlesh, University Lecturer
Nakayama, Marvin K., Professor
Nassimi, David, Associate Professor
Neamtiu, Iulian, Professor
O
Oria, Vincent, Professor
P
Payton, Jamie, Dean, Professor
Perl, Yehoshua, Professor
Q
Qerimaj, Jertishta, University Lecturer
R
Raza, Asad, Senior University Lecturer
Rohloff, Kurt, Associate Professor
Rusinkiewicz, Marek E., Dean Emeritus
Rutkowski, Wallace, Senior University Lecturer
S
Schieber, Baruch, Professor
Sharma, Shantanu, Assistant Professor
Shi, Cong, Assistant Professor
Shih, Frank Y., Professor
Sohn, Andrew, Associate Professor
Spirollari, Junilda, Director of First Year of Computer Science Education
T
Theodoratos, Dimitrios, Associate Professor
V
Vaish, Prabht, Senior University Lecturer
W
Wang, Jason, T., Professor
Wang, Guiling (Grace), Distinguished Professor, Associate Dean for Research
Wei, Zhi, Professor
X
Xu, Pan, Assistant Professor
Y
Yao, Zhihao, Assistant Professor
Z
Zaidenberg, Ayelet, University Lecturer
Computer Science Courses
CS 505. Programming, Data Structures, and Algorithms. 3 credits, 4 contact hours.
Prerequisites: No formal prerequisites – The course assumes basic knowledge of a higher-level programming language. A higher-level programming language (e.g. C++/Java); program design techniques; introductory data structures (linked lists, stacks, sets, trees, graphs); and algorithms (sorting, searching, etc.) and their analysis. Programming assignments are included.
CS 506. Foundations of Computer Science. 3 credits, 3 contact hours.
Prerequisites: No formal prerequisites – The course assumes basic knowledge of a higher-level programming language. Introduction to the concepts of iteration, asymptotic performance analysis of algorithms, recursion, recurrence relations, graphs, automata and logic, and also surveys the main data models used in computer science including trees, lists, sets, and relations. Programming assignments are given.
CS 593. Graduate Co-op Work Experience IV. 0 credits, 0 contact hours.
Restriction: One immediately prior 3-credit registration for graduate co-op work experience with the same employer. Requires approval of departmental co-op advisor and the Division of Career Development Services. Must have accompanying registration in a minimum of 3 credits of course work.
CS 602. Java Programming. 3 credits, 3 contact hours.
Prerequisite: advanced Web-based programming with an emphasis on the Java language and platform. No prior knowledge of Java is required but students are expected to have a good understanding of object-oriented programming concepts such as encapsulation, inheritance, and polymorphism, experience with C++. Basic constructs and syntax and then the core advanced features. Topics include: networking and sockets, remote method invocation (RMI), database connectivity (JDBC), Java Beans, multi-threading and lighweight components (Swing). Common gateway interface (CGI) languages and browser scripting (JavaScript and VBScript) are discussed when used as a complement to the functionality of the Java language. Emphasis is on the latest version of Java, both deprecated methods and newly introduced features are discussed.
CS 608. Cryptography and Security. 3 credits, 3 contact hours.
This course involves computational methods providing secure Internet communication. Among the topics covered are: Security threats in communication systems; conventional cryptography: substitution and transposition codes; distribution of secret key over the Internet; principles of public-key cryptography; RSA and other public-key cryptographic methods; and digital signature protocol.
CS 610. Data Structures and Algorithms. 3 credits, 3 contact hours.
Prerequisites: CS 114 and CS 241 or equivalents (see undergraduate catalog for description). Intensive study of the fundamentals of data structures and algorithms. Presents the definitions, representations, processing algorithms for data structures, general design and analysis techniques for algorithms. Covers a broad variety of data structures, algorithms and their applications including linked lists, various tree organizations, hash tables, strings, storage allocation, algorithms for searching and sorting, and a selected collection of other algorithms. Programs are assigned to give students experience in algorithms, data structure design and implementation.
CS 611. Introduction to Computational Complexity. 3 credits, 3 contact hours.
Prerequisites: CS 610 or CS 435, or doctoral student status. While efficient algorithms have been discovered for many computational problems, many other problems appear to be computationally hard. Such problems appear in disparate contexts and they often look quite different. Computational Complexity is the systematic study of computationally hard problems that uncovers hidden relationships among them. This course introduces the fundamentals of Computational Complexity and provides an understanding of both the inherent capabilities and limitations of computation. Topics include: Computability, Reductions, NP-Completeness and Time Complexity, Space Complexity, Computational Hierarchies, Parameterized and Fine-Grained Complexity, Interactive Proofs, Complexity of Counting, and Basic Cryptography.
CS 630. Operating System Design. 3 credits, 3 contact hours.
Prerequisites: No formal prerequisites - The course assumes knowledge of topics of CS 332 and CS 505 or equivalent courses. An intensive study of computer operating system design including multiprogramming, time-sharing, real-time processing, job and task control, synchronization of concurrent processes and processors, resource scheduling, protection, and management of hierarchical storage.
CS 631. Data Management System Design. 3 credits, 3 contact hours.
Prerequisites: knowledge of C and data structures. Acquaintance with fundamental notions of relational database technology. Mathematical properties and usage of database programming languages. Methods of database design and conceptual modeling. Methods of physical storage for database information. Fundamental notions of concurrency control and recovery in database systems.
CS 632. Advanced Database System Design. 3 credits, 3 contact hours.
Prerequisites: CS 631 and good knowledge of a high-level programming language. Covers the rapidly changing concepts and principles of modern database systems and database programming based on SQL. Additional topics may include: advanced data modeling, OODBs, parallel and distributed database systems, XML and NO-SQL databases, Web-database systems, active databases, multimedia and text databases, database security, query optimization, indexing techniques, concurrency control, system performance, and data warehaousing.
CS 633. Distributed Systems. 3 credits, 3 contact hours.
Prerequisite: completion of bridge requirements. Fundamental topics concerning the design and implementation of distributed computing systems are covered, including interprocess communication, remote procedure calls, authentication, protection, distributed file systems, distributed transactions, replicated data, reliable broadcast protocols, and specifications for distributed programs. All topics will be illustrated with case studies. Optional topics may include synchronization, deadlocks, virtual time, and load balancing.
CS 634. Data Mining. 3 credits, 3 contact hours.
This course covers the principles of data mining system design and implementation. It presents methods for association and dependency analysis as well as classification, prediction, and clustering. Optional topics may include time series and graph mining, current trends in data mining, and data mining for scientific, medical and engineering applications.
CS 635. Computer Programming Languages. 3 credits, 3 contact hours.
Prerequisites: No formal prerequisites – The course assumes knowledge of a high-level programming language and topics of CS 505 or equivalent courses. The theory and design of computer language systems; the formal theory of syntax and language classification; a survey of procedure and problem-oriented computer programming languages, their syntax rules, data structures, and operations; control structures and the appropriate environments and methods of their use; a survey of translator types.
CS 636. Data Analytics with R Program. 3 credits, 3 contact hours.
Prerequisites: No formal prerequisites – The course assumes knowledge of programming, probability, and statistics, e.g. topics of MATH 333, CS 280, or equivalent courses. This course teaches data analytics with R programming. The student will learn and gain basic analytic skills via this high-level language. The course covers fundamental knowledge in R programming. Popular R packages for data science will be introduced as working examples. The course also includes case studies on data analytics projects. As a core course in data science, it provides skills that are highly desirable for both industry and academic employers.
CS 639. Elec. Medical Records: Med Terminologies and Comp. Imp.. 3 credits, 3 contact hours.
This course presents a graduate introduction to Medical Informatics for Computer Science students covering (1) the design, use and auditing of medical terminologies, such as the Unified Medical Language System (UMLS) and the Systematized Nomenclature of Medicine (SNOMED); and (2) principles of Electronic Medical Records (EMR), Electronic Health Records (EHR) and Personal Health Records (PHR), including issues of privacy and security.
CS 643. Cloud Computing. 3 credits, 3 contact hours.
Prerequisites: CS 644 or DS 644 or CS 656 or ECE 637. The course presents a comprehensive view of cloud computing, from platforms and services to programming and infrastructure. The topics include: cloud computing platforms, with examples from Amazon Web Services (AWS), Google Cloud, and Microsoft Azure; cloud services for data analytics, machine learning, mobile computing, IoT, edge computing, security and privacy, and devops; programming frameworks for parallel computing in the cloud; distributed storage in the cloud; and virtualization and containerization. The course includes homework, programming assignments, and research paper presentations.
CS 644. Introduction to Big Data. 3 credits, 3 contact hours.
Prerequisite: permission of the instructor.
This course provides an in-depth coverage of various topics in big data from data generation, storage, management, transfer, to analytics, with focus on the state-of-the-art technologies, tools, architectures, and systems that constitute big-data computing solutions in high-performance networks. Real-life big-data applications and workflows in various domains (particularly in the sciences) are introduced as use cases to illustrate the development, deployment, and execution of a wide spectrum of emerging big-data solutions.
CS 645. Security and Privacy in Computer Systems. 3 credits, 3 contact hours.
Prerequisites: Students are expected to enter this course with a basic knowledge of operating systems, networking, algorithms, and data structures. Also, students should be able to program in Java and C/C++. The course covers fundamental principles of building secure systems and techniques to ensure data security and privacy. Topics include access control mechanisms, operating systems security, malicious code threats and software security, trusted computing, content protection, and database security . The course will also study existing technical approaches to protecting privacy, including Web anonymizers and ant-censorship tools, as well as policy and legal aspects of privacy.
CS 646. Network Protocols Security. 3 credits, 3 contact hours.
Prerequisites: CS 656 or ECE 637, and ability to program in Java and C/C++. This course covers the security of network protocols currently used on the internet. It seeks to familiarize students with common threats and network attacks, and provides an in-depth study of methods used to secure network communication. The course includes an applied component, which will help students gain practical experience in attacking and defending networked systems. Topics include authentication systems, and routing security, firewalls, intrusion detection, honeypots, wireless network security, malware, propagation and detection, and web security.
CS 647. Counter Hacking Techniques. 3 credits, 3 contact hours.
Prerequisites: CS 645 or CS 646 or CS 696 or ECE 638 or approval of the instructor. This course covers advanced techniques that can be used for offensive or defensive goals in network, computer systems and applications. The course follows a ?learning by doing? teaching approach through extensive use of virtual machines with vulnerable operating systems and applications. Topics covered include system memory organizations, CPU registers, assembly language fundamentals, GNU and Immunity debuggers, fuzzing based security testing development of local and remote Linux and Windows exploits, shellcode development, stealthy attacks, bypassing memory protection techniques, network and wireless hacking techniques, and ethical and legal implications of cyber-attacks.
CS 648. Cyber Sec Investigations & Law. 3 credits, 3 contact hours.
Prerequisites: CS 656 or IT 640 or permission of the instructor. This course will prepare students for a real-life experience for operating and protecting computer networks, data communication, and data storage systems. The course will provide the student with a methodology to examine and investigate intrusions and security of data storage, data management, and data transmission systems as a part of an integrated network. It will explore the various interfaces of these systems from a technical, human, and investigative perspective, and the potential legal issues. The course will provide the student with various fundamental legal knowledge necessary for a cyber practitioner: (a) basic intellectual property law including trade secrets and patents; (b) foreign viewpoints of intellectual property and compliance to include EU privacy law; (c) U.S. law of electronic surveillance, electronic search, and stored communications; (d) government and workplace consensual search and surveillance and consent banners/agreements.
CS 650. Computer Architecture. 3 credits, 3 contact hours.
Prerequisites: No formal prerequisites – The course assumes knowledge of topics of CS 350 or equivalent courses. The course offers a foundation for students in computing. The main topics are exploiting parallelism, memory hierarchy, storage systems, multicore systems, vector machines, GPUs, and multiprocessors. Exploiting parallelism includes instruction, data, and thread-level parallelism as well as pipelining, out-of-order, and speculative execution. Cybersecurity issues arising out of speculative execution will be discussed. Topics of memory hierarchy consist of main memory, three levels of caches, and virtual memory. Storage systems include hard disks, solid state disks, and non-volatile memory. Multicore processors that employ performance and efficiency cores will be discussed to highlight distinctive performance and power requirements for various devices including cell phones, tablets, laptops, desktops, and servers. Discussion on high performance machines such as shared-memory and distributed-memory multiprocessors and their respective programming environments OpenMP and MPI concludes the course.
CS 651. Data Communications. 3 credits, 3 contact hours.
Prerequisite: No formal prerequisites – The course assumes knowledge of topics of MATH 333 or equivalent courses. Intensive study of the analytic tools required for the analysis and design of data communication systems. Topics include: birth-death queuing systems, Erlang's distribution, bulk-arrival and bulk-service systems, design and analysis of concentrators and multiplexers, elements of Renewal Theory, M/G/1 system, analysis of Time Division Multiplexing, priority queues, analysis of random access systems, time reversibility, open and closed queuing networks, mean value analysis, flow and congestion, control mechanisms, routing algorithms, flow models, and network topological design.
CS 652. Cognitive Cloud Networking - Architectures and Applications. 3 credits, 3 contact hours.
Prerequisite: CS 656. If anything can characterize today's networking environment is its newly found significance in delivering cloud applications at scale. Everything has become a cloud - even the formerly-rigid wireless proprietary nodes, known as base stations, are broken up to independently developed network micro-services running on cloud-native runtimes supported by commodity compute and storage. Networking has become a software business and complete network disaggregation is the end game. In this new world, network operators are increasingly becoming content providers and they abandon R&D-heavy network disaggregation initiatives run by the Linux Foundation and increasingly trust public cloud providers to run their networks and take full advantage of the public cloud completely abstracted set of APIs to build applications faster than they could ever do before.
Drawing from these trends, the course aims on one hand to provide a foundation of the so called multi-cloud network environment and on the other, to provide the student with the tools and knowledge required to understand how these multi-cloud networks are operated / managed via a set of data-driven distributed applications, the Cognitive Network Apps, that bring Machine Learning / AI and big network data analytics together. We treat the most important networking architectures and technologies that empower today’s cloud provider networks at the core / edge such as CDN and 5G and learn how self-healing, self-optimization and self-configuration applications provide the reliability, resiliency and performance metrics needed by cloud applications such as Netflix, Zoom and many others.
CS 656. Internet and Higher-Layer Protocols. 3 credits, 3 contact hours.
The course introduces the protocols and standards of the TCP/IP suite that govern the functioning of the Internet. The material covered in class is a top-down approach on introduction, discussion, and analysis of protocols from the data-link layer to the application layer. Alternative protocols to the TCP/IP suite and new protocols adopted by this suite are discussed. Numerical examples related to network planning and proocol functioning are analyzed.
CS 657. Principles of Interactive Computer Graphics. 3 credits, 3 contact hours.
Prerequisites: No formal prerequisites – The course assumes familiarity with the organization of a computer system and knowledge of topics of CS 505 or equivalent courses. Graduate-level introduction to computer graphics concepts, algorithms, and systems. Includes 2-D raster graphics, algorithms, 2-D and 3-D geometric transformations, 3-D viewing, curves and surfaces. Emphasis on PC-based graphics programming projects. Principles of interactive graphics systems in terms of the hardware, software and mathematics required for interactive image production.
CS 659. Image Processing and Analysis. 3 credits, 3 contact hours.
Prerequisite: No formal prerequisites – The course assumes knowledge of topics of CS 505 or equivalent courses. Fundamentals of image processing, analysis and understanding. Topics include image representation, image data compression, image enhancement and restoration, feature extraction and shape analysis, region analysis, image sequence analysis and computer vision.
CS 661. Systems Simulation. 3 credits, 3 contact hours.
Prerequisites: an undergraduate or graduate course in probability theory and statistics, and working knowledge of at least one higher-level language. An introduction to the simulation of systems, with emphasis on underlying probabilistic and statistical methodologies for discrete-event simulations. Design of simulation applications, and simulation programming in a high-level language. Algorithms for the generation of pseudorandom numbers. Algorithmic methodologies for the simulation of discrete and continuous probabilistic processes. Use of statistical tools. Simulation of queuing systems. Applications of simulation to a variety of system studies. The special purpose simulation language GPSS is studied in detail.
CS 665. Algorithms on Graphs. 3 credits, 3 contact hours.
Prerequisites: CS 610, or CS 435, or doctoral student status, or instructor permission. Graphs are a ubiquitous type of data structure, with multiple scientific and industrial applications. This course covers various old and new graph algorithms with a focus on efficiency and practicality. Topics include: shortest paths, random walks and diffusion, unsupervised and supervised node clustering, hierarchical graph clustering, graph partitioning based on graph matrices, discovering and counting graph substructures, and sampling methods for graph sparsification.
CS 667. Design Techniques for Algorithms. 3 credits, 3 contact hours.
Prerequisite: CS 610. An introduction to the principles of major design techniques in algorithms. Examples from a variety of topics and problems in computer science are used to demonstrate these design techniques and their appropriate application.
CS 668. Parallel Algorithms. 3 credits, 3 contact hours.
Prerequisites: CS 610 and CS 650. This course examines a variety of parallel algorithms and architectures. Shared memory algorithms and algorithms for special architectures (tree processors, grids, systolic arrays, butterflies) are considered. The basic theory of algorithm/architecture performance will be described.
CS 670. Artificial Intelligence. 3 credits, 3 contact hours.
Fundamental concepts and general techniques in artificial intelligence. Main topics include goal tree search, logic and deduction, adduction, uncertainty, fuzzy logic, knowledge representations, machine learning, vision, and action planning. The LISP programming language is used extensively. Students are required to do programming assignments, complete a programming term project, and review case studies.
CS 673. Software Design and Production Methodology. 3 credits, 3 contact hours.
Modern techniques and methods employed in the development of large software systems, including a study of each of the major activities occurring during the lifetime of a software system, from conception to obsolescence and replacement. Topics include cost/performance evaluation, documentation requirements, system design and production techniques, system verification techniques, automated aids to system development, and project organization and management.
CS 675. Machine Learning. 3 credits, 3 contact hours.
Pre-requisites: Basic probability, linear algebra, computer programming, and graduate or undergraduate senior standing, OR approval of instructor. This course is an introduction to machine learning and contains both theory and applications. Students will get exposure to a broad range of machine learning methods and hands on practice on real data. Topics include Bayesian classification, perceptron, neural networks, logistic regression, support vector machines, decision trees, random forests, boosting, dimensionality reduction, unsupervised learning, regression, and learning new feature spaces. There will be several programming assignments, one course project, one mid-term and one final exam.
CS 676. Cognitive Computing. 3 credits, 3 contact hours.
Corequisites: CS 631. Prerequisite: Good knowledge of programming (C/C++/Java), or permission of instructor. This course provides an application oriented overview of Cognitive Computing, aimed at students specializing in data sciences. Cognitive algorithms (e.g. IBM, Stanford) that combine machine learning, data mining, AI and natural language will be used to build systems for finance, telecom and retail. Real world problems and data sets such as financial risk measurement or telecom churn will be introduced, and students will study and build Cognitive models on the IBM and open-source platforms. An important feature of this course is the usage of Harvard HBS case studies to illustrate current business challenges. This course will illustrate the development, deployment, and execution of a wide spectrum of Cognitive solutions.
CS 677. Deep Learning. 3 credits, 3 contact hours.
Prerequisites: CS 675 or approval of the instructor. This course covers current topics in data science. The topics include but are not limited to parallel programming on GPU and CPU multi-cores, deep learning, representation learning, optimization algorithms, and algorithms for big datasets. Students will present recent papers in data science, work on programming assignments, and do a machine learning/deep learning/data science project.
CS 678. Topics in Smartphone Sec & Rel. 3 credits, 3 contact hours.
This course covers current topics in the security and reliability of smartphones, and smartphone platform-based devices. The topics include but are not limited to understanding the software and hardware platforms; static and dynamic analyses for devices and apps; effective testing of devices and apps; formulating and launching attacks against these devices or apps, and understanding the security, privacy, and reliability risks that users expose themselves to when using such devices. The professor and students will present recent papers; discuss and critique papers, draw outlines for potential research explorations in this area; the students will complete a programming assignment designed to familiarize themselves with programming for the platform; the students will spend the rest of the individual work assignment on a project: running a research tool, designed to expose security and reliability issues, on popular platforms/apps/devices and reporting the findings.
CS 680. Linux Kernel Programming. 3 credits, 3 contact hours.
An in-depth study of how the Linux operating system is built from scratch. AS a hands-on course, students will perform intensive programming using Linux Kernel. The contents include machine booting, segmentation and paging memory management, creating and destroying processes, process switching and scheduling, handling exceptions and hardware interrupts, software interrupts, creating system calls, creating file systems, networking with TCP/IP, device driver writing and module programming, etc. At the end of the course, students will be able to modify Linux operating system to create their own.
CS 681. Computer Vision. 3 credits, 3 contact hours.
This course introduces computational models of computer vision and their implementation on computers, and focuses on material that is fundamental and has a broad scope of application. Topics include comtemporary developments in all mainstream areas of computer vision e.g., Image Formation, Feature Detection/Representation, Classification and Recognition, Motion Analysis, Camera Calibration, 3D/Stero Vision, Shape From X (motion, shading, texture, etc.), and typical applications such as Biometrics.
CS 683. Software Project Management. 3 credits, 3 contact hours.
This course gives the student the necessary background to allow her/him to manage software projects; this includes economic, managerial and organizational aspects. The essence of software engineering is not only to introduce a valuable software product, but to do so economically and competitively. Like any engineering discipline, software engineering depends critically on managerial, economic and organizational considerations. Students will learn software management technique, various software costing techniques including COCOMO and ROI, team organization and management, and various methods of software development including Cleanroom and Agile.
CS 684. Software Testing and Quality Assurance. 3 credits, 3 contact hours.
This course discusses software faults and techniques to reduce faults and improve software quality. Software systems are some of the most complex human artifacts ever built and also some of the most critical means to ensure our safety, well being, and prosperity. This course teaches techniques to ensure software systems perform their function correctly. Topics include software specifications, goals of testing, techniques of test data selection, test oracle design, test data analysis, test lifecycle and quality impacts of testing.
CS 685. Software Architecture. 3 credits, 3 contact hours.
The software architecture defines the structure and interactions of software modules. This course provides a working knowledge of the terms, principles and methods of software architecture and module design. It explains the constraints on the design and the properties of capacity, response time, and consistency. The "4+1" architecture model is taught with architectural styles, interface isolation, decoupling, reuse, agile design with software patterns, data structures, queuing effects, design simplification and refactoring. The non-functional requirements of reliability, performance and power consumption, component based design and good industry practices for documenting and managing the architectural process are taught.
CS 690. Software Studio. 3 credits, 3 contact hours.
Prerequisite: CS 673 or approval of the instructor. This course is the first of a two-course sequence (CS 690, CS 700B) that focuses on a team-based industrial scale software project. This two-course sequence is part of the required courses of the Master of Science in Software Engineering (MSSE). This course covers the early phases of the software lifecycle, including requirements analysis, requirements specifications, project planning, software architecture and product level design, along with associated documentation. This sequence is typically taken in the last year of the MSSE, and is intended as an opportunity for MSSE students to apply the material they have learned throughout the program.
CS 696. Network Management and Security. 3 credits, 3 contact hours.
Prerequisites: CS 652 or CS 656 or ECE 637 or ECE 683
Thorough introduction to current network management technology and techniques, and emerging network management standards. In-depth study of the existing network security technology and the various practical techniques that have been implemented for protecting data from disclosure, for guaranteeing authenticity of messages, and for protecting systems from network-based attacks. SNMP family of standards including SNMP, SNMPv2, and RMON (Remote Monitoring), OSI systems management. Various types of security attacks (such as intruders, viruses, and worms). Conventional Encryption and Public Key Cryptology. Various security services and standards (such as Kerberos, Digital Signature Standard, Pretty Good Privacy, SNMPv2 security facility). Same as ECE 638.
CS 698. Special Emerging Topics:. 3 credits, 3 contact hours.
Prerequisites: Determined by the nature of the topic area. The course covers special emerging topics that are not offered as regular courses.
CS 700B. Master's Project. 3 credits, 3 contact hours.
Prerequisites: Approval of the project advisor is required for registration. Pre or Corequisites: INTD 799. Restrictions: Restricted to Master's students only. Experimental and/or theoretical investigation of a relevant topic in computer science. A written report must be submitted to the project advisor. The student cannot register in CS 700B more than once and the incomplete (I) grade is not allowed.
CS 701B. Master's Thesis. 3 credits, 3 contact hours.
Prerequisites: CS 700B and approval of the thesis advisor who must be the same as the student's advisor in CS 700B. Pre or Corequisites: INTD 799. Experimental and/or theoretical investigation of a relevant topic in computer science that can lead to a refereed publication. The MS thesis topic should be continuation of the student's work in CS 700B. A written thesis must be orally defended and approved by a committee of at least three faculty members.
CS 703. Computational Optimization. 3 credits, 3 contact hours.
Prerequisites: CS 610 and MATH 333, or consent of instructor. This course introduces basic elements of the theory of optimization, with a focus on continuous optimization. Topics include deterministic and stochastic methods and average-case and asymptotic error bounds. Applications to image processing and machine learning will be surveyed.
CS 704. Sequencing and Scheduling. 3 credits, 3 contact hours.
This course introduces basic elements of sequencing and scheduling. It covers various scheduling models including single machine scheduling, parallel machine scheduling, flow job scheduling, job shop scheduling, and energy aware scheduling. The course covers algorithms for tractable scheduling problems as well as hardness proofs of intractable scheduling problems and approximation algorithms for some of these intractable problems.
CS 708. Advanced Data Security and Privacy. 3 credits, 3 contact hours.
Prerequisites: CS 608, CS 645, CS 696, or instructor approval. In-depth study of the security and privacy issues associated with the massive amount of data that is collected, stored, shared and distributed in today's society. New paradigms are needed to address the security/privacy challenges when data is outsourced at untrusted servers (such as in cloud computing), when data is anonymized in order to be shared among untrusted parties, or when copyrighted data needs to be protected from unauthorized use.
CS 725. Independent Study in Computer Science I. 3 credits, 3 contact hours.
Restrictions: Restricted to doctoral students only. Approval of the academic advisor is required for registration. Students working on their PhD dissertation cannot register for both CS 725 and CS 726 with the same faculty. This special course covers areas of study in which one or more students may be interested but there is not sufficiently broad interest to warrant a regular course offering. Students may not register for this course more than once.
CS 726. Independent Study in Computer Science II. 3 credits, 3 contact hours.
Restrictions: Restricted to doctoral students only. Approval of the academic advisor is required for registration. Students working on their PhD dissertation cannot register for both CS 725 and CS 726 with the same faculty. This special course covers areas of study in which one or more students may be interested but there is not sufficiently broad interest to warrant a regular course offering. Students may not register for this course more than once.
CS 731. Applications of Database Systems. 3 credits, 3 contact hours.
Prerequisite: CS 631. Restricted to students who are specializing in computer and information systems management. Comparative study of different models of database management systems and their applications. Emphasis on the functions of the database administrator. Includes a survey of physical and logical organization of data, methods of accessing data, characteristics of different models of generalized database management systems, and case studies using these systems from various applications. Student teams design database systems for class projects.
CS 732. Advanced Machine Learning. 3 credits, 3 contact hours.
Prerequisites: CS 634 or CS 670. This course presents advanced topics in the machine learning field, with a focus on recent learning techniques developed for analysis of high dimensional data such as a model selection by regularization and ensemble learning. The course also covers the theory of supervised, semi-supervised, unsupervised, transduction and reinforcement learning, as well as applications of these learning methods.
CS 735. High Performance Data Analytics. 3 credits, 3 contact hours.
Prerequisites: Knowledge of materials from at least four courses in the following list: (CS 644 or DS 644), (CS 675 or DS 675), CS 631, CS 634 , CS 643. Targeting the latest computing infrastructures and software systems for data analytics, this course introduces students to the design and analysis of scalable data science algorithms, as well as skills to implement high performance data science applications. Specific topics include in-memory data processing, column-oriented data storage and retrieval, cloud-based data intensive systems, as well as classic data analytics algorithms such as causal discovery and network inference and their scalable implementation.
CS 744. Data Mining and Management in Bioinformatics. 3 credits, 3 contact hours.
Prerequisites: CS 610 or permission of the instructor. Concepts and principles of bioinformatic data mining and management with focus on efficiency and scalability. Methods for indexing and querying biological databases, biological data mining, and algorithmic development for bimolecular and phlyogenetic data analysis. Trends and advances in areas such as functional genomics and proteomics, genetic engineering, and large-scale gene expression data analysis.
CS 750. High Performance Computing. 3 credits, 3 contact hours.
Prerequisite: CS 650. An in-depth study of the state of the art in high performance computing. Topics parallel computer architectures, programming paradigms, and their applications. Parallel architectures include PC clusters, shared-memory multiprocessors, distributed-memory multiprocessors, and multithreaded architectures. Parallel programming paradigms include message passing interface (MPI), its second-generation MPI-2, and multithreaded programming. Applications include computational science and high performance Web and database servers for Internet-based electronic commerce. Students program a parallel machine in class projects. First-hand experience in stable, scalable, high performance computing for Internet-based electronic commerce.
CS 755. Security and Privacy in Wireless Networks. 3 credits, 3 contact hours.
This course covers selected topics on security and privacy in wireless networks and is intended for graduate students who are interested in network security. This course can help the students learn the state of the art and open challenges in wireless network security and privacy, thus enhancing their potential to perform research or pursue a career in this emerging area.
CS 756. Mobile Computing and Sensor Networks. 3 credits, 3 contact hours.
This course provides an in-depth study of mobile computing and sensor networks, which are becoming major components of the transition from today's world of desktop computers to a world where computing is ubiquitous. The main topics include: techniques to handle mobility in the Internet and ad hoc networks; operating systems, programming languages, and protocols for sensor networks; applications, middleware, programming models, and security ubiquitous computing environments.
CS 759. Advanced Image Processing and Analysis. 3 credits, 3 contact hours.
Prerequisite: CS 659. Advanced study of recent research in image processing, analysis, and understanding. Topics include all image processing techniques, high-level recognition approaches, and automated expert vision systems.
CS 775. Seminar in Software Engineering. 3 credits, 3 contact hours.
Prerequisite: CS 673. A seminar in which students pursue intensive study of specialized topics in the current literature of software engineering. Each topic is supported by an initial reading list on current problems in theory and practice. The results of the studies are discussed in class with students, faculty and invited specialists.
CS 777. Seminar in Software Management and Production. 3 credits, 3 contact hours.
Prerequisites: Ph.D. core courses. A seminar in which students pursue intensive study of specialized topics in the current literature of software management and production. Each topic is supported by an initial reading list covering current problems in theory and practice. The results of the studies are discussed in class with students, faculty, and invited specialists participating. Topics include, but are not limited to, theory of algorithm structure, analysis of algorithms and programs, hardware technology assessment, automated tools for software production, software measurements and quality, peripheral device interfaces, data communications, computer networks, distributed processing, software verification, implementation standards, documentation standards, system security, software copyright, and project control and organization.
CS 782. Pattern Recognition and Applications. 3 credits, 3 contact hours.
Prerequisite: CS 610. Study of recent advances in development of (statistical and syntactic) pattern algorithm, approximation, and estimation techniques. Topics include statistical estimation theory, classifier design, parameter estimation and unsupervised learning, bias vs. variance, nonparametric techniques, linear discriminant functions, tree classifiers, feature extraction, and clustering. Additional topics include Support Vector machines (SVM), Bayesian Learning, Hidden Markov Models (HMM), evolutionary computation, neural networks, with applications to signal interpretation, time-series prediction, and Biometrics.
CS 785. Seminar in Computer Science I. 3 credits, 3 contact hours.
This seminar course examines in-depth recent research literature in an area of computer science. The selected topic and course prerequisites are announced before the beginning of the semester.
CS 786. Seminar in Computer Science II. 3 credits, 3 contact hours.
This seminar course examines in-depth recent research literature in an area of computer science. The selected topic and course prerequisites are announced before the beginning of the semester.
CS 790A. Doct Dissertation & Res. 1 credit, 1 contact hour.
Co-requisite: CS 791. Approval of the dissertation advisor is required for registration. Experimental and/or theoretical investigation of a relevant topic in computer science. For PhD students who have successfully defended their dissertation proposal. The student must register in CS 790A every semester until successful dissertation defense. A written dissertation must be defended and approved by a committee of at least five members. Students enrolled in the PhD program before 2015 Fall must accumulate a minimum number of credits in Doctoral Dissertation Research and Pre-Doctoral Research (see graduate catalog for program-specific details; the same requirement may apply to joint PhD programs with other universities).
CS 791. Graduate Seminar. 0 credits, 0 contact hours.
A seminar in which faculty, students, and invited speakers will present summaries of advanced topics in computer science. In the course, students and faculty will discuss research procedures, dissertation organization, and content. Students engaged in research will present their own problems and research progress for discussion and criticism.
CS 792. Pre-Doctoral Research. 3 credits, 3 contact hours.
Co-requisite: CS 791. Approval of the dissertation advisor is required for registration. Preliminary experimental and/or theoretical investigation of a relevant topic in computer science. For students who have passed the qualifying examination but have not defended the dissertation proposal. Permission is needed of the academic advisor as well for students who have completed the required coursework but have not passed the qualifying examination.