- CAS CS 511: Object-Oriented Software Principles
Specification, programming, and analysis of large-scale, reliable, and reusable Java software using object-oriented design principles. Topics may include object-oriented programming, object models, memory models, inheritance, exceptions, namespaces, data abstraction, design against failure, design patterns, reasoning about objects.
- CAS CS 512: Formal Methods for High-Assurance System Design and Analysis
Introduction to formal specification, analysis, and verification of computer system behavior. Topics include formal logical reasoning about computer programs and systems, automated and semi-automated verification, and algorithmic methodologies for ascertaining that a computing system satisfies its formally specified properties.
- CAS CS 520: Programming Languages
Graduate Prerequisites: CAS CS 320 or CAS CS 332; or consent of instructor.
Concepts of programming languages: data, storage, control, and definition structures; concurrent and distributed programming; functional and logic programming.
- CAS CS 525: Compiler Design Theory
Graduate Prerequisites: CAS CS 320 or CAS CS 332.
Covers the basic mathematical theory underlying the design of compilers and other language processors and shows how to use that theory in practical design situations. Topics may include lexical analysis, parsing, syntax-directed translation, code optimization, and code generation.
- CAS CS 530: Advanced Algorithms
Graduate Prerequisites: CAS CS 330; or consent of instructor.
Studies the design and efficiency of algorithms in several areas of computer science. Topics are chosen from graph algorithms, sorting and searching, NP-complete problems, pattern matching, parallel algorithms, and dynamic programming.
- CAS CS 535: Complexity Theory
Graduate Prerequisites: CAS CS 332.
Covers topics of current interest in the theory of computation chosen from computational models, games and hierarchies of problems, abstract complexity theory, informational complexity theory, time-space trade-offs, probabilistic computation, and recent work on particular combinatorial problems.
- CAS CS 537: Randomness in Computing
Graduate Prerequisites: CASCS330 or CASCS530 is recommended.
Survey of probabilistic ideas of the theory of computation. Topics may include Monte Carlo and Las Vegas probabilistic computations; average case complexity and analysis; random and pseudorandom strings; games and cryptographic protocol; information; inductive inference; reliability;others. (Offered alternate years.)
- CAS CS 538: Fundamentals of Cryptography
Graduate Prerequisites: CAS CS 332.
Basic Algorithms to guarantee confidentiality and authenticity of data. Definitions and proofs of security for practical constructions. Topics include perfectly secure encryption, pseudorandom generators, RSA and Elgamal encryption, Diffie-Hellman key agreement, RSA signatures, secret sharing, block and stream ciphers.
- CAS CS 542: Machine Learning
Introduction to modern machine learning concepts, techniques, and algorithms. Topics include regression, kernels, support vector machines, feature selection, boosting, clustering, hidden Markov models, and Bayesian networks. Programming assignments emphasize taking theory into practice, through applications on real-world data sets.
- CAS CS 548: Advanced Cryptography
Continuation of CAS CS 538. Advanced techniques to preserve confidentiality and authenticity against active attacks, zero-knowledge proofs; Fiat-Shamir signature schemes; non-malleable public-key encryption; authenticated symmetric encryption; secure multiparty protocols for tasks ranging from Byzantine agreement to mental poker to threshold cryptography.
- CAS CS 552: Introduction to Operating Systems
Examines process synchronization; I/O techniques, buffering, file systems; processor scheduling; memory management; virtual memory; job scheduling, resource allocation; system modeling; and performance measurement and evaluation.
- CAS CS 556: Advanced Computer Networks
Strengthens understanding of networking issues and solutions. Relates fundamental concepts, requirements, and design tradeoffs to scheduling, congestion control, routing, traffic management, wireless access and mobility, and applications. Considers how networking may evolve to provide ubiquitous support for quality-of-service in heterogeneous environments.
- CAS CS 558: Computer Networks Security
Introduces basic principles and techniques of building secure information systems. Covers network security, web security, privacy, and basic cryptographic tools (symmetric and public key cryptography, encryption, key exchange, hashing and signatures). Broader social, legal and political aspects of security addressed.
- CAS CS 562: Advanced Database Applications
Research issues in the design and implementation of modern database systems. Spatial, temporal, and spatiotemporal index structures. Indexing methods for image and multimedia databases and data warehouses. New data analysis techniques for large databases, clustering and rule discovery for very large datasets.
- CAS CS 565: Data Mining
Introduction to data mining concepts and techniques. Topics include association and correlation discovery, classification and clustering of large datasets, outlier detection. Emphasis on the algorithmic aspects as well as the application of mining in real-world problems.
- CAS CS 585: Image and Video Computing
Introduction to images and video as multimedia data types and algorithms for image and video understanding based on color, shading, stereo, and motion. Topics include face recognition, human-computer interfaces, animal and vehicle tracking, and medical image analysis.
- CAS CS 591: Topics in Computer Science
Various issues in computer science.
- GRS CS 640: Artificial Intelligence
Graduate Prerequisites: CAS CS 330 and CAS MA 242; or consent of instructor.
Studies computer systems that exhibit intelligent behavior, in particular, perceptual and robotic systems. Topics include human computer interfaces, computer vision, robotics, game playing, pattern recognition, knowledge representation, planning.
- GRS CS 651: Distributed Systems
Programming-centric introduction to how networks of computers are structured to operate as coherent single systems. Introducing principles of architecture, processes, communications, naming, synchronization, consistency and replication, fault tolerance and security, and paradigms such as web-based, object-based, file system, and consistency-based.
- GRS CS 655: Graduate Computer Networks
Concepts underlying the design of high-performance computer networks and scalable protocols. Topics include Internet design principles and methodology, TCP/IP implementation, packet switching and routing algorithms, multicast, quality of service considerations, error detection and correction, and performance evaluation.
- GRS CS 660: Graduate Introduction to Database Systems
Graduate introduction to database management systems. Examines entity-relationship, relational, and object-oriented data models; commercial query languages: SQL, relational algebra, relational calculus, and QBE; file organization, indexing and hashing, query optimization, transaction processing, concurrency control and recovery, integrity, and security.
- GRS CS 680: Graduate Introduction to Computer Graphics
Introduction to computer graphics algorithms, programming methods, and applications. Focus on fundamentals of two- and three-dimensional raster graphics: scan-conversion, clipping, geometric transformations, and camera modeling. Introduce concepts in computational geometry, computer-human interfaces, animation, and visual realism.
- GRS CS 697: Computer Science Graduate Initiation
Graduate Prerequisites: enrollment in Computer Science Ph.D. or M.A. degree program.
Guidance for graduate students embarking on a research career in computer science. Topics include: research resources and methodologies, the research project development process, refereeing and reviewing, written and oral presentations, the dissertation, writing effective research proposals, ethics, and career planning. (Required of first-year doctoral candidates; open to interested CS Master’s students.)
- GRS CS 698: CS Teaching Fellow Training
Covers topics needed to be successful computer science teaching fellow. These include goals, content, and methods of instruction in computer science, and general teaching/learning issues. Required once of all teaching fellows.
- GRS CS 699: Teaching College Computer Science I
The goals, contents, and methods of instruction in computer science. General teaching-learning issues. Required of all teaching fellows.
- GRS CS 791: Advanced Topics in Computer Science
Seminar restricted to graduate students; topics of mutual interest to faculty and students and not currently available in the graduate program.