Department of Computer Science
Department website: https://www.cs.odu.edu/
Engineering & Computational Sciences Bldg.
4700 Elkhorn Ave, Suite 3300
Norfolk, VA 23529-0162
Ravi Mukkamala, Department Chair
Yaohang Li, Graduate Program Director - Admissions
Andrey Chernikov, Graduate Program Director – Master’s
Michele Weigle, Graduate Program Director – PhD
Programs
The Department of Computer Science offers programs leading to the Master of Science with a major in computer science, a linked five-year combined BSCS and MS with a major in computer science, and the Doctor of Philosophy in computer science. The Department of Computer Science also offers a Master of Science in computer science with an information and communications technology concentration (jointly with the Information Technology and Decision Sciences Department in the Strome College of Business). In support of these degree programs, the department has excellent state-of-the-art computing facilities.
Computer science traces its foundation to mathematics, logic, and engineering. Studies in computer science encompass theory, experimental techniques, and engineering methodology. The computer science curriculum exposes students to aspects of each of these disciplines and fosters an appreciation and understanding of them. Students are exposed to the broad theoretical basis of computer science through lecture and laboratory experience. The Department of Computer Science has a unique curricular model that applies computer science education to the real world. In addition, the Department of Computer Science offers a set of courses to professionals who need supplementary experience. A graduate of the computer science program will have a broad fundamental knowledge of the field and in-depth knowledge in a particular subject area. To acquire breadth, graduate students in the department are required to take core courses which together with the undergraduate core courses cover major aspects of computers and computation.
The department's MS degrees are available both on-campus and online. At the master’s level, the department supports in-depth study in the following areas:
- data science,
- machine learning,
- bioinformatics,
- web science and digital libraries,
- high performance computing,
- cybersecurity,
- data mining,
- networking,
- software engineering, and
- computational foundations.
At the PhD level, areas of specialization are limited only by the interests of the available faculty.
Programs
Doctor of Philosophy Program
Master of Science Programs
Certificate Program
Linked Bachelor of Science in Computer Science and Master of Business Administration
This program allows students to earn a Bachelor of Science in Computer Science and a Master of Business Administration. After students have satisfactorily completed their undergraduate requirements, they must complete the remaining requirements in the MBA program. Additional information can be found in the section on BS/MBA Linked Program at the beginning of the College of Sciences section of this Catalog and the Strome College of Business section in the Graduate Catalog.
Linked Bachelor of Science in Computer Science and Master of Science in Computer Science
This program allows for exceptionally successful students to earn both a BSCS and an MS in Computer Science by allowing up to 12 credits of graduate coursework to count toward both their bachelor’s and master’s degree in Computer Science. All options available under the MS degree are available under this program. Students must earn a minimum of 150 credit hours (120 discrete credit hours for the undergraduate degree and 30 discrete credit hours for the graduate degree).
Admission
To be admitted to the linked program, students must have completed at least 60 undergraduate credit hours with at least 24 credit hours from ODU. Students must have completed CS 361, CS 381, MATH 212 and all prerequisites for those courses. At the time of admission, they must have an overall GPA of 3.00 or better, and an overall GPA of 3.00 or better in CS and MATH courses.
Interested students who meet the admission requirements should apply to the graduate program director, after consulting with the undergraduate chief departmental advisor, as soon as possible upon completing the required courses and 60 credit hours. In consultation with the graduate program director, a student will:
- Officially declare an undergraduate Computer Science major with the undergraduate chief departmental advisor.
- Draft a schedule of graduate courses to be taken as an undergraduate to be presented to the undergraduate chief departmental advisor.
- Apply, during their senior year, to the Office of Graduate Admissions for admission to the master's in computer science program.
Students who have completed at least six hours of graduate courses upon attaining senior standing (completion of 90 credit hours) and who have earned a GPA of 3.00 or better in those courses will not be required to take the Graduate Record Exam (GRE) for admission to the master's program. Otherwise, in keeping with normal admission requirements for the MS in computer science, students will take the GRE as an undergraduate and will subsequently be reevaluated for continuation into the master's program.
Once students have been awarded their bachelor's degree and fulfilled all regular admission requirements for the MS in computer science, they will be officially admitted into the MS program.
Program Requirements
Students in the program will fulfill all normal admission and curricular requirements for both a Bachelor of Science in Computer Science and an MS in computer science with the following exceptions:
- Students in the program may count up to 12 hours of graduate courses, at the 500 or 600 level, excluding independent study, taken as an undergraduate toward both the bachelor's and master's degrees in computer science.
- Students in the program may substitute computer science graduate courses for undergraduate courses according to the following schema. All students must complete an undergraduate writing intensive course in the major.
Students may substitute 500- and 600-level courses for the upper-level CS electives in the undergraduate program so long as they have the prerequisites for those courses. 700- or 800-level courses may not be used. - Students will not receive credit for both the 400 and 500 level version of the same course.
- Students in the program may make a written petition for other substitutions to the graduate program director, who will consider them in consultation with the chief departmental advisor and the instructor(s) of the courses involved.
- To maximize the accelerated benefit one or more of the following required courses should be selected: CS 517, CS 518, CS 550, or CS 571.
- Students in the program may substitute computer science graduate courses for undergraduate courses according to the following schema. All students must complete an undergraduate writing intensive course in the major.
NOTES:
- In accordance with University policy, up to 21 hours of graduate courses taken as an undergraduate may be counted toward the bachelor's degree in computer science. However, only 12 hours of graduate courses taken as an undergraduate may also be counted toward the MS degree in computer science. This will limit students' scheduling flexibility subsequently.
- Like students in the regular MS in computer science program, students in the linked BSCS/MS computer science degree may count no more than 12 hours at the 500-level toward their MS degree. Students are advised against taking all 12 of those 500-level credits as an undergraduate, since doing so will limit their scheduling flexibility subsequently.
Linked Bachelor of Science in Computer Science and Master of Science in Data Science and Analytics
This program allows for exceptionally successful students to earn both a BSCS and an MS in Data Science and Analytics by allowing up to 12 credits of graduate coursework to count toward both their bachelor’s degree in Computer Science and master’s degree in Data Science and Analytics. All options available under the MS degree are available under this program. Students must earn a minimum of 150 credit hours (120 discrete credit hours for the undergraduate degree and 30 discrete credit hours for the graduate degree).
Admission
To be admitted to the linked program, students must have completed at least 60 undergraduate credit hours with at least 24 credit hours from ODU. Students must have completed CS 361 , CS 381, MATH 212 and all prerequisites for those courses. At the time of admission, they must have an overall GPA of 3.00 or better, and an overall GPA of 3.00 or better in CS and MATH courses.
Interested students who meet the admission requirements should apply to the graduate program director, after consulting with the undergraduate chief departmental advisor, as soon as possible upon completing the required courses and 60 credit hours. In consultation with the graduate program director, a student will:
- Officially declare an undergraduate Computer Science major with the undergraduate chief departmental advisor.
- Draft a schedule of graduate courses to be taken as an undergraduate to be presented to the undergraduate chief departmental advisor.
- Apply, during their senior year, to the Office of Graduate Admissions for admission to the master's in Data Science and Analytics program.
Students who have completed at least six hours of graduate courses upon attaining senior standing (completion of 90 credit hours) and who have earned a GPA of 3.00 or better in those courses will not be required to take the Graduate Record Exam (GRE) for admission to the master's program. Otherwise, in keeping with normal admission requirements for the MS in Data Science and Analytics, students will take the GRE as an undergraduate and will subsequently be reevaluated for continuation into the master's program.
Once students have been awarded their bachelor's degree and fulfilled all regular admission requirements for the MS in data science and analytics, they will be officially admitted into the MS program.
Program Requirements
Students in the program will fulfill all normal admission and curricular requirements for both a Bachelor of Science in Computer Science and an MS in Data Science and Analytics with the following exceptions:
- Students in the program may count up to 12 hours of graduate courses, at the 500 or 600 level, excluding independent study, taken as an undergraduate toward both the bachelor's and master's degrees.
- Students in the program may substitute computer science graduate courses for undergraduate courses according to the following schema. All students must complete an undergraduate writing intensive course in the major.
Students may substitute 500- and 600-level courses for the upper-level CS electives in the undergraduate program so long as they have the prerequisites for those courses. 700- or 800-level courses may not be used. - Students will not receive credit for both the 400 and 500 level version of the same course.
- Students in the program may make a written petition for other substitutions to the graduate program director, who will consider them in consultation with the chief departmental advisor and the instructor(s) of the courses involved.
- Students in the program may substitute computer science graduate courses for undergraduate courses according to the following schema. All students must complete an undergraduate writing intensive course in the major.
The graduate courses taken must be from the following:
Code | Title | Credit Hours |
---|---|---|
CS 550 | Database Concepts | 3 |
Choose three from the following:* | 9 | |
Introduction to Machine Learning | ||
Web Science | ||
Data Analytics for Cybersecurity | ||
Introduction to Artificial Intelligence | ||
Total Credit Hours | 12 |
- *
Substitutions of other computer science courses may be made with approval of the graduate program director.
NOTE:
- In accordance with University policy, up to 21 hours of graduate courses taken as an undergraduate may be counted toward the bachelor's degree in computer science. However, only 12 hours of graduate courses taken as an undergraduate may also be counted toward the MS degree in Data Science and Analytics. This will limit students' scheduling flexibility subsequently.
Courses
Computer Science (CS)
The course aims to provide students foundational training in computing. This includes topics in discrete mathematics, counting and combinatorics, probability, proofs methods, basic automata theory and algorithm design and analysis.
Laboratory work required. Foundational principles and techniques for building correct-by-construction software systems with provable guarantees. Includes functional programming, algebraic and polymorphic data types, pattern matching, computer-assisted theorem proving, proof automation, extraction of certified executable code, examples of verified algorithms.
Laboratory work required. Provides students with challenges of business environments in developing a technology based project. Students identify a societal problem, identify solutions, define project solutions, develop project objectives, conduct feasibility analysis, establish organizational group structure to meet project objectives and develop formal specifications. Students make formal technical project presentations and develop web documentation. Students prepare a draft grant proposal.
Laboratory work required. Students write professional and non-technical documents and continue the development of the project defined in CS 410. Written work is reviewed and returned for corrective rewriting. Students will design and develop a project prototype, and demonstrate the prototype to a formal panel along with delivering the formal product specifications and a draft formal grant proposal. This is a writing intensive course.
Laboratory work required. Algorithms and software for fundamental problems in scientific computing. Topics: properties of floating point arithmetic, linear systems of equations, matrix factorizations, stability of algorithms, conditioning of problems, least-squares problems, eigenvalue computations, numerical integration and differentiation, nonlinear equations, iterative solution of linear systems.
Laboratory work required. Overview of Internet and World Wide Web; web servers and security, HTTP protocol; web application and design; server side scripts and database integration, and programming for the Web.
Laboratory work required. An introduction to machine learning with a focus on practical aspects of various learning techniques. Topics include supervised learning (linear models, probabilistic models, support vector machine, decision trees, neural networks, etc.), unsupervised learning (scaling, dimension reduction, clustering, etc.), reinforcement learning, and model evaluation. The course will also discuss applications on image analysis, text processing, and biomedical informatics.
Laboratory work required. Extensive coverage of the hypertext transfer protocol (HTTP), specifications and commentary (IETF RFCs), and implications for servers and clients. Students will develop a web server providing common HTTP functionality and implementing all HTTP (including unsafe and conditional) methods, content negotiation, transfer and content encoding, basic & digest authentication, and server-side execution of programs (i.e., dynamic resources). Frequent in-class demonstrations of progress and protocol conformance will be required.
An overview of the World Wide Web and associated decentralized information structures, focusing mainly on the computing aspects of the Web: how it works, how it is used, and how it can be analyzed. Students will examine a number of topics including: web architecture, web characterization and analysis, web archiving, Web 2.0, social networks, collective intelligence, search engines, web mining, information diffusion on the web, and the Semantic Web.
Provides detailed experience with: principles of web security, attacks and countermeasures, the browser security model, web app vulnerabilities, injection, denial-of-service, TLS attacks, privacy, fingerprinting, same-origin policy, cross site scripting, authentication, JavaScript security, emerging threats, defense-in-depth, techniques for writing secure code, web archiving, and rehosting.
Laboratory work required. Project-oriented coverage of the principles of application design and development for Android platform smart devices. Topics include user interface; input methods; data handling; network techniques; localization and sensing. Students are required to produce a professional-quality mobile application.
Laboratory work required. Three level database architecture. The relational database model and relational algebra. SQL and its use in database procedures and with conventional programming languages. Entity relationship modeling. Functional dependencies and normalization. Transactions, concurrency and recovery.
Laboratory work required. The administration of computer networks and their interaction with wide area networks: network topologies for local and wide area networks, common protocols and services, management of distributed file services, routing and configuration, security, monitoring and trouble-shooting.
Internet and the 5-layered protocol architecture for the Internet, applications built on top of data networks, specifically the Internet, the web, the transport layer, TCP and UDP protocols, the network layer, the data link layer, also some of the technologies for the physical layer.
Laboratory work required. Aspects of administering a SOLARIS/UNIX operating system in a networked environment are covered. Topics covered include installation, file system management, backup procedures, process control, user administration, device management, Network File Systems (NFS), Network Information Systems (NIS), UNIX security, Domain Name Services (DNS), and integration with other operating systems.
Laboratory work required. An introduction to graphical systems and methods. Topics include basic primitives, windowing, transformations, hardware, interaction devices, 3-D graphics, curved surfaces, solids, and realism techniques such as visible surface, lighting, shadows, and surface detail. Requires project involving OpenGL programming.
Introduction to networking and the Internet protocol stack; Vulnerable protocols such as HTTP, DNS, and BGP; Overview of wireless communications, vulnerabilities, and security protocols; Introduction to cryptography; Discussion of cyber threats and defenses; Firewalls and IDS/IPS; Kerberos; Transport Layer Security, including certificates; Network Layer Security.
This course covers mathematical foundations, including information theory, number theory, factoring, and prime number generation; cryptographic protocols, including basic building blocks and protocols; cryptographic techniques, including key generation and key management, and applications; and cryptographic algorithms--DES, AES, stream ciphers, hash functions, digital signatures, etc.
Authentication in cyber systems including password-based, address-based, biometrics-based, and SSO systems; Authorization and accounting in cyber systems; Securing wired and wireless networks; Secured applications including secure e-mail services, secure web services, and secure e-commerce applications; Security and privacy in cloud environments.
Introduction to information assurance. Topics to be covered include metrics, planning and deployment; identity and trust technologies; verification and evaluation, and incident response; human factors; regulation, policy languages, and enforcement; legal, ethical, and social implications; privacy and security trade-offs; system survivability; intrusion detection; and fault and security management.
This course is to help students gain a thorough understanding of vulnerabilities and attacks in systems and networks and learn cyber defense best practices. It covers fundamental security design principles and defense strategies and security tools used to mitigate various cyber attacks. The topics may include identification of Recon Ops, intrusion detection, identification of C2 Ops, data exfiltration detection, identifying malicious codes, network security techniques, cryptography, malicious activity detection, system security architectures, defense in depth, distributed/cloud and virtualization. Laboratory work required.
Laboratory work required. Covers all the major components such as static analysis, dynamic analysis, Windows x86/64 Assembly, APIs, DLL/process injection, covert launching methods, behaviors, anti-disassembly, anti-VM, packing/unpacking, shell code, C++, buffer overflow attacks and various kinds of networking attacks; includes a final project that analyzes a piece of real malware.
The course introduces classical and advanced models and techniques in machine learning and deep learning. It applies these techniques in the cybersecurity domain including anomaly detection, network security, and malware detection and classification. Advanced applications such as self-driving cars and IoT systems are also discussed. In addition, cyber-attacks on machine learning techniques and AI systems and the possible consequences are also discussed.
Laboratory work required. Operating system structures. Multiprogramming and multiprocessing. Process management. Memory and other resource management. Storage management, I/O systems, distributed systems. Protection and security. The concepts will be illustrated through example systems such as Unix and Windows.
Efficient implementation methods. Time management. Planning and design of simulation experiments. Statistical issues in simulation. Generation of random numbers and stochastic variates. Programming with graphically- and text-based simulation languages. Verification and validation of simulation models. Distributed simulation. Special topics such as HLA will be discussed.
Laboratory work required. This course is to help students fully understand and utilize the internal workings and capabilities provided by modern computing, networking and programming environments. Topics include: Shell Script Programming, X Windows (Xlib and Motif), UNIX internals (I/O, Processes, Threads, IPC and Signals), Network Programming (UDP/TCP Sockets and Multicasting) and Java Systems Programming (SWING, Multithreading and Networking).
The discipline of Computational Geometry is devoted to the study of algorithms which are formulated in terms of spatially embedded arrangements of objects, such as points, lines, surfaces, and solids. This course covers fundamental algorithms including convex hulls, polygon triangulations, point location, Voronoi diagrams, Delaunaytriangulations, binary space partitions, quadtrees, and other topics.
Laboratory work required. Introduction to concepts, principles, challenges, and research in major areas of AI. Areas of discussion include: natural language and vision processing, machine learning, machine logic and reasoning, robotics, expert and mundane systems.
Laboratory work required. The motivation for and successes of parallel computing. A taxonomy of commercially available parallel computers. Strategies for parallel decompositions. Parallel performance metrics. Parallel algorithms and their relation to corresponding serial algorithms. Numerous examples from scientific computing, mainly in linear algebra and differential equations. Implementations using public-domain network libraries on workstation clusters and computers.
Laboratory work required. Theoretical and practical aspects of compiler design and implementation. Topics will include lexical analysis, parsing, translation, code generation, optimization, and error handling.
Laboratory work required. Students perform mentored research in a group environment to develop computational approaches in addressing computer science challenges. The project needs approval by the Computer Science Honors Program director, and registration requires approval of the research mentor and the Graduate Program Director. A GPA of 3.00 or better is required, or approval by the director of the Computer Science Honors Program.
Laboratory work required. Students continue mentored research using the project defined in CS 591. Students will present the work and findings to the public. The project needs approval by the Computer Science Honors Program director, and registration requires approval of the research mentor and the Graduate Program Director. A GPA of 3.00 or better is required, or approval by the director of the Computer Science Honors Program.
Special topics.
Independent study under the direction of an instructor.
This course covers the following topics: (i) Basic introduction to algorithms, their design and analysis (ii) Asymptotic notation (iii) Recurrence Relations and their solutions (iv) Sorting and Order Statistics: various algorithms for sorting and their analysis, lower bounds for sorting, computing medians, modes and various order statistics (v) Paradigms for algorithm design and analysis: Dynamic Programming, Greedy Method, Amortized Analysis, and (vi) Graphs and Elementary Graph Algorithms: Breadth-first and Depth-first Search, Topological Sort, Minimum Spanning Trees and Shortest Paths Algorithms.
This course provides a comprehensive coverage of cybersecurity foundations including basics of networking, malware and cyber attacks, cryptography, firewalls, intrusion detection and prevention systems, Kerberos and SSL/TLS; basics of mobile computing, Internet of Things (IoT), Cyber Physical Systems and threats; information assurance (IA), incident management and response, vulnerabilities and risks; and legal, ethical, and social implications. This course will not be counted towards Computer Science graduate degrees.
This course will explore data science as a burgeoning field. Students will learn fundamental principles and techniques that data scientists employ to mine data. They will investigate real life examples where data is used to guide assessments and draw conclusions. This course will introduce software and computing resources available to a data scientist to process, visualize, and model different types of data including big data. Cross-listed with DASC 620.
This course introduces the essential data science tools to work with different types of data including streaming data and big data, including static and streaming data using Python software packages; modeling and predictive analysis using basic machine learning techniques; work with real sample data sets from different disciplines, e.g., the health sciences and finance industry; and how to work with big data using emerging technology such as Apache Spark.
This course covers the theory and application of data visualization. This includes issues in data cleaning to prepare data for visualization, theory behind mapping data to appropriate visual representations, introduction to visual analytics, and tools used for data analysis and visualization. Modern visualization software and tools will be used to analyze and visualize real-world datasets to reinforce the concepts covered in the course.
An interdisciplinary introduction to web archiving fundamentals including web crawling, collection development and summarization including planning, analyzing, and sharing collections. Includes a review of ethical and legal issues, trustworthiness, preservation, security, and cultural impact of web archiving.
This is a first course in parallel architecture, with an emphasis on the description and evaluation of commercially available machines. Topics to be covered include: parallelization and performance metrics, scalability and the "laws" of Amdahl and Gustavson, computational similarity, models of computation, parallelization paradigms, network characteristics and topology, communication calculus and templates, pipelining and parallelism, processor types, memory hierarchy, cache coherence protocols, latency-hiding mechanisms, routing algorithms, and languages and libraries to support parallel architecture.
Laboratory work required. Analysis, design and implementation of databases and database applications using modern software engineering methods. Database CASE tools. Analysis using process, function, and dataflow analysis in conjunction with entity relationship modeling. Database diagrams and database design. Application suite design and high level design of applications. Refining implementations.
Laboratory work required. The mathematical tools needed for the geometrical aspects of 3D computer graphics. Fundamentals: homogeneous coordinates, transformations and perspective. Theory of parametric and implicit curve and surface models: polar forms, Bezier arcs and de Casteljau subdivision, continuity constraints, B-splines, tensor product, and triangular patch surfaces. Representations of solids and conversions among them. Beometric algorithms for graphics problems, with applications to ray tracing, hidden surface elimination, etc.
A detailed and quantitative study of the architecture of modern uni-processor computers. The major components are: the technology drivers, performance measures, instruction sets (including 80X86, VAX, and a generic RISC which is very similar to the MIPS series), processor implementation, advanced pipelining and superscalar features, cache and memory design, and I/O. The emphasis is on obtaining quantitative measures of performance, describing interactions of the various components, studying trade-offs between the components in commercial processors, and integration into a complete computer system including interaction of the software and hardware. (offered spring)
Requirements will be established by the department and Career Development Services and will vary with the amount of credit desired. Allows students an opportunity to gain a short duration career-related experience.
A one-hour weekly lecture given by faculty from Old Dominion and other institutions.
Independent study under the direction of an instructor.
Departmental permission required.
Departmental permission required.
Laboratory work required. The course will involve solving two or three comprehensive projects anchored in computer science and engineering. Possible topics for projects include: computational issues in network design and analysis; scheduling problems and applications; digital geometry and pattern recognition; image processing and computer vision applications; robotics. The basic thrust is to demonstrate the usefulness and power of algorithm design and analysis in solving real-life problems.
Laboratory work required. The most common path to improved confidence in a program is via testing. This course explores divergent and sometimes conflicting approaches to conducting testing and to measuring the resulting confidence. Topics include the theoretical basis for testing, common testing methods, statistical measures of program reliability, and the relationship between correctness and reliability.
Stochastic processes are ways of quantifying the dynamic relationship of sequences of random events. This course will expose the participants to standard concepts and methods of stochastic modeling, as well as the rich diversity of applications. Topics include, but not limited to, Markov chains in discrete and continuous time, Poisson processes, renewal theory and branching processes.
This course serves to illustrate important principles in Monte Carlo simulation methods and to demonstrate their power in applications. The course covers Metropolis-Hastings algorithm, Gibbs sampler, Markov Chain Monte Carlo, acceptance-rejection method, Monte Carlo integration, quasi-Monte Carlo, random walk, and random number generation.
This course presents both the foundational and the practical aspects of modeling, analyzing, and mining of computerized data sets, including classification, regression, clustering, semi-supervised learning, structured sparsity learning, etc. The course assignments are designed to contain both theoretical and programming components in order to train students to gain hands-on-experience.
This course introduces the fundamental knowledge in bioinformatics and the current advances in selected directions. The topics include: fundamental concepts and experimental techniques in molecular biology, computational methods in genomic sequence comparison and analysis, and computational methods in molecular structural modeling.
This course introduces parallel and distributed programming principles and has emphasis on hands-on programming and deploying high-performance computing applications with big data for different science and engineering disciplines. Topics includes programming on emerging technologies such as NVIDIA GPU, Hadoop Framework, and Apache Spark for large scale data analytics and mining applications.
This course covers the theory and application of information visualization and of visual analytics, the science of combining interactive visual interfaces and information visualization technique with automatic algorithms to support analytical reasoning through human-computer interaction. Research on visual perception, cognition, interactive visual interfaces, and visual analytics will be covered. Practical techniques for the display of complex multivariate data will be addressed. Course projects will require the development of interactive web-based interfaces to analyze and visualize real-world datasets.
This course links the fundamental concepts and algorithms of graphs with the actual biological problems. Various biological problems will be selected to discuss the formulation of the graph, the graph algorithms, and the performance analysis.
The goal of this course is to understand fundamental concepts and to survey current advances in computational structural bioinformatics. In the scope of computational structural bioinformatics, computational methods are developed to address 3-dimentaional structure-related biological problems that often involve protein and RNA. The topics include basics of protein, DNA and RNA structures, principle of protein structure prediction, deep learning in protein structure problems and cryo-electron microscopy data and challenges.
This course covers key components and procedures that constitute the deep learning framework including loss function, regularization, training, optimization, overfitting, batch normalization, and gradient descent. The course covers several fundamental and common neural networks including the multilayer perceptron, convolutional neural network, recurrent neural network, the attention mechanism, and transformers. It also introduces advanced deep learning models such as deep reinforcement learning and graph neural networks.
This course introduces students to principles and research methods in human-computer interaction (HCI), an interdisciplinary area studying the interaction between humans and interactive computing systems. Students will learn to model computer users and interfaces, significant cognitive and social phenomena surrounding the human use of computers, apply empirical techniques for task analysis and interface design, and evaluate designs qualitatively and quantitatively.
Natural language processing (NLP) techniques are the crux of many leading modern technologies. Advances in NLP are also critical in the pursuit of Artificial Intelligence. This course will discuss core problems in NLP and the state-of-the-art tools and techniques as well as advanced NLP research topics. The topics will include language models, part-of-speech tagging, syntactic parsing, word embedding, statistical machine translation, text summarization, question answering, and dialog interaction. At the end of the course, students will be familiar with many language-processing tasks and applications.
Laboratory work required. Theory and engineering of information retrieval in the context of developing web-based search engines. Topics include issues related to crawling, ranking, query processing, retrieval models, evaluation, clustering, machine learning, and other aspects related to building web search engines. Students will perform a mix of hands-on development and coding, as well as theoretical exploration of the research literature.
Explores the veracity of information on the web and social media. Digital information is easy to manipulate, copy, and delete, but web archives offer a trusted method for timestamping the appearance of web pages and their contents. Students will investigate how web archives can be used to establish the priority of information, as well as how they can be hacked or used to obfuscate the provenance of falsified content.
This course covers the following topics: Image processing and filters; Edges and features; Interest points and features; Bag of words representation; Convolutional neural networks; Object detection; Image formation; 3D reconstruction; Motion analysis; and Light and shading.
With the advent of large learning models in machine learning, high-performance computing is playing a major in realizing these models. This course deals with large-scale computing on high-performance emerging architectures, particularly heterogeneous architectures consisting of CPUs and GPUs. The course will expose students to different programming environments for efficiently programming emerging heterogeneous architectures.
The course will introduce some of the commonly used techniques in the performance evaluation of computing systems. Students will be exposed to a variety of analytical and simulation tools used in this field. The applicability of the techniques will be illustrated through case studies.
Digital Libraries (DLs) are an increasingly popular research area that encompass more than traditional information retrieval or database methods and techniques. The course will cover a brief history of DL development, with emphasis on World Wide Web implementations. Case studies will be performed on various DLs. The class will focus heavily on project work. At the end of the course, students will be prepared to develop, evaluate, or apply digital library technologies in their work environment. Topics include: Repositories; Distributed Searching; Metadata Harvesting; Preservation, Reference Linking and Citation Analysis.
This course looks at fundamental issues in the area of wireless networks and mobile computing. The course material is organized around the following broad themes: Basics of mobile and wireless communications; Cellular communications: Bandwidth allocation and reservation, Location management, Call admission strategies and QoS issues: Mobile IP and Mobile TCP; Mobile Ad-Hoc NETworks (MANET): Routing, Multimedia and QoS support; Sensor networks.
Theory and practice in analysis and mitigation of malware in networked machines. Theoretical topics include methods of attack anatomy, identification, reverse and anti-reverse engineering. Practice entails learning tools and techniques used by malware attackers, defenders and analysts in lab-based projects conducted in a secure 'sandbox' mode.
This course is based on the Intel processor architecture employed in Windows, Linux and MacOS operating systems. Students will learn how memory is assigned to processes and how it is addressed, how memory data structures can be exploited by malware, and what is available for forensic analysis of memory. The course involves several hands-on lab work on recognizing process data structures in memory, memory acquisition, and use of a set of tools to catch the malware while preserving evidence from live memory analysis. Course requires a set of assigned reading and lab work.
This course covers different aspects of cryptocurrencies, including P2P networks, distributed consensus, Bitcoin and Ethereum, blockchain technologies, cryptographic techniques (secure hashing, encryption, decryption, digital signatures), privacy and anonymity, mining and mining puzzles, wallets, smart contracts, case studies, cryptocurrency ecosystem, legal aspects, implications and impact on economy and finance, and future of cryptocurrencies.
This course covers various topics in Internet of Things (IoT) security, including web security, network security, mobile app security and secure cryptocurrency. It provides an in-depth study of various attack techniques and methods to defend against them. The course adopts the 'learning by doing' principle. Students are supposed to learn the attacks by performing them in a networked virtual machine environment. They will also play with a number of security tools to understand how they work and what security guarantee they provide. Laboratory work required.
This course covers principles, design decisions, design techniques, policies, and mechanisms in the design and implementation of general-purpose multiprogramming and distributed operating systems. Topics to be covered include: concurrency, interprocess communication, threads, access control, protection and authentication, multiprocessor operating systems.
This course is a research-oriented, graduate-level course, centering around basic protocols and technique, as well as advanced, state-of-the-art topics to secure computer and Internet services. Topics include: System and Software Security, Cryptography and PKI, Internet Infrastructure and Network Security, Web and Browser Security, Cloud Security, and Online Privacy.
Introduction to data mining; Algorithms including naive Bayes, Decision Trees and Rules, Association Rules, Linear classification, and Clustering; Cross validation, Lift charts, ROC Curves; SVM, Bayesian networks, K-means clustering; Data transformation; PCA; Ensemble Learning; Application of data mining to security and privacy including authentication, authorization, and intrusion detection; Privacy-preserving data mining.
The course provides detailed coverage of security aspects of ASP.Net. It examines distributed system architectures, ASP.Net security framework, cyber attacks, system vulnerabilities, C# and ADO.Net. It also discusses windows and forms authentication, authorization, impersonation, code obfuscation, and advanced concepts, including secure web services, runtime security, operating system security, code access security, role-based access control, and attribute-based access control. Finally, cryptography, XACML and security policies as implemented in ASP.Net are covered.
This course deals with the design issues in distributed computing systems and will discuss the motivation for building distributed systems, various algorithms and protocols proposed in literature for system operability, and some of the experimental distributed systems that have been built in the last few years. Special attention will be paid to the fault-tolerant and performance aspects of these systems. The project component of this course will enable students to get hands-on experience of implementing some of the distributed algorithms.
Cloud computing requires a great deal of architectural support. This course investigates various types of architectural support that make cloud computing almost infinitely scalable while maintaining efficiency. The course will look at various types of support provided by Google, Amazon, Facebook, Yahoo! and others.
This course will introduce some of the technical foundations for capturing, transmitting, presentation and storage of continuous multimedia. Students will explore the applications of multimedia and techniques in some areas such as group collaboration and network based education. Topics covered include: Architectures and issues for distributed Multimedia Systems Support for real-time multimedia applications, quality-of-service, synchronization, and presentation of multiple multimedia streams.
Understanding the design, implementation and performance of network protocols using TCP/IP protocol suite as a case study. The students will have hands-on experience on low-level tools and will access and study the source code of these protocols and writing networking software applications. Topics include: socket interface, IPv4 and IPv6, routing, UDP, multicasting and IGMP, TCP specification, implementation and performance.
Seminar.
Topics in computer science.
Topics in computer science.
Introduction to research methods in computer science. Topics include academic publishing, academic writing, literature reviews, responsible conduct of research, and presenting research results. Research faculty will present overviews of their research and how research is conducted in their labs.
Laboratory work required. The course will involve solving two or three comprehensive projects anchored in computer science and engineering. Possible topics for projects include: computational issues in network design and analysis; scheduling problems and applications; digital geometry and pattern recognition; image processing and computer vision applications; robotics. The basic thrust is to demonstrate the usefulness and power of algorithm design and analysis in solving real-life problems.
Laboratory work required. The most common path to improved confidence in a program is via testing. This course explores divergent and sometimes conflicting approaches to conducting testing and to measuring the resulting confidence. Topics include the theoretical basis for testing, common testing methods, statistical measures of program reliability, and the relationship between correctness and reliability.
Stochastic processes are ways of quantifying the dynamic relationship of sequences of random events. This course will expose the participants to standard concepts and methods of stochastic modeling, as well as the rich diversity of applications. Topics include, but not limited to, Markov chains in discrete and continuous time, Poisson processes, renewal theory and branching processes.
This course serves to illustrate important principles in Monte Carlo simulation methods and to demonstrate their power in applications. The course covers Metropolis-Hastings algorithm, Gibbs sampler, Markov Chain Monte Carlo, acceptance-rejection method, Monte Carlo integration, quasi-Monte Carlo, random walk, and random number generation.
This course presents both the foundational and the practical aspects of modeling, analyzing, and mining of computerized data sets, including classification, regression, clustering, semi-supervised learning, structured sparsity learning, etc. The course assignments are designed to contain both theoretical and programming components in order to train students to gain hands-on-experience.
This course introduces the fundamental knowledge in bioinformatics and the current advances in selected directions. The topics include: fundamental concepts and experimental techniques in molecular biology, computational methods in genomic sequence comparison and analysis, and computational methods in molecular structural modeling.
This course introduces parallel and distributed programming principles and has emphasis on hands-on programming and deploying high-performance computing applications with big data for different science and engineering disciplines. Topics include programming on emerging technologies such as NVIDIA GPU, Hadoop Framework, and Apache Spark for large scale data analytics and mining applications.
This course covers the theory and application of information visualization and of visual analytics, the science of combining interactive visual interfaces and information visualization technique with automatic algorithms to support analytical reasoning through human-computer interaction. Research on visual perception, cognition, interactive visual interfaces, and visual analytics will be covered. Practical techniques for the display of complex multivariate data will be addressed. Course projects will require the development of interactive web-based interfaces to analyze and visualize real-world datasets.
This course links the fundamental concepts and algorithms of graphs with the actual biological problems. Various biological problems will be selected to discuss the formulation of the graph, the graph algorithms, and the performance analysis.
The goal of this course is to understand fundamental concepts and to survey current advances in computational structural bioinformatics. In the scope of computational structural bioinformatics, computational methods are developed to address 3-dimentaional structure-related biological problems that often involve protein and RNA. The topics include basics of protein, DNA and RNA structures, principle of protein structure prediction, deep learning in protein structure problems and cryo-electron microscopy data and challenges.
This course covers key components and procedures that constitute the deep learning framework including loss function, regularization, training, optimization, overfitting, batch normalization, and gradient descent. The course covers several fundamental and common neural networks including the multilayer perceptron, convolutional neural network, recurrent neural network, the attention mechanism, and transformers. It also introduces advanced deep learning models such as deep reinforcement learning and graph neural networks.
This course introduces students to principles and research methods in human-computer interaction (HCI), an interdisciplinary area studying the interaction between humans and interactive computing systems. Students will learn to model computer users and interfaces, significant cognitive and social phenomena surrounding the human use of computers, apply empirical techniques for task analysis and interface design, and evaluate designs qualitatively and quantitatively.
Natural language processing (NLP) techniques are the crux of many leading modern technologies. Advances in NLP are also critical in the pursuit of Artificial Intelligence. This course will discuss core problems in NLP and the state-of-the-art tools and techniques as well as advanced NLP research topics. The topics will include language models, part-of-speech tagging, syntactic parsing, word embedding, statistical machine translation, text summarization, question answering, and dialog interaction. At the end of the course, students will be familiar with many language-processing tasks and applications.
Laboratory work required. Theory and engineering of information retrieval in the context of developing web-based search engines. Topics include issues related to crawling, ranking, query processing, retrieval models, evaluation, clustering, machine learning, and other aspects related to building web search engines. Students will perform a mix of hands-on development and coding, as well as theoretical exploration of the research literature.
Explores the veracity of information on the web and social media. Digital information is easy to manipulate, copy, and delete, but web archives offer a trusted method for timestamping the appearance of web pages and their contents. Students will investigate how web archives can be used to establish the priority of information, as well as how they can be hacked or used to obfuscate the provenance of falsified content.
This course covers the following topics: Image processing and filters; Edges and features; Interest points and features; Bag of words representation; Convolutional neural networks; Object detection; Image formation; 3D reconstruction; Motion analysis; and Light and shading.
With the advent of large learning models in machine learning, high-performance computing is playing a major in realizing these models. This course deals with large-scale computing on high-performance emerging architectures, particularly heterogeneous architectures consisting of CPUs and GPUs. The course will expose students to different programming environments for efficiently programming emerging heterogeneous architectures.
The course will introduce some of the commonly used techniques in the performance evaluation of computing systems. Students will be exposed to a variety of analytical and simulation tools used in this field. The applicability of the techniques will be illustrated through case studies.
Digital Libraries (DLs) are an increasingly popular research area that encompass more than traditional information retrieval or database methods and techniques. The course will cover a brief history of DL development, with emphasis on World Wide Web implementations. Case studies will be performed on various DLs. The class will focus heavily on project work. At the end of the course, students will be prepared to develop, evaluate, or apply digital library technologies in their work environment. Topics include: Repositories; Distributed Searching; Metadata Harvesting; Preservation, Reference Linking and Citation Analysis.
This course looks at fundamental issues in the area of wireless networks and mobile computing. The course material is organized around the following broad themes: Basics of mobile and wireless communications; Cellular communications: Bandwidth allocation and reservation, Location management, Call admission strategies and QoS issues: Mobile IP and Mobile TCP; Mobile Ad-Hoc NETworks (MANET): Routing, Multimedia and QoS support; Sensor networks.
Theory and practice in analysis and mitigation of malware in networked machines. Theoretical topics include methods of attack anatomy, identification, reverse and anti-reverse engineering. Practice entails learning tools and techniques used by malware attackers, defenders and analysts in lab-based projects conducted in a secure 'sandbox' mode.
This course is based on the Intel processor architecture employed in Windows, Linux and MacOS operating systems. Students will learn how memory is assigned to processes and how it is addressed, how memory data structures can be exploited by malware, and what is available for forensic analysis of memory. The course involves several hands-on lab work on recognizing process data structures in memory, memory acquisition, and use of a set of tools to catch the malware while preserving evidence from live memory analysis. Course requires a set of assigned reading and lab work.
This course covers different aspects of cryptocurrencies, including P2P networks, distributed consensus, Bitcoin and Ethereum, blockchain technologies, cryptographic techniques (secure hashing, encryption, decryption, digital signatures), privacy and anonymity, mining and mining puzzles, wallets, smart contracts, case studies, cryptocurrency ecosystem, legal aspects, implications and impact on economy and finance, and future of cryptocurrencies.
This course covers various topics in Internet of Things (IoT) security, including web security, network security, mobile app security and secure cryptocurrency. It provides an in-depth study of various attack techniques and methods to defend against them. The course adopts the 'learning by doing' principle. Students are supposed to learn the attacks by performing them in a networked virtual machine environment. They will also play with a number of security tools to understand how they work and what security guarantee they provide. Laboratory work required.
This course covers principles, design decisions, design techniques, policies, and mechanisms in the design and implementation of general-purpose multiprogramming and distributed operating systems. Topics to be covered include: concurrency, interprocess communication, threads, access control, protection and authentication, multiprocessor operating systems.
This course is a research-oriented, graduate-level course, centering around basic protocols and technique, as well as advanced, state-of-the-art topics to secure computer and Internet services. Topics include: System and Software Security, Cryptography and PKI, Internet Infrastructure and Network Security, Web and Browser Security, Cloud Security, and Online Privacy.
Introduction to data mining; Algorithms including naive Bayes, Decision Trees and Rules, Association Rules, Linear classification, and Clustering; Cross validation, Lift charts, ROC Curves; SVM, Bayesian networks, K-means clustering; Data transformation; PCA; Ensemble Learning; Application of data mining to security and privacy including authentication, authorization, and intrusion detection; Privacy-preserving data mining.
The course provides a detailed coverage of security aspects of ASP.Net. It examines distributed system architectures, ASP.Net security framework, cyber attacks, system vulnerabilities, C# and ADO.Net. It also discusses windows and forms authentication, authorization, impersonation, and code obfuscation, and advanced concepts, including secure web services, runtime security, operating system security, code access security, role-based access control, and attribute-based access control. Finally, cryptography, XACML and security policies as implemented in ASP.Net are covered.
This course deals with the design issues in distributed computing systems and will discuss the motivation for building distributed systems, various algorithms and protocols proposed in literature for system operability, and some of the experimental distributed systems that have been built in the last few years. Special attention will be paid to the fault-tolerant and performance aspects of these systems. The project component of this course will enable students to get hands-on experience of implementing some of the distributed algorithms.
Cloud computing requires a great deal of architectural support. This course investigates various types of architectural support that make cloud computing almost infinitely scalable while maintaining efficiency. The course will look at various types of support provided by Google, Amazon, Facebook, Yahoo! and others.
This course will introduce some of the technical foundations for capturing, transmitting, presentation and storage of continuous multimedia. Students will explore the applications of multimedia and techniques in some areas such as group collaboration and network based education. Topics covered include: Architectures and issues for distributed Multimedia Systems Support for real-time multimedia applications, quality-of-service, synchronization, and presentation of multiple multimedia streams.
Understanding the design, implementation and performance of network protocols using TCP/IP protocol suite as a case study. The students will have hands-on experience on low-level tools and will access and study the source code of these protocols and writing networking software applications. Topics include: socket interface, IPv4 and IPv6, routing, UDP, multicasting and IGMP, TCP specification, implementation and performance.
Seminar.
Topics in computer science.
Topics in computer science.
Independent study at the doctoral level under the direction of an instructor.
Research for the doctoral dissertation. Departmental permission required.
This course is a pass/fail course for master's students in their final semester. It may be taken to fulfill the registration requirement necessary for graduation. All master's students are required to be registered for at least one graduate credit hour in the semester of their graduation.
This course is a pass/fail course doctoral students may take to maintain active status after successfully passing the candidacy examination. All doctoral students are required to be registered for at least one graduate credit hour every semester until their graduation.