Computer Science (CSC)
Reports on recent advances and problems in computer science by guest speakers, faculty, and students; student participation, presentations, general discussion; exercises in scientific writing format and style, with particular emphasis on writing abstracts and manuscripts for publication in referred archival journals; discussion of program requirements; introductory programming project exercises.
History of computing and technology; place of computers in modern society; the computer and individual; survey of computer applications, legal issues; computers in decision making processes; the computer scientist as a professional; futurist¿s view of computing; public perception of computers and computer scientists.
Discussion of object-oriented languages. Object-Oriented techniques using the C++ language, classes, objects, constructors, destructors, friend functions, operator overloading, inheritance, multiple inheritance, and polymorphism. Reusability is emphasized.
An advanced introduction to computer design and architecture. Topics include instruction set architecture, RISC computers, control unit design, pipelining, vector processing, memory system architecture, and classification of computers.
Mathematical foundations for complexity theory, asymptotic notation, recurrence relations. Strategies for development of algorithms like divide and conquer, greedy, dynamic programming, backtracking. Exposure to some typical and important algorithms in computer science. Introduction to the theory of NP-completeness.
Emphasizes the concepts of process communication and synchronization, protection, performance measurement, and evaluation. Problems associated with mutual exclusion and synchronization, concurrent processes, information, process, device, and memory management are examined. Implementation of I/0 and interrupt structure is also considered.
Important programming language concepts including, representation of data and sequence control, data abstraction and encapsulation; procedural and non-procedural paradigms: functional, logic, and object-oriented languages; distributed and parallel programming issues.
Topologies, media selection, medium access control for local area networks (LANs) including high speed and bridged LANs; circuit switched, ISDN wide area networks (WANs) internetworking issues and standards, 150/051, TCP/IP protocols.
An introduction to the problems, concepts, and techniques involved in computer systems which must interface with external devices. These include process control systems, computer systems embedded within aircraft or automobiles, and graphics systems. The course concentrates on operating system software for these systems.
A survey of formal models for computation. Includes Turing Machines, partial recursive functions, recursive and recursively enumerable sets, abstract complexity theory, program schemes, and concrete complexity.
The course will present the state of the art in cloud computing technologies and applications as well as providing hands-on project opportunities and experiment with different technologies. Topics will include: telecommunications needs; architectural models for cloud computing; cloud computing platforms and services; security, privacy, and trust management; resource allocation and quality of service; cloud economics and business models; pricing and risk management; interoperability and internetworking; legal issues; and novel applications.
Topics and problems of information systems that are of practical importance and current interest. New developments in system concepts, techniques, and equipment.
Cryptography and Network Security. This course will focus on graduate-level topics in cryptography and network security, including: Symmetric Key and Public Key encryption algorithms, Digital Signature, Certificates, Cryptanalysis, Key management and distribution, Classical network attacks and their solutions, User authentication protocols, Transport-level security, Wireless network security, g-mail security, Web security, IP security, Distributed system security, Firewalls and Intrusion detection systems.
Digital forensics is a new and emerging field that is becoming increasingly important and visible. The ease with which one can access the internet and commit crimes with and against computers has led to an increase in the need for online protection. As a result, there is a need for computer science graduates with skills needed to investigate these crimes. In this course, topics of computer crimes, system and computer forensics will be introduced. Students will be required to learn the different aspects of computer crime and ways to uncover, protect, and exploit digital evidence. In addition, the lab projects will expose students to different types of tools, both hardware and software, and will enable them to perform fundamental investigations.
Efficient and intelligent search techniques. Knowledge representation e.g., logic, and semantic nets. Reasoning techniques including reasoning under uncertainty, e.g., fuzzy reasoning. Exposure to different artificial intelligence systems like planning and learning (including neural networks).
This course provides an overview of security challenges and strategies of countermeasures in the information systems environment. Topics include definition of terms, concepts, elements, and goals incorporating industry standards and practices with a focus on confidentiality, availability, and integrity aspects of information systems.
The course introduces the concepts and design of parallel and distributed computing systems. Topics covered include: Data versus control parallelism (SIMD/Vector, Pipelines, MIMD, Multi-core, GPU); Shared versus distributed memory (SMP and NUMA), Message passing Interface (MPI) and Topologies; Parallel and distributed algorithms: Paradigms, Models and Complexity, Scheduling, Synchronization, Deadlock detection, Fault tolerance and Load balancing.
Department and advisor approval. This course focuses on the fundamentals of computing and is geared toward non-CS majors going into computational sciences. The course will cover key concepts of data strudtures, data manipulation, algorithms and efficiency, and how they apply to the various application domains specific to computational fields. The course will also provide an introduction to Python for computational sciences. Topics include: an introduction to computational complexity, data structures (arrays, lists, stacks, queues, trees, and graphs), elementary algorithms and their complexity.
Formal approach to techniques and software design and development. Software cycle encompassed from initial ideas through code design and implementation with emphasis on object-oriented design techniques will be included. Software testing and maintenance will be discussed.
The course will expose students to three programming paradigms for big dat analytics to cover the three Vs: Velocity, Volume, and Variety. The course will focus on design and development of programs based on the: (1) Supervised and unsupervised machine learning algorithms to perform predictive analytics of Big Data dn implement them using a high-level algorithms such as Octave; (2) Map-reduce parallel programming paradigm for selected data-intensive computational problems; (3) Functional programming paradigm using languages such as OCaml to analyze big data in a recursive fashion. In addition, the course will enable students to be able to configure a distributed file system based on the Hadoop architecture for reliable share storage and develop programs that interface with it, as well as manage large datasets using SQL-like access to unstructured data (Hive) and NoSQL storage solutions (HBase).
This course will cover the structure and analysis of large social networks on models and algorithms that abstract their properties. Topics covered include: Nodes, edges, and network measures, structure, and visualization and tools, the tie strength of networks, trust in social media, analyzing and classifying user roles, attributes and behavior, link prediction and entity resolution, epidemic models, location-based social media analysis, social sharing and filtering, aggregation and data mining, and network strategies for the individual and for the government.
Provide the student with the experience in analyzing, designing, implementing, and evaluating information systems. Students are assigned one or more system development projects. The project involves part or all of the system development cycle.
Supervised graduate internship or externship in selected areas of computer science.
An independent study course for the preparation of a Master's thesis.
The course focuses on algorithms of different design strategies, and the mathematical concepts used in describing the complexity of an algorithm. Topics covered include: Asymptotic notations; Time complexity analysis of iterative and recursive algorithms; design strategies like Bruite force, Diviide and Conquer, Transform and Conquer,Greedy and Dynamic programming; Space-time tradeoffs in algorithms and NP-completeness - Heuristics and Approximation algorithms. The course will also cover graph theory algorithms and string matching algorithms with respect to the application of the above design strategies for specific problems.
This course is designed for non-computer science majors entering the Ph.D. in Computational and Data Enabled Sciences and Engineering. It introduces students to the concepts and theories of database systems, necessary in the CDS&E fields. Topics include: information models and systems; the database environment; data modeling; conceptual modeling using the entitiy-relationship approach and mapping to relational tables; the relational model including the relational data structure, integrity rules, relational algebra and relational calculus; normalizaation; data definition and data manipulation in SQL; conceptual, logical, and physical database design; security; transaction management; query processing; and advanced topics in database systems, and how this applies to computational and data enabled sciences and engineering.
This course will deal enable students to understand the underlying algorithms used in varioius learning systems. Topics covered include: Inductive classification, Decision-tree learning, Ensembles, Experimental evaluation, Computational learning theory, Rule learning, Neural network learning, Support vector machines, Bayesian learning, Instance-based learning and Text categorization.
This course will focus on data mining of very large amounts of data that is so large enough not to fit in main memory, characteristic of data retrieved from the web. Topics to be covered include: Distributed file systems and Map Reduce, Similarly search techniques, Real-time data-stream processing algorithms, Technology of search engines (PageRank, Link-spam detection, hubs-and-authorities approach) and Frequent-itemset mininig. The course will also expose students to algorithms for clustering very large, high-dimensional datasets.
Topics covered include the measurement and structure of networks, methods for analyzing network data, including methods developed in physics, and statistics, and sociology, graph theory, computer algorithms, mathematical models of networks, including random graph models and generative models, and theories of dynamical processes taking place on networks.
This course will focus on graduate-levle central concepts in modern programming languages, impact on software development, language design trade-offs, and implementation considerations. Functional, imperative, and object-oriented paradigms. Formal semantic methods and program analysis. Modern type systems, higher order functions and closures, exceptions and continuationsl Modurlarity, object-oriented languages, and concurrency. Runtime support for language features, interoperability, and security issues.
Dissertation representing Independent and original research in the area of Computational Science and Engineering.