CS 5253: Parallel Functional Programming (3 Units)
Teaches students how reusable parallel programs can be designed, implemented, optimized, validated, maintained, and enhanced by applying effective functional and object-oriented development practices, patterns, and frameworks.
CS 5254: Concurrent Object-Oriented Programming (3 Units)
Provides students with a deep understanding of conceptual and practical aspects of designing, implementing, and debugging concurrent software apps using patterns and frameworks related to Java and Android.
CS 5260: Artificial Intelligence (3 Units)
Principles and programming techniques of artificial intelligence. Strategies for searching, representation of knowledge and automatic deduction, learning, and adaptive systems. Survey of applications.
CS 5262: Foundations of Machine Learning (3 Units)
Machine learning, especially deep learning, is the key innovation in data science, computer science, and statistics. This class is a graduate course in machine learning, addressing both the practice of and the theories underlying machine learning. The class will briefly cover topics including the practice of machine learning, regression, classification, tree-based methods, feature engineering, mixture models, and introduce theoretical foundations of neural networks and deep learning.
CS 5278: Principles of Software Engineering (3 Units)
The nature of software. The object-oriented paradigm. Software life-cycle models. Requirements, specification, design, implementation, documentation, and testing of software. Object-oriented analysis and design. Software maintenance.
CS 5279: Software Engineering Projects (3 Units)
Students work in teams to specify, design, implement, document, and test a nontrivial software project. The use of CASE (Computer Assisted Software Engineering) tools is stressed.
CS 5283: Computer Networks (3 Units)
Computer communications. Network (Internet) architecture. Algorithms and protocol design at each layer of the network stack. Cross-layer interactions and performance analysis. Network simulation tools. Lab and programming assignments.
CS 5287: Principles of Cloud Computing (3 Units)
Principles of Cloud Computing. Fundamental concepts of cloud computing, different service models, techniques for resource virtualization, programming models, management, mobile cloud computing, recent advances, and hands-on experimentation.
CS 5288: Web-Based System Architecture (3 Units)
Web-based System Architecture. Core concepts necessary to architect, build, test, and deploy complex web-based systems; analysis of key domain requirements in security, robustness, performance, and scalability.
CS 6315: Automated Verification (3 Units)
Systems verification and validation, industrial case studies, propositional and predicate logic, syntax and semantics of computational tree and linear time logics, binary decision diagrams, timed automata model and real-time verification, hands-on experience with model checking using the SMV, SPIN and UPPAAL tools, and state reduction techniques.
CS 6381: Distributed Systems Principles (3 Units)
Techniques and mechanisms in distributed system design, such as logical clocks, distributed consensus, distributed mutual exclusion, consistency models, fault tolerance and paradigms of communication. Contemporary distributed system case studies and open challenges.
CS 6385: Advanced Software Engineering (3 Units)
An intensive study of selected areas of software engineering. Topics may include CASE tools, formal methods, generative techniques, aspect-oriented programming, metrics, modeling, reuse, and software architecture.
CS 6387: Topics in Software Engineering: Security (3 Units)
Topics may include empirical software engineering and open-source software engineering.
CS 6388: Model-Integrated Computing (3 Units)
Model-Integrated Computing. Problems of designing, creating, and evolving information systems by providing rich, domain-specific modeling environments including model analysis and model-based program synthesis tools. Students are required to give a class presentation and prepare a project.
CS 8395: Special Topics: Digital Forensics (3 Units)
This course is a thorough exploration of the science of digital forensics. This course will include topics in OS forensics, mobile forensics, network forensics, forensic science theory, legal issues, etc. Standards and best practices in forensic science, such as NIST standards, will be covered. Numerous hands-on labs will be included that require application of theory, development of forensic arguments, and production of forensic papers.
CS 8395: Special Topics: Microservices (3 Units)
Coverage of software techniques, methods, and tools used to develop large-scale mobile cloud computing systems and applications, including topics on API design, scalability, concurrency, parallelism, persistence, microservices, resilience, quality assurance, and deployment.
CS 8395: Special Topics: Quantum Computing (3 Units)
This course is an introduction to quantum computing. Fundamental concepts including quantum hardware, logical qubits, quantum algorithms, and quantum programming will be covered. While prior course work in linear algebra and physics would help a student, they are not required.