Graduate Programs
Courses
Computer Science
CSCI-A courses are non-major courses and are listed first regardless of the course level.
- CSCI-A 504 Introductory C++ Programming (2 cr.) Programming experience recommended. Topics include aspects of C++ that are not object-oriented, basic data structures, standard libraries, and Unix tools for project management. Credit given for only one of CSCI-A 504, A 304, A 597, A 592, C 212, or BUS-K 201.
- CSCI-A 506 Object-Oriented Programming in C++ (2 cr.) CSCI-A 201, A 304, A 504, or A 597 recommended. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates and exceptions. Credit given for only one of CSCI-A 506, A 306, A 202, A 592, A 598, or C 212.
- CSCI-A 521 Computing Tools for Scientific Research (3 cr.) MATH-M 118 or higher and MATH-M 211 recommended. Introduction to computer-based tools useful for analysis and understanding of scientific data. Basic methods of computation, data processing, and display systems such at Matlab combined with elementary practical C/C++ programming. Techniques to support customized scientific research tasks, with particular emphasis on biological, neural, and behavioral sciences. Lecture and laboratory.
- CSCI-A 538 Network Technologies and Systems Administration (3 cr.) CSCI-A 110, EDUC-W 200, or equivalent computer literacy recommended. Introduction to network principles and current network technology, both hardware and software. Network administration tools and techniques. Laboratory provides practical experience. Credit not given for CSCI-A 547 and A 538.
- CSCI-A 541 Computing and Technology Bootcamp (3 cr.) Basic mathematical and scientific sophistication, on par with basic introductory college level math and science courses recommended. A high-level introduction to the many information technologies that underlie modern society for students with non-technical backgrounds. Examples include basic ideas in computing, networking, embedded systems, GPS, SCADA , algorithms and machine learning. After completion, students should be able to partake in many high-level discussions with technical leads.
- CSCI-A 542 Technical Foundations of Cybersecurity (3 cr.) P: CSCI-A 541. This course will enable students to build a technical foundation in cybersecurity by introducing concepts in secure systems design, cryptography, operating systems security, software security, and computer network security. The course will focus on developing a theoretical understanding of cybersecurity concepts and the ability to apply these concepts in practice.
- CSCI-A 546 User-Interface Programming (3 cr.) CSCI-A 201, A 202, A 306, C 212, A 506, A 597, A 598, or equivalent experience recommended. Learn to prototype and build graphical user interfaces for computer applications. Contemporary software design methodology. Students design and implement prototype interfaces to applications provided by the instructor. Extensive use will be made of both commercial and experimental software tools. Credit not given for both CSCI-A 546 and A 346.
- CSCI-A 548 Mastering the World-Wide Web (3 cr.) Two semesters of programming experience or equivalent, and some knowledge of operating systems recommended. Project-oriented course leading to ability to maintain a web site with full functionality. Topics include background on internet network protocols and programming, web server administration, advanced web design and authoring, web protocols, interfacing services into the web. Credit not given for both CSCI-A 548 and A 348.
- CSCI-A 581 Introduction to Computers and Programming (3 cr.) This course is an introduction, broadly, to algorithmic thinking and, specifically, to programming. It teaches the basics of programming using real world applications in natural, physical and social sciences. Students will develop ability to program by identifying problems in real world and then creating a program that solves the problem. Credit given for only one of CSCI-A 581, A 591, C 200, C 211, H 200, or H 211.
- CSCI-A 590 Topics in Programming (1-2 cr.) Eight-week courses designed to provide foundations for using modern programming tools for applications and web development. May be repeated for a maximum of 6 credit hours.
- CSCI-A 591 Introduction to Computer Science (3 cr.) A first course in computer science for those intending to take advanced computer science courses. Introduction to programming and to algorithm design and analysis. Using the Scheme programming language, the course covers several programming paradigms. Lecture and laboratory. Credit given for only one of CSCI-A 581, A 591, C 200, C 211, H 200, or H 211.
- CSCI-A 592 Introduction to Software Systems (3 cr.) Programming experience recommended. Design of computer software systems and introduction to programming. Topics include the C++ programming language and its data structure facilities; building and maintaining large projects; shell tools and system calls. Introduction to object-oriented programming. Lecture and laboratory. Credit given for only one of CSCI-A 592, C 212, H 212, or ENGR-E 111.
- CSCI-A 593 Computer Structures (3 cr.) CSCI-A 592 recommended. Structure and internal operation of computers. The architecture and assembly language programming of a specific computer are stressed, in addition to general principles of hardware organization and low-level software systems. Lecture and laboratory. May be applied toward the Ph.D. minor. Credit given for only one of CSCI-A 593, C 335, or H 335.
- CSCI-A 594 Data Structures (3 cr.) CSCI-C 241, CSCI-A 592 and A 593 recommended. Systematic study of data structures encountered in computing problems; structure and use of storage media; methods of representing structured data; and techniques for operating on data structures. Lecture and laboratory. May be applied toward the Ph.D. minor. Credit given for only one of CSCI-A 594, C 343, or H 343.
- CSCI-A 595 Fundamentals of Computing Theory (3 cr.) CSCI-C 212 and C 241 recommended. Fundamentals of formal language theory, computation models and computability, the limits of computability and feasibility, and program verification. May be applied toward the Ph.D. minor, graduate credit available for CS M.S. candidates with special permission. Credit not given for both CSCI-A 595 and B 401.
- CSCI-A 596 Programming Languages (3 cr.) CSCI-A 593 and A 594 recommended. Systematic approach to programming languages. Relationships among languages, properties and features of languages, and the computer environment necessary to use languages. Lecture and laboratory. May be applied toward the Ph.D. minor. Credit given for only one of CSCI-A 596, B 521 or C 311.
- CSCI-A 597 Introduction to Programming I (3 cr.) Fundamental programming constructs, including loops, arrays, classes, and files. General problem-solving techniques. Emphasis on modular programming, user-interface design, and developing good programming style. Not intended for computer science majors. Credit not given for both CSCI-A 597 and A 201.
- CSCI-A 598 Introduction to Programming II (3 cr.) CSCI-A 597, A 201, A 504, or A 304 recommended. Advanced programming techniques: user-defined functions and types, recursion versus iteration, parameter-passing mechanisms. Classic abstract data types and algorithms. Programming style. Object-oriented programming. Not intended for computer science majors. Credit not given for both CSCI-A 598 and A 202.
- CSCI-B 501 Theory of Computing (3 cr.) CSCI-C 241 and CSCI-C 343 recommended. Deterministic and nondeterministic automata, regular expressions, pumping lemmas; context-free languages, parsing, pushdown automata, context-sensitive languages, LBA, LR(k) languages, closure and decidability of language classes. Turing machines, random access machines, grammars, general recursive functions, equivalence of computation models, universal machines, relative computing. Unsolvability, semi-recursive sets, Rice's Theorem. Space and time complexity, NP completeness.
- CSCI-B 502 Computational Complexity (3 cr.) P: CSCI-B 501. Study of computational complexity classes, their intrinsic properties, and relations between them. Topics include time and space computational complexity, reducibility and completeness of problems within complexity classes, complexity of optimization problems, complexity hierarchies, relativization of the P =? NP conjecture, parallel computation models and the class NC.
- CSCI-B 503 Algorithms Design and Analysis (3 cr.) CSCI-C 343 recommended. Models, algorithms, recurrences, summations, growth rates. Probabilistic tools, upper and lower bounds; worst-case and average-case analysis, amortized analysis, dynamization. Comparison-based algorithms: search, selection, sorting, hashing. Information extraction algorithms (graphs, databases). Graphs algorithms: spanning trees, shortest paths, connectivity, depth-first search, breadth-first search. Credit not given for both CSCI-B 503 and B 403.
- CSCI-B 504 Introduction to Cryptography (3 cr.) Familiar with basic algebra, combinatorics and probability theory recommended. The course provides students with a foundational introduction to cryptography. Students learn the basic primitives used in cryptography such as symmetric encryption, public-key encryption, message authentication codes, digital signatures, cryptographic hashes and related material. Computational aspects of modern cryptography are stressed, as are appropriate security models, and computational security reductions.
- CSCI-B 505 Applied Algorithms (3 cr.) The course studies the design, implementation, and analysis of algorithms and data structures as applied to real world problems. The topics include divide-and-conquer, optimization, and randomized algorithms applied to problems such as sorting, searching, and graph analysis. The course teaches trees, hash tables, heaps, and graphs.
- CSCI-B 510 Introduction to Applied Logic (3 cr.) Structures: relations between structures, term structures. Description: notation and meaning, substitution operations, first order formulas, database languages, program verification conditions, semantics valuation, normal forms, quantifier reduction, axiomatic theories. Proof: resolution, sequential calculi, natural deduction, automated theorem proving, semantic completeness. Limits of formalization: compactness, undecidability of truth, undecidability of canonical theories, non-formalizability of database theory.
- CSCI-B 521 Programming Language Principles (3 cr.) Systematic approach to programming languages. Relationships among languages, properties and features of languages, the computer environment necessary to support language execution. Credit given for only one of CSCI-B 521, A 596 or C 311
- CSCI-B 522 Programming Language Foundations (3 cr.) P: CSCI-B 510 and B 521. Introduction to denotational, operational, and axiomatic approaches to programming language semantics. Semantic analysis of major programming language features. Logics of programs.
- CSCI-B 524 Parallelism in Programming Languages and Systems (3 cr.) P: CSCI-B 521 and P 536. Fundamentals of parallel computation, with an emphasis on parallel programming methodology and programming languages. Topics include: Parallel algorithms. Major paradigms for parallel software construction: data parallelism, task/thread parallelism and CSP. Compiling programs for parallel computers.
- CSCI-B 534 Distributed Systems (3 cr.) P: CSCI-P 536. B534 is a balanced treatment of fundamentals and practice of distributed systems. The foundational models, algorithms, and principles upon which distributed systems are based are studied in detail. These fundamentals are placed in the context of practical implementations by means of reading and critical analysis of research papers. Credit given for only one of CSCI-B 534 , P 434, ENGR-E 410, or E 510.
- CSCI-B 541 Hardware System Design I (3 cr.) CSCI-C 335 and C-343 recommended. Structured approach to hardware design, exposing performance factors as well as target technologies and their influence on the design process. Basic training in the use of design and simulatin software. Lecture and laboratory. Credit not given for both CSCI-B 541 and B 441.
- CSCI-B 543 Computer Architecture (3 cr.) CSCI-C 335 and C 343 recommended. Fundamentals of computer design, instruction processing and performance analysis. Architecture of single-processor systems, focusing on pipelining, memory and memory hierarchies, and interconnect technology. Exploration of architecture classes such as high-performance multiprocessors, massively parallel computers, embedded systems. Credit not given for both CSCI-B 543 and B 443.
- CSCI-B 544 Security for Networked Systems (3 cr.) This course is an extensive survey of system and network security. Course materials cover the threats to information confidentiality, integrity and availability and the defense mechanisms that control such threats. The course provides the foundation for more advanced security courses and hands-on experiences through course projects.
- CSCI-B 546 Malware Epidemic: Threat and Defense (3 cr.) One semester of programming or equivalent recommended. This course looks at systems and protocols, how to design threat models for them and how to use a large number of current security technologies and concepts to block specific vulnerabilities. Students will use a large number of systems and programming security tools in the laboratories.
- CSCI-B 547 Systems and Protocol Security and Information Assurance (3 cr.) Some previous programming background and general computer networking and operating systems literacy recommended. This course covers the design and analysis of secure systems, including identifying security goals and risks, threat modeling, defense, integrating different technologies to achieve security goals, developing security protocols and policies, implementing security protocols and secure coding. Some real world scenarios that have many security requirements will be studied.
- CSCI-B 548 Privacy in Pervasive Computing (3 cr.) This course prepares graduate students towards a successful research career in wearable and sensor-based computing. This course combines both lectures on the research process and student-led round-table discussions of seminal and influential papers in the field.
- CSCI-B 551 Elements of Artificial Intelligence (3 cr.) CSCI-C 343 recommended. Introduction to major issues and approaches in artificial intelligence. Principles of reactive, goal-based, and utility-based agents. Problem-solving and search. Knowledge representation and design of representational vocabularies. Inference and theorem proving, reasoning under uncertainty, and planning. Overview of machine learning.
- CSCI-B 552 Knowledge Based Artificial Intelligence (3 cr.) P: CSCI-B 551. Knowledge-based methods for artificial intelligence systems: knowledge representation, organization, and application. Typical content includes: Principles of memory organization, indexing and retrieval. Memory-based, analogical, and case-based reasoning. Applications to understanding, explanation, planning, and advisory systems.
- CSCI-B 553 Neural and Genetic Approaches to Artificial Intelligence (3 cr.) P: CSCI-B 551. Approaches to the design of intelligent systems inspired by nervous systems, evolution, and animal behavior. Distributed and perceptually grounded representations. Temporal processing. Perception and action. Genetic search. Unsupervised and reinforcement learning. Comparison of symbolic, subsymbolic, and hybrid approaches to intelligence.
- CSCI-B 554 Probabilistic Approaches to Artificial Intelligence (3 cr.) CSCI-B 403, MATH-M 301 and MATH-M 365 recommended. Theory and practice of computational and mathematical foundations of probabilistic models for artificial intelligence and other areas of computing. Topics include: random variables and independence; graphical models including Bayesian and Markov networks; exact and approximate inference algorithms; constrained, unconstrained and stochastic optimization algorithms; parameter and structure estimation; temporal models; applications.
- CSCI-B 555 Machine Learning (3 cr.) Theory and practice of constructing algorithms that learn functions and choose optimal decisions from data and knowledge. Topics include: mathematical/probabilistic foundations, MAP classification/regression, linear and logistic regression, neural networks, support vector machines, Bayesian networks, tree models, committee machines, kernel functions, EM, density estimation, accuracy estimation, normalization, model selection.
- CSCI-B 557 Music Information Processing: Audio (3 cr.) This course discusses music analysis and processing problems that use sampled audio as the primary data representation. Digital signal processing is discussed, along with filtering and its relationship to Fourier techniques. Applications considered include score following, automatic music transcription and annotation from audio, musical accompaniment systems, and audio effects.
- CSCI-B 561 Advanced Database Concepts (3 cr.) CSCI-C 241, C 335 and C 343 recommended. Database models and systems: especially relational and object-oriented; relational database design theory; structures for efficient data access; query languages and processing; database applications development; views. Transaction management: concurrency and recovery. Credit not given for both CSCI-B 561 and B 461.
- CSCI-B 563 Bioinformatics Algorithms (3 cr.) Basic undergraduate algorithms and one programming class or equivalent programming experience in C/C++, Java, or Python recommended. No biology background will be assumed. This course is on algorithmic techniques for solving problems in molecular biology, genetics and genomics. It covers basic algorithmic/combinatorial optimization techniques for alignment, mapping, search and assembly of genomes, resolving mapping ambiguity and genotyping, modeling evolution of genomes (e.g. cancer genomes) and detecting structure and interaction partners of biomolecules.
- CSCI-B 565 Data Mining (3 cr.) Algorithmic and practical aspects of discovering patterns and relationships in large databases. The course also provides hands-on experience in data analysis, clustering and prediction. Topics include: data preprocessing and exploration, data warehousing, association rule mining, classification and regression, clustering, anomaly detection, human factors and social issues in data mining.
- CSCI-B 581 Advanced Computer Graphics (3 cr.) CSCI-C 343, MATH-M 301, or M 303 recommended. Introduction to graphics hardware and software. Two-dimensional graphics methods, transformations, and interactive methods. Three-dimensional graphics, transformations, viewing geometry, object modeling and interactive manipulation methods. Basic lighting and shading. Video and animation methods. Credit not given for both CSCI-B 581 and B 481.
- CSCI-B 582 Image Synthesis (3 cr.) P: CSCI-B 581. MATH-M 215 recommended. Raster image display: color theory, gamma correction, and filtering. Advanced shading methods: local illumination models, global illumination models. Surface display, including ray tracing and Z-buffering. Solid modeling; spline surfaces, CSG, superquadrics, and deformations. Scientific visualization: isosurfaces and volume rendering.
- CSCI-B 590 Topics in Computer Science (1-6 cr.) Special topics in computer science. May be repeated 2 times for a maximum of 6 credit hours.
- CSCI-B 599 Teaching in Computer Science (1 cr.) General principles of teaching and practical experiences that relate to teaching computer science. An important feature of the course is the micro-teaching, in which each participant prepares and delivers short lectures to the seminar participants. Each presentation is followed by critical analysis and discussion.
- CSCI-B 603 Advanced Algorithms Analysis (3 cr.) P: CSCI-B 503. Advanced topics in analysis of algorithms, including fast algorithms for classical problems, lower bounds results, and statistical behavior.
- CSCI-B 607 Philosophy of Computation (3 cr.) Permission of instructor. Critical examination of the conceptual foundations of computing. Several different views assessed with respect to conceptual, explanatory, and empirical criteria. Primary focus on formal symbol manipulation, recursive function theory, effective computability, computational complexity, digitality, and information processing. Some non-standard approaches also considered: connectionism, dynamics, and artificial life.
- CSCI-B 609 Topics in Algorithms and Computing Theory (1-6 cr.) Special topics in algorithms and computing theory. May be repeated 2 times for a maximum of 6 credit hours.
- CSCI-B 621 Advanced Concepts in Programming Languages (3 cr.) P: CSCI-B 521. Discussion of current issues in the design of programming languages. Modularity, abstraction, and static analysis. Applicative and nonapplicative models. Single and multiple processing.
- CSCI-B 622 Programming Language Type Systems (3 cr.) P: CSCI- B 521. Theoretical foundations and engineering techniques for modern type systems, focusing on polymorphism and subtyping in typed lambda-calculi; applications, including type systems for objects, abstract data types, and modules; issues in type checker implementation and polymorphic type inference.
- CSCI-B 629 Topics in Programming Languages (1-6 cr.) Special topics in programming languages. May be repeated 1 time for a maximum of 6 credit hours.
- CSCI-B 639 Topics in Software (1-6 cr.) Special topics in software systems. May be repeated 2 times for a maximum of 12 credit hours.
- CSCI-B 644 Very Large Scale Integration (3 cr.) P: CSCI-B 541. Basic theory and practice required to convert hardware algorithms and architecture to silicon structures. Use of state-of-the-art design tools for integrated circuits.
- CSCI-B 649 Topics in Systems (1-6 cr.) Special topics in systems. May be repeated 1 time for a maximum of 12 credit hours.
- CSCI-B 651 Natural Language Processing (3 cr.) P: CSCI-B 551, B 552, or B 553. Theory and methods for natural language processing. Algorithms for sentence parsing and generation. Context-free and unification grammars. Question-and-answer systems. Analysis of narratives. Finite-state approaches to computational phonology and morphology. Machine translation. Machine learning of natural language. Speech recognition. Neural-network and statistical alternatives to symbolic approaches.
- CSCI-B 652 Computer Models of Symbolic Learning (3 cr.) P: CSCI-B 552. Symbolic artificial intelligence methods for learning. Inductive and explanation-based generalization. Failure-driven learning. Case-based learning. Typical content includes: Operationality of explanations and utility of learning. Goal-driven learning. Criteria for when, what, and how to learn. Learning in integrated architectures.
- CSCI-B 656 Web Mining (3 cr.) Machine learning techniques to mine the Web and other unstructured/semistructured, hypertextual, distributed information repositories. Crawling, indexing, ranking and filtering algorithms using text and link analysis. Applications to search, classification, tracking, monitoring, and Web intelligence. Group project on one of the topics covered in class.
- CSCI-B 657 Computer Vision (3 cr.) P: CSCI-B 551. Concepts and methods of machine vision as a branch of artificial intelligence. Basics of digital image processing. Local and global tools for deriving information from image data. Model-based object recognition and scene understanding.
- CSCI-B 659 Topics in Artificial Intelligence (1-6 cr.) Special topics in artificial intelligence. May be repeated for a maximum of 12 credit hours.
- CSCI-B 661 Database Theory and Systems Design (3 cr.) P: CSCI-B 561. Theory and methods for natural language processing. Algorithms for sentence parsing and generation. Context-free and unification grammars. Question-and-answer systems. Analysis of narratives. Finite-state approaches to computational phonology and morphology. Machine translation. Machine learning of natural language. Speech recognition. Neural-network and statistical alternatives to symbolic approaches.
- CSCI-B 662 Database Systems and Internal Design (3 cr.) P: CSCI-B 561. This course deals with database management systems and their modern applications. We will discuss various issues to be considered and design decisions to be made in these systems. Topics include storage management, access methods, query processing and optimization strategies, concurrently control techniques, data warehousing, data mining, semi-structured data management, etc.
- CSCI-B 665 Software Engineering Management I (3 cr.) P: CSCI-B 561 or BUS-S 560. Symbolic artificial intelligence methods for learning. Inductive and explanation-based generalization. Failure-driven learning. Case-based learning. Typical content includes: operationality of explanation and utility of learning. Goal-driven learning. Criteria fo when, what, and how to learn. Learning in integrated architectures.
- CSCI-B 666 Software Management Implementation II (1-3 cr.) P: CSCI-B 665. Continuation of projects from CSCI-B 665. Periodic reports and a final paper required. If taken for two or more credits, an additional project or paper is required.
- CSCI-B 669 Topics in Database and Information Systems (1-6 cr.) Special topics in database and information systems. May be repeated for a maximum of 12 credit hours.
- CSCI-B 673 Advanced Scientific Computing (3 cr.) P: CSCI-P 573. MATH-M 471 recommended. Multiprocessor organization: vectorization, memory organization, processor topologies and architectures. Models of parallelism. Programming language and systems for scientific and high performance computing. Environments for interactive scientific experiments and databases. Distributed programming tools. Parallelism in scientific problems: Parallel algorithmic techniques, parallel algorithms and models, parallel performance analysis and debugging.
- CSCI-B 679 Topics in Scientific Computing (1-6 cr.) Special topics in scientific computing. May be repeated 1 time for a maximum of 12 credit hours.
- CSCI-B 689 Topics in Graphics and Human Computer Interaction (1-6 cr.) Special topics in graphics and human computer interaction. May be repeated for a maximum of 6 credit hours.
- CSCI-B 690 Research Topics in Computer Science (1-6 cr.) Research topics in computer science. May be repeated 2 times for a maximum of 6 credit hours.
- CSCI-C 532 Navy Cyber Operations (3 cr.) Students in Navy MSc. Introduce students to basic computing and networking infrastructure, the ubiquity of computing and networks in the modern battlefield, and core principles of cybersecurity. Understanding digital terrain, its relation to traditional battlefields, and intelligence and joint targeting. All previous topics will be combined to discuss CyberOperation Planning, attacking and defending.
- CSCI-C 533 Applied Secure Networking Operations and Forensics (3 cr.) Students in Navy MSc. Secure network and systems operations, defense and forensics. Students will explore a variety of topics such as threat analysis, victim categorization, and mitigation effectiveness. Students will practice hands¬on design, deployment, and use, of network attack monitoring and mitigation capabilities. Network and systems forensics techniques and tools will be introduced.
- CSCI-P 515 Specification and Verification (3 cr.) CSCI-C 311 recommended. Tools and techniques for rigorous reasoning about software and digital hardware. Safety, reliability, security, and other design-critical applications. Decision algorithms, projects involving the use of automated reasoning, such as model checkers, theorem provers, and program transformation. Credit not given for both CSCI-P 515 and P 415.
- CSCI-P 523 Programming Language Implementation (3 cr.) P: CSCI-B 521. Implementation of traditional and nontraditional computer programming languages. Compilation, including lexical analysis, parsing, optimization, code generation, and testing. Run-time support, including run-time libraries, storage management, input-output. Comparison of implementation techniques. Extensive laboratory exercises. Credit given for only one of CSCI-P 523, P 423, ENGR-E 313, or E 513.
- CSCI-P 532 Object-Oriented Software Development (3 cr.) Proficiency in Java recommended. This course will help turn motivated students into superior contributors to any small- to mid-sized commercial or open-source software project. It takes a hands-on, learning-by-doing approach. Students are introduced to design patterns, tools, and teamwork strategies from the first assignment to the last project.
- CSCI-P 535 Pervasive Computing (3 cr.) Object oriented programming recommended. Topics in pervasive computing, such as: sensors, mobility, tangibles, ambient displays, middleware, location and context-awareness. User-centered design methods, such as: requirements gathering, design, prototyping and evaluation. Labs cover current technologies, such as sensors and mobile devices. Lecture and laboratory.
- CSCI-P 536 Advanced Operating Systems (3 cr.) CSCI-C 335 and C 343 recommended. Advanced topics in operating systems, such as: multi-tasking, synchronization mechanisms, distributed system architecture, client-server models, distributed mutual exclusion and concurrency control, agreement protocols, load balancing, failure recovery, fault tolerance, cryptography, multiprocessor operating systems. Credit given for only one of CSCI-P 536, P 436, ENGR-E 319, or E 519.
- CSCI-P 538 Computer Networks (3 cr.) Operating systems or networking course recommended. Layered TCP/IP architecture. LAN technologies (Ethernet, wireless, token ring). Switching. Internet addressing (IPv4, IPv6). Routing protocols. Congestion control (TCP, UDP). Applications (DNS, HTTP, peer-to-peer networks). Selection of topics including DHCP, ICMP, VPNs, multicast, security. Credit given for only one of CSCI-P 538, P 438, ENGR-E 318, or E 518.
- CSCI-P 542 Hardware System Design II (3 cr.) P: CSCI-B 541. Lab fee. Structured approach to hardware design, exposing performance factors as well as target technologies and their influence on the design process. Basic training in the use of design and simulation software. Lecture and laboratory.
- CSCI-P 545 Embedded and Real-Time Systems (3 cr.) Any 400-level “systems” course (middle digit 3 or 4) recommended. Design and implementation of purpose-specific, locally distributed software systems. Models and methods for time-critical applications. Real-time operating systems. Testing, validation, and verification. Safety-critical design. Related topics, such as resiliency, synchronization, sensor fusion, etc. Lecture and laboratory.
- CSCI-P 556 Applied Machine Learning (3 cr.) The main aim of the course is to provide skills to apply machine learning algorithms on real applications. We will consider fewer learning algorithms and less time on math and theory and instead spend more time on hands-on skills required for algorithms to work on a variety of data sets.
- CSCI-P 565 Software Engineering I (3 cr.) CSCI-C 343 recommended. Analysis, design and implementation of software systems. Requirements specification: data and process modeling. Software design methodologies. Software quality assurance: testing and verification. Software development processes. Credit not given for both CSCI-P 565 and P 465.
- CSCI-P 566 Software Engineering II (3 cr.) P: CSCI-B 561. Analysis, design and implementation of software systems. Requirements specification: data and process modeling. Software design methodologies. Software quality assurance: testing and verification. Software development processes. Credit not given for both CSCI-P 566 and CSCI-P 466.
- CSCI-P 573 Scientific Computing (3 cr.) CSCI-C 212, MATH-M 301 or M 303 and M 343 recommended. For students from all scientific, engineering, and mathematical disciplines, this course provides an overview of computer hardware, software, and numerical methods that are useful on scientific workstations and supercomputers. Topics include high-performance computer architectures, software tools and packages, characteristics of numerical methods in common use, graphical presentation of results, and performance analysis and improvement.
- CSCI-P 632 Object-Oriented Software Management (3 cr.) Permission of instructor. This course will help turn motivated students into superior managers of any small- to mid-sized commercial or open-source software project. It takes a hands-on, learning-by-doing approach. Students are introduced to the main management concerns of managing smallish design and development teams.
- CSCI-T 599 Topics in Computer Science Education (1-6 cr.) Special topics in Computer Science education. May be repeated 2 times for a maximum of 12 credit hours.
- CSCI-Y 790 Graduate Independent Study (1-6 cr.) Independent study under the direction of a faculty member, culminating in a written report. The different departmental options for independent study are: Research and Reading, Software System Development, Master's Research Project, Master's Software Project, and a University Master's Thesis. May be repeated for a maximum of 9 credit hours.
- CSCI-Y 791 Graduate Independent System Development (1-6 cr.) System development culminating in written report and a publicly available system. May be repeated for credit.
- CSCI-Y 792 Master's Thesis (1-6 cr.) Readings and research under the supervision of the master's thesis advisor, leading to a thesis at a level admissible as a departmental technical report. May be repeated for a maximum of 6 credit hours of CSCI-Y 792 and Y 793.
- CSCI-Y 793 Master's Software Thesis (1-6 cr.) A major software development project, possibly performed jointly with other students, documented in the public domain and with final approval by three graduate faculty. May be repeated for a maximum of 6 credit hours of CSCI-Y 792 and Y 793.
- CSCI-Y 798 Professional Practicum/Internship (0-6 cr.) Current enrollment in graduate degree program in computer science. Provides for participation in graduate level professional training and internship experience.
- CSCI-Y 799 Computer Science Colloquium (1 cr.) A series of talks by researchers in computer science and closely related areas presenting their recent research. A minimum of 75% attendance and course work in the form of a written report based on the talk by any colloquium speaker are required for credit. May be repeated for a maximum of 3 credit hours.