Computer Science
Ravi Mukkamala, Chair
Soad Ibrahim, Chief Departmental Advisor
Ayman El Mesalami, Undergraduate Program Director
The Department of Computer Science (CS) offers programs leading to the Bachelor of Science in Computer Science (BSCS), Master of Science with a concentration in computer science, and Doctor of Philosophy with a concentration in computer science. Students can also earn a degree of Bachelor of Science in Computer Science with a major in secondary computer science education (6-12), which is intended for those who wish to pursue a career in teaching computer science at the high school level and leads to teaching licensure in the Commonwealth of Virginia. A linked undergraduate to graduate option is available that leads to a Bachelor of Science in Computer Science (BSCS) and a Master of Science in computer science, and a linked undergraduate to graduate option is available that leads to a Bachelor of Science in Computer Science (BSCS) and a Master of Science in data science. The BSCS courses are offered via traditional live lectures and ODUGlobal options.
At the undergraduate level the Department of Computer Science jointly offers a program with the Department of Electrical and Computer Engineering in the College of Engineering and Technology leading to a Bachelor of Science in Computer Engineering. A linked undergraduate to graduate option is available that leads to Bachelor of Science in Computer Science and Master of Business Administration degrees. The CS department supports the electrical engineering technology major of the Engineering Technology bachelor's degree and the modeling and simulation engineering major in the Computer Engineering bachelor's degree. The CS department also supports the Bachelor of Science degree with majors in cybersecurity and in cyber operations.
Computer science traces its foundation to mathematics, logic and engineering. Students in this program are exposed to the broad theoretical and practical basis of computer science in lectures and laboratory experiences. Through laboratories, students are introduced to both the experimental and the design aspects of computer science. Students may choose their electives to obtain an emphasis in data science, machine learning, databases, networking, web programming, systems programming, game programming, and cybersecurity.
The CS Department's curriculum applies computer science education to the real world. The Professional Workforce Development courses (CS 410 and CS 411W) expand upon the experimental and design approach of earlier courses by addressing the creativity and productivity required for business and industrial applications today. Faculty and industry representatives provide project concepts and mentor student teams in design and development of usable products.
Computing Facilities
The Computer Science Department at Old Dominion University offers a wide array of facilities, resources, and services to our faculty, staff, students and guests. Assets are distributed between Dragas Hall and the Engineering and Computational Sciences Building (E&CS). This system architecture enables our services to be configured in a redundant/highly-available manner. This stability and resiliency is essential to maintaining a high level of service to over 2,300 users.
The E&CS building is home to our primary data-center and main administrative office. It also houses several of our research labs, a multimedia conference room, and our network operations center. Dragas Hall contains several instructional and research labs, our satellite administrative office, secondary conference room, redundant data-center, extended network operations center, and support staff offices.
The department offers a heterogeneous computing environment that primarily consists of Windows and *nix based workstations and servers. On the Windows domain, users are offered network logons, Exchange email, terminal services via our Virtual Computing Lab (VCLab) where users can have access to our software remotely, roaming profiles, MSSQL database access for research, and Hyper-V virtualization for research/faculty projects. For Unix and Linux users we support Solaris, Ubuntu and Red Hat Enterprise Linux (RHEL) distributions. Our *nix services include DNS, NIS, Unix mail, access to personal MySQL databases, class and research project Oracle databases, and both Linux and Unix servers for secure shell sessions.
Programs
Bachelor of Science in Computer Science Programs
Minor Programs
Bachelor of Science in Computer Engineering
The computer engineering undergraduate degree program is designed to provide both a broad engineering background and comprehensive foundation in the technical principles underlying the computer area. Students develop a background through course work in mathematics, the basic sciences, and general engineering. The technical core consists of courses from electrical and computer engineering to address hardware aspects of computer engineering and course work from computer science to address software aspects. A grade of C or better must be earned in computer science required courses. In addition, course work in General Education ways of knowing and communication skills is required to assure a well rounded program of study. Specific degree requirements can be found listed under the Department of Electrical and Computer Engineering.
Due to limited laboratory facilities, admission to the computer engineering program is on a competitive basis. Students should apply to the Department of Electrical and Computer Engineering.
Bachelor of Science in Engineering Technology with a Major in Electrical Engineering Technology-Computer Engineering Technology
The goal of the electrical engineering technology-computer engineering technology program is to prepare students for employment in areas defined by the rapidly expanding opportunities of computer applications. With new hardware and software products being introduced monthly, students who wish to succeed in this field should develop a background in both software and hardware. This program provides such a background by combining a grounding in basic theory with hands-on, application courses selected from the disciplines of Computer Science and Electrical Engineering Technology. The curriculum emphasizes practical design and the utilization of systems and hardware. Areas of study include network design and management, modern communication systems, microcomputer systems and applications, and application program development. A grade of C or better must be earned in computer science required courses. Specific degree requirements can be found listed under the Department of Engineering Technology.
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 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.