Chair: Cristian M. Borcea
Associate Chair: Vincent Oria
The Department of Computer Science is distinguished by prominent researchers who are actively investigating new applications in parallel processing and advanced computer architecture, systems integration, real-time computing, neuroscience and robotics, medical imaging, combinatorial computing, bioinformatics, computer vision and image processing, and software engineering.
The department provides an environment that gives students the background and skills necessary for entry into today's workplace. This is achieved through team research in state-of-the-art facilities; a faculty that works steadily in the forefront of many research areas; interaction with industry and experts; and an administration focused on research and student services. As a result, the department attracts the largest student population for computer and information science in the greater New York/New Jersey area.
The computer science department maintains and offers computing facilities for its students, faculty, and staff. The computing facilities include research laboratories housing research in areas of computer science such as: networking, real-time systems, hypermedia, parallel processing, and collaborative systems. Users have access to the state-of-the-art software and hardware including Oracle database, UNIX-based workstations and Microsoft Windows PCs supported by several file and compute servers. Internet access, departmental intranets, and conferencing systems provide an integrated infrastructure for supporting teaching and research.
Master of Science in Computer Science
The Master of Science (MS) in Computer Science (CS) is intended for students who are interested in pursuing advanced studies in computer science.
- 3.0 out of 4.0 required for students with a computer science background.
- 3.0 out of 4.0 required for students without a computer science background who may be required to enroll in bridge courses.
- International students TOEFL score: the Institute requires a minimum score of 213 paper based or 79 online.
- International students: GRE required.
- Students with a US or Canadian degree in computer science or engineering: GRE recommended but not required.
- Students with a US or Canadian degree not in computer science or engineering: GRE required.
Students who lack a comprehensive computer science background may be required to take appropriate bridge courses and attain a minimum cumulative GPA of 3.0 in the bridge courses.
Students are expected to have good programming skills, and a grasp of the fundamentals of computer science (students should have acquired this knowledge in the undergraduate degree Bachelor of Science in Computer Science or equivalent degree). To ensure that students have the background to do well and succeed in doing the MS in Computer Science at NJIT, they will be required to take a short answer exam to demonstrate that they have good programming skills (in C++ or Java) and that they know the basic concepts of operating systems, networking, and databases. Students who do not do well in the exam are offered the opportunity to improve their skills via bridge courses.
Note that credits earned in the bridge program cannot count towards the MS program. However, grades of 500-level bridge courses contribute towards the graduate GPA. Students must maintain a cumulative graduate GPA of 3.0 or better.
If a student satisfies a bridge requirement before matriculation, the student can request a bridge course waiver which must be filed no later than the end of the first semester of studies and accompanied by all relevant documentation as required by University regulations. See Academic Policies and Procedures in the NJIT Graduate Catalog at http://catalog.njit.edu/graduate/academic-policies-procedures/.
PASS/FAIL courses, professional development courses, work experience, or a course with a grade less than B (or equivalent) cannot be used to satisfy a bridge course requirement. Grades in the bridge program (500-level courses or higher) contribute to the cumulative graduate GPA. However, these courses do not count toward the MS program credit requirements. The undergraduate catalog, http://catalog.njit.edu/undergraduate/computing-sciences/computer-science/#coursestext, contains descriptions of undergraduate courses included in the bridge program.
The Computer Science Department reviews only completed applications submitted to the Office of Graduate Admissions. Applicants are advised to request status information on their application directly from the Graduate Admissions Office, not the Computer Science Department. Graduate Admissions can be reached at email@example.com or www.njit.edu/gadmission or by mail at NJIT, Graduate Admissions Office, University Heights, Newark NJ 07102.
Students who intend to pursue an MS degree in Computer Science are expected to have a certain background in Computer Science and Mathematics. A student who does not have this background may need to enroll bridge courses before taking graduate level Computer Science courses. This will help ensure success in the MS program. These students will be notified in their acceptance letter that bridge courses are a condition of their acceptance into the Master's Program. If a student's acceptance letter indicates bridge courses are required, they must contact the Graduate Advisor. If the acceptance letter does not indicate bridge courses, none are required and the student may immediately begin taking graduate courses. A student must maintain a cumulative GPA of 3.0 in bridge courses. Bridge courses do not count towards MS degree requirements; however, they count toward the cumulative graduate GPA.
- BS or BA Degree is Computing, Biology, or related discipline. TOEFL and GRE required for international students..
- Computer courses in programming & data structures equivalent to CS 113 Introduction to Computer Science & CS 114 Introduction to Computer Science II.
- One or more courses in genetics or molecular biology, equivalent to R120 352 Genetics or R120 356 Molecular Biology.
- Mathematics courses in calculus equivalent to MATH 111 Calculus I & MATH 112 Calculus II.
If the prerequisites are not fulfilled, completion of specific bridge courses will be required as a condition of admission.
Computing and Business
Technology and Science are dramatically changing our economy and our society. This is creating new business opportunities and needs, with an increasing push for computing employees to be more involved in business aspects of a company. Computing employees must have a solid understanding of business fundamentals to succeed. Specifically designed to address theses issues, the Master of Science (MS) in Computing and Business degree is primarily for people who want to develop, use, and manage software applications and systems in a business environment.
Offered by the College of Computing Sciences, the MS in Computing and Business contains a mix of courses in computer science and business. With one of the most computing intensive campuses in the world, NJIT has pioneered in the applications of new technologies as learning tools. The College of Computing Sciences educates one of the largest groups of information technology students in the nation.
Cyber Security and Privacy
To be eligible for admission, a student must have completed an undergraduate degree, preferably in Computer Science, Computer Engineering, Information Systems, Information Technology, or a related field, with a minimum GPA of 3.0 on a 4.0 scale. Students not satisfying these criteria will be considered for conditional admission on a case-by-case basis. This includes students whose bachelor's degree is in a non-computing field but have professional experience in computing or systems administration. Any such student who is admitted will be required to complete the following bridge courses with a GPA of 3.0 or higher: CS 505 Programming, Data Structures, and Algorithms, CS 506 Foundations of Computer Science. The bridge courses will not be counted toward the MS degree.
The Computer Science Department reviews only completed applications submitted to the Office of Graduate Admissions. Applicants are advised to request status information on their application directly from the Graduate Admissions Office, not the Computer Science Department. Graduate Admissions can be reached at firstname.lastname@example.org or www.njit.edu/gadmission or by mail at NJIT, Graduate Admissions Office, University Heights, Newark NJ 07102.
Software engineering is the disciplined application of computer science knowledge to the analysis, design, development, evaluation and evolution of software products. Because software pervades economic and personal activity worldwide and because it is increasingly being used in critical applications, the software industry is under intense pressure to deliver quality software. Because software production remains a labor intensive activity, the demand for large volumes of high quality software translates into high demand for qualified software engineers. MS in Software Engineering consists of a judicious balance of theoretical computer science foundations that afford graduates the means to remain abreast of developments in software engineering in the long term and practical applications that afford graduates the means to be operational in the short term.
Applicants are expected to have completed an undergraduate degree in computer science, information systems, information technology, or another computing related field. Students lacking the appropriate background will be considered for conditional admission on a case-by-case basis and may be required to take bridge courses (bridge courses do not count for credit towards the degree).
Baltrush, Michael A., Associate Professor
Blank, George, University Lecturer
Borcea, Cristian M., Professor
Calvin, James M., Professor
Cohen, Barry, Associate Dean, College of Computing Sciences
Curtmola, Reza, Associate Professor
Ding, Xiaoning, Assistant Professor
Eljabiri, Osama, Senior University Lecturer
Gehani, Narain, Professor
Geller, James, Professor
Gerbessiotis, Alexandros, Associate Professor
Hung, Daochuan, Associate Professor
Kapleau, Jonathan, J., University Lecturer
Karvelas, Dionissios, Senior University Lecturer
Kwestel, Morty D., Senior University Lecturer
Leung, Joseph Y., Distinguished Professor
Liu, Chengjun, Professor
McHugh, James, Professor
Mili, Ali, Professor
Nakayama, Marvin K., Professor
Nassimi, David, Associate Professor
Neamtiu, Iulian, Associate Professor
Nicholson, Theodore L., Senior University Lecturer
Oria, Vincent, Professor
Perl, Yehoshua, Professor
Rohloff, Kurt, Associate Professor
Roshan, Usman W., Associate Professor
Rusinkiewicz, Marek E., Professor
Rutkowski, Wallace, Senior University Lecturer
Ryan, Gerard W., Senior University Lecturer
Shih, Frank Y., Professor
Sohn, Andrew, Associate Professor
Spirollari, Junilda, Senior University Lecturer
Theodoratos, Dimitrios, Associate Professor
Vaks, Leon, University Lecturer
Wang, Guiling (Grace), Professor
Wang, Jason, T., Professor
Wei, Zhi, Associate Professor
Wu, Chase Q., Associate Professor
Computer Science Courses
CS 505. Programming, Data Structures, and Algorithms. 3 credits, 4 contact hours.
Prerequisite: knowledge of at least one procedure-oriented language such as PASCAL or C. Computer science students cannot use this course for graduate degree credit. Intensive introduction to computer science principles: a procedure-oriented language such as C++; 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.
Prerequisite: knowledge of C/PASCAL. Corequisite: CS 505. Cannot be used for graduate credit towards the M.S. in Computer Science. 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 590. Graduate Co-op Work Experience I. 3 credits, 3 contact hours.
Restriction: students must have the approval of the co-op advisor for the CIS department. Provides on-the-job reinforcement and application of concepts presented in the undergraduate computer science curriculum. Work assignments are identified by the co-op office and developed and approved by the CIS department in conjunction with the student and employer. Students must submit, for CIS department approval, a proposal detailing the nature of the intended work. A report at the conclusion of each semester's work experience is required. Credits for this course may not be applied toward degree requirements for either the bachelor's or master's in computer science.
CS 591. Graduate Co-op Work Experience II. 3 credits, 3 contact hours.
Restriction: students must have the approval of the co-op advisor for the CIS department. Provides on-the-job reinforcement and application of concepts presented in the undergraduate computer science curriculum. Work assignments are identified by the co-op office and developed and approved by the CIS department in conjunction with the student and employer. Students must submit, for CIS department approval, a proposal detailing the nature of the intended work. A report at the conclusion of the semester work experience is required. Credits for this course may not be applied toward degree requirements for either the bachelor's or master's in computer science.
CS 592. Graduate Co-op Work Experience III. 3 credits, 3 contact hours.
Restriction: graduate standing, and acceptance by the CIS department and the Division of Career Development Services. Students must have the approval of the co-op advisor for the CIS department. Provides on-the-job reinforcement and application of concepts presented in the undergraduate or graduate computer science curriculum. Work assignments are identified by the co-op office and developed and approved by the CIS department in conjunction with the student and employer. Students must submit, for CIS department approval, a proposal detailing the nature of the intended work. A report at the conclusion of the semester work experience is required. Credits for this course may not be applied toward degree requirements for either the bachelor's or master's in computer science.
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.
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.
Prerequisite: CS 114 or 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 Computability and Complexity. 3 credits, 3 contact hours.
Prerequisite: CS 610. Introduces the theoretical fundamentals of computing, and provides an understanding of both the inherent capabilities and limitations of computation. The main models of computation are deterministic and non-deterministic Turing machines. Auxiliary models include partial and total recursive functions, first order logic, recursive and recursively enumerable sets, and symbol systems. Covers the essentials of computational theory: first order logic, Russel's Paradox, completeness and consistency, Goedel's Theorem, Church's Thesis, countable and uncountable sets, simulation and computation, diagonalization, dove-tailing, decidable and undecidable problems, reduction, recursion theory, Rice's Theorem, Recursion Theorem, execution time measures, P and NP, polynomial-time reduction, NP-completeness and NP-hardness and formal correctness semantics of programs.
CS 621. Numerical Analysis I. 3 credits, 3 contact hours.
Prerequisite: MATH 511 (see undergraduate catalog for description) or an introductory course in numerical methods. An introduction to computational aspects of scientific and engineering problems. Time-dependent phenomena and corresponding quantitative models. Numerical stability and conditioning. Approximation of functions. Interpolation, integration. Solution of nonlinear equations. Ordinary differential equations of the first order. Finite and iterative algorithms for solution of systems of linear equations. Emphasis on computer implementation of algorithms and application to variety of engineering problems.
CS 630. Operating System Design. 3 credits, 3 contact hours.
Prerequisites: CS 332, CS 432 (see undergraduate catalog for descriptions) and CS 505. 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.
Prerequisite: 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: CS 505 and CS 510. 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. Compiling System Design. 3 credits, 3 contact hours.
Prerequisites: Entry-level courses in programming, probability and statistics (e.g. MATH333, CS280), or permission of the instructor.
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 640. Recursive Function Theory. 3 credits, 3 contact hours.
Prerequisite: CS 540 or equivalent. Review of basic computability theory. Topics include Church's thesis; unsolvability results; creative, productive, and simple sets; computational complexity; P=NP problem; and classification of solvable problems according to their complexity.
CS 643. Cloud Computing. 3 credits, 3 contact hours.
Prerequisites: CS 633 or CS 656. This course presents a top-down view of cloud computing, from applications and administration to programming and infrastructure. Its main focus is on parallel programming techniques for cloud computing and large scale distributed systems which form the cloud infrastructure. The topics include: overview of cloud computing, cloud systems, parallel processing in the cloud, distributed storage systems, virtualization, secure distributed computing, and multicore programming.
CS 644. Introduction to Big Data. 3 credits, 3 contact hours.
Prerequisites: CS 435 (Advanced Data Structures and Algorithm Design), or 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.
Prerequisite: 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 650. Computer Architecture. 3 credits, 3 contact hours.
Prerequisites: CS 251 (see undergraduate catalog for description) and CS 510. Exploiting instruction level parallelism (ILP) is central to designing modern computers. Presents design techniques used for such computers as IBM Power architectures, DEC Alpha, MIPS R4600, Intel P6, etc. Introduction of Instruction SET Architecture (ISA), various functional units, basic principles of pipelined computers. Modern techniques to ILP including superscalar, super-pipelining, software pipelining, loop unrolling, and VLIW. Memory hierarchy, including instruction cache, data cache, second level cache, and memory interleaving. Advanced computer architectures, including vector, array processors, interconnection technology, and ATM network of workstations. Hands-on experience designing a simple pipelined computer on screen and using CAD tools such as Cadence or ViewLogic.
CS 651. Data Communications. 3 credits, 3 contact hours.
Prerequisite: MATH 333 (see undergraduate catalog for description). 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. Computer Networks-Architectures, Protocols and Standards. 3 credits, 3 contact hours.
Prerequisite: A high level programming language, MATH 333 (see undergraduate catalog for description), or instructor approved equivalents. Intensive study of various network architecture and protocol standards; with emphasis on the Open Systems Interconnetion (OSI) model. Topics include: analog and digital transmission, circuit and packet switching, the Integrated Services Digital Network (ISDN), Frame Relay, Broadband ISDN, Cell Relay, SONET, Local Area Networks (CSMA/CD, Token Bus, Token Ring, switched and isochronous Ethernets), Metropolitan Area Networks (FDDI, FDDI-II, DQDB), wireless and satellite networks, synchronization and error control, routing and congestion control, X.25 standard.
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: CS 505 or familiarity with the organization of at least one computer system, and knowledge of a structured programming language such as C. 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: CS 505. 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 660. Digital Watermarking. 3 credits, 3 contact hours.
Digital watermarking and steganography is important to ensure data security because of widely used digital multimedia and rapid growth of the Internet. Digital watermarking is a suitable tool to identify the source, creator, owner, distributor, or authorized consumer of a document or an image. Digital steganography aims at hiding digital information into covert channels, so one can conceal the information and prevent detection. This course intends to provide students an overview on different aspects of mechanisms and techniques for digital watermarking and steganography.
CS 661. Systems Simulation. 3 credits, 3 contact hours.
Prerequisite: 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. Algorithmic Graph Theory. 3 credits, 3 contact hours.
Prerequisite: CS 610. The elements of the theory of graphs and directed graphs with motivating examples from communication networks, data structures, etc; shortest paths, depth first search, matching algorithms, parallel algorithms, minimum spanning trees, basic complexity theory, planarity, and other topics. Programming assignments are included.
CS 666. Simulation for Finance. 3 credits, 3 contact hours.
Covers the use of Monte Carlo stochastic simulation for finance applications. Topics include generation of various random variables and stochastic processes (e.g., point processes, Brownian motion, diffusions), simulation methods for estimating quantities of interest (e.g., option prices, probabilities, expected values, quantiles), input modeling, and variance-reduction techniques. Students will write computer programs in C++. Students cannot receive credit for both CS 661 and CS/MATH 666.
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.
Prerequisite: CS 610. 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.
Prerequisite: CS 631. 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 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 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. ST:. 3 credits, 3 contact hours.
CS 700. Master'S Project. 0 credits, 0 contact hours.
CS 700B. Master's Project. 3 credits, 3 contact hours.
CS 701. Master's Thesis. 0 credits, 0 contact hours.
CS 701B. Master's Thesis. 3 credits, 3 contact hours.
CS 701C. Master's Thesis. 6 credits, 3 contact hours.
CS 704. Sequencing and Scheduling. 3 credits, 3 contact hours.
Advanced sequencing and scheduling for job shops, flow lines, and other general manufacturing and production systems are discussed in this course. Both deterministic and stochastic scheduling models are covered in detail. Heuristics and worst case analysis for "unsolvable" hard scheduling problems (NP-C problems) are introduced.
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, II. 3 credits, 3 contact hours.
Restriction: graduate standing and department consent.
CS 726. Independent Research II. 3 credits, 3 contact hours.
CS 731. Applications of Database Systems. 3 credits, 3 contact hours.
Prerequisites: 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 Analytics Dat. 3 credits, 3 contact hours.
Prerequisites: Knowledge of material from at least four courses in the following list: CS 631 (Data Management Systems Design), CS 634 (Data Mining), CS 643 (Cloud Computing), CS 644 (Introduction to Big Data), CS 675 (Machine Learning).
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 and Information Science I. 3 credits, 3 contact hours.
Prerequisite: determined by nature of topic area. Advance notice of the topics to be covered is given. These seminars examine in depth a special interest area of computer and information science. It emphasizes recent work in area selected for the offering of the course. This course is for master's students and cannot apply toward master's degree credit.
CS 786. Special Topics. 3 credits, 3 contact hours.
Prerequisite: as determined by nature of topic area. A continuation of CS 785.
CS 790. Doct Dissertation & Res. 0 credits, 0 contact hours.
CS 790A. Doct Dissertation & Res. 1 credit, 1 contact hour.
CS 790B. Doct Dissertation & Res. 3 credits, 3 contact hours.
CS 790C. Doct Dissertation & Res. 6 credits, 3 contact hours.
CS 790D. Doct Dissertation & Res. 9 credits, 3 contact hours.
CS 790E. Doct Dissertation & Res. 12 credits, 3 contact hours.
CS 791. Graduate Seminar. 0 credits, 0 contact hours.
Corequisite (for doctoral students only): CS 790. A seminar in which faculty, students, and invited speakers will present summaries of advanced topics in computer and information systems management. 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.
Restriction: permission from department chairperson. For students admitted to the doctoral program in computer and information science who have passed the field exam or the qualifying examination. Research is carried out under the supervision of a designated faculty member. Students identify a research problem and prepare a plan to solve the problem. A maximum of 6 credits of CS 792 may be applied to the CIS 790 requirement.
CS 792C. Pre-Doctoral Research. 6 credits, 0 contact hours.