CS - Computer Science
The objective of this course is to enhance the ability of students to locate, manage, critically evaluate, and use information for problem solving, research, and decision making in a complex digital world. Emphasis in this course will be on information security, laws, regulations, institutional policies and ethical issues surrounding the access and use of information.
An overview of computer science as a problem-solving discipline and as a career path. Topics include fundamentals of software, hardware computing fundamentals, and an introduction to the development of software to solve problems. Software development is introduced using the Python programming language. Intended for prospective CS majors. Laboratory work required. Computer science majors who already have credit for CS 150, CS 151, CS 152, or ENGN 150 cannot subsequently take CS 115 for credit toward their degree.
Students will learn to locate, manage, critically evaluate and use information for problem solving, research and decision making. Includes collaborative tools for document development and office productivity tools for presentation. Information security, laws and etiquette related to use and access of information are covered.
Students will learn to locate, manage, critically evaluate and use information for scientific problem solving and research. Includes mathematical tools for data analysis and presentation and office and collaborative tools, as well. Information security, laws and etiquette related to use and access of information are covered.
Open only to students in the Honors College. A special honors version of CS 120G.
Laboratory work required. Introduction to computer-based problem solving and programming in C++. Topics include problem solving methodologies, program design, algorithm development, and testing. C++ language concepts include variables, data types and expressions, assignment, control-flow statements, functions, arrays, pointers, structs, and classes.
Laboratory work required. Introduction to computer-based problem solving and programming in Java. Topics include problem solving methodologies, program design, algorithm development, and testing. Java language concepts including variables, data types and expressions, assignment, control-flow statements, I/O, exception handling, functions, arrays, and classes.
Laboratory work required. Introduction to computer-based problem solving and programming in Python. Topics include problem solving methodologies, program design, algorithm development, and testing. Python language concepts include variables, data types and expressions, assignment, control-flow statements, functions, tuples, lists, and dicts.
Fundamentals of the architecture and operation of modern computers. Basic computer logic: logic equations; gates; combinatorial logic. Basic computer arithmetic: binary numbers; floating point representation. System hierarchy, overview of a computer; integrated circuit technology. Performance: metrics; choosing benchmarks; Amdahl's law. Instruction Sets and Operations: assembly language; machine language; examples of other instruction sets.
Special topics in computer science that are not part of the current curriculum at the freshman/sophomore level.
Student participation in a supervised, undergraduate research experience for which credit will not apply to the degree. Experience must be related to the student's major, minor or career area of interest.
This course provides an in-depth introduction to information literacy from library and information science, information ethics, and computer science perspectives along with applications to cybersecurity research and professional activity. This course is aligned with Old Dominion University’s general education learning outcomes for information literacy.
This course introduces the basic concepts and algorithms of digital image processing. Topics include image representation, sampling, quantization, enhancement, filtering, restoration, segmentation, color image processing, imaging geometry, image transforms, and morphological processing.
Laboratory work required. Design issues arising in software systems and C++ programming techniques aiding in their solution. Topics include the software life cycle, methods of functional decomposition, design documentation, abstract data types and classes, inheritance, common data structures, dynamic data structures, algorithmic patterns, and testing and debugging techniques.
Laboratory work required. Design issues arising in software systems and Java programming techniques aiding in their solution. This course provides the conceptual basis for programming techniques and program design with object and classes. Topics include the software life cycle, methods of functional decomposition, abstract data types and classes, inheritance, references, common data structures, algorithmic patterns, and testing and debugging techniques.
Laboratory work required. Available for pass/fail grading only. An introduction to Unix with emphasis on the skills necessary to be a productive programmer in Unix, Linux, and related environments. Topics include SSH, command line shells, files and directories, editing, compiling and debugging, SSH keys, git and programming IDEs.
This course is a VCCS transfer credit vehicle. The course will not be offered for credit by Old Dominion University. An equivalent course would be a second programming course, this one in Python, that emphasizes the conceptual basis for programming techniques and program design with object and classes. Topics should include the software life cycle, methods of functional decomposition, abstract data types and classes, inheritance, common data structures, algorithmic patterns, and testing and debugging techniques.
Laboratory work required. An introduction to the C++ programming language for students who are familiar with programming in Java or Python. Topics include basic language syntax, data structures, control flow, structs, classes, inheritance, and basic elements of the C++ standard library. Not open to students with credit for CS 250.
Laboratory work required. An introduction to the Java programming language for students who are familiar with programming in C++ or Python. Topics include basic language syntax, data structures, control flow, classes, inheritance, exception handling, and basic elements of the Java API. Not open to students with credit for CS 251.
Laboratory work required. An introduction to the Python programming language for students who are familiar with programming in C++ or Java. Topics include basic language syntax, data structures, control flow, classes, inheritance, and basic elements of the Python standard library. Not open to students with credit for CS 253.
Fundamentals of the architecture and operation of modern computers. Building an ALU. The cache-Ram interaction. The virtual memory system. The Fetch/Execute cycle. Implementing a set of the ALU, Load/Store and Branch instructions in a single cycle implementation. Basics of microprogramming. Design of the control unit. A pipelined implementation. Multicores, multiprocessors and clusters.
Special topics in computer science which are not part of the current curriculum at the freshman/sophomore level.
Covers changes in the world's society due to continuing implementation of computing technologies. Evaluation of technological expansions in areas of governments, business/industry, education, medicine, transportation, communication and entertainment. Topics include: intellectual property, software piracy, computer crimes and ethics. Students must research a societal topic and present in written and oral forms.
Laboratory work required. An in-depth introduction to the Internet and the World Wide Web for CS or similar majors as a basis for more advanced studies in Web programming. Topics include: historical and current development of the Internet Web document publishing. Internet design, communication, and application protocols and the tools that use them. Internet search tools and their design. Internet issues such as netiquette, copyright, spam, computer viruses, cookies, security, and future of the Internet.
This course consists of talks by invited speakers, including Old Dominion University faculty and guests from different research and industry communities. The colloquium introduces the possibilities of future research and career opportunities in the various areas of the computer science field. Additionally, students will learn about available scholarships and how to apply for them.
Laboratory work required. The techniques, idioms, and design patterns of object-oriented programming. Methods of object-oriented analysis and design with the Unified Modeling Language. Multi-thread programs, synchronization, and graphic user interfaces.
Laboratory work required. An exploration of the software development process, with an emphasis on the tools and techniques that support project teams. Topics include: software development process models, requirements, automated testing, documentation, build, version and configuration management, issue tracking, and agile methods. The course requires each student to participate as a member of a project team and to demonstrate proficiency with a variety of development tools.
Survey of significant features of programming languages. Language types including imperative, functional, logical, and object-oriented are covered. Concepts include lexical and syntactic analysis, type systems, flow control, modularity, and parallel programming. Small programs in several languages required. Laboratory work required.
Laboratory work required. Common abstract data types, including vectors, lists, stacks, queues, sets, maps, heaps, and graphs. Standard Java interfaces for these ADTs. Iterators and generics. Choosing data structures and algorithms to implement ADTs, via analysis of their time and space complexity.
Available for pass/fail grading only. Student participation for credit based on the academic relevance of the work experience, criteria, and evaluative procedures as formally determined by the department and Career Development Services prior to the semester in which the work experience is to take place. Written report required.
Available for pass/fail grading only. Academic requirements will be established by the department and will vary with the amount of credit desired. Allows students to gain short duration career-related experience. An academic project may be required by the department to enhance the value of the educational experience. Written report required.
Topics include propositional and predicate logic, rules of inference, methods of proof, set operations, functions, complexity of algorithms, growth of functions, induction, counting, relations, equivalence relations and graphs.
Elementary study of theoretical aspects of computer science. Topics in formal languages and automata theory are covered including regular languages, regular expressions, finite automata, context-free languages, pushdown automata, grammars, Turing machines, and unsolvable problems.
Special topics in computer science that are not part of the current curriculum at the junior/senior level.
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.
Provides 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 designed 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.
Emphasizes the tools and techniques used to solve scientific problems. Topics include use and design of experiments, use of statistics to interpret experimental results, mathematical modeling of scientific phenomena, and oral and written presentation of scientific results. Students will perform four independent inquiries, combining skills from mathematics and science to solve research problems. Required for Physics teaching licensure track; not available as upper-division elective in content area. This is a writing intensive course.
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.
Laboratory work required. Basic protocols, techniques and programming issues to secure network and computer systems. Topics include: cryptographic algorithms and concepts (Secret Key Cryptography, Hashes and Message Digests, Public Key and Authentication); Security Standards (Kerberos, Public Key Infrastructure, IPsec, SSL/TLS); Security applications (PEM, S/MIME, PGP, HTTP, Firewalls); Hands-on programming using OpenSSL.
Laboratory work required. 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. Fundamental concepts of parallel computing: Machine models, architectures, parallel topologies and languages, parallel algorithm design and parallel programming, architecture independent message passing interface (MPI) communication library, and scaled-speedup. Group project required.
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 mentor. 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 491. 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 mentor.
Special topics.
Independent study under the direction of an instructor.
Laboratory work required. Each student writes a thesis and continues the development of the project defined in CS 491. Written work is reviewed and returned for corrective rewriting. 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 mentor. This is a writing intensive class.
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.