# Computer Science Courses

**Csi 500 Operating Systems (3) **

Introduction to operating systems. Topics include processes, concurrency, synchronization, deadlock, memory management, segmentation, paging, replacement policies, caching, interprocess communication, file systems, and protection. Heavy emphasis on abstractions, mechanisms, policies, and design. Prerequisites: Recommended - Csi 333, Mat 367 and one of Csi 404 or CSI 412.

**Csi 501 Computational Linear Algebra, Nonlinear Algebra, and Optimization(3) **

Review of numerical nonlinear algebra for one equation in one unknown. Numerical methods for solving systems of nonlinear equations including Quasi-Newton methods and descent techniques. Numerical solution of systems of linear equations including Gaussian elimination, LUD factorization, and iterative methods. Methods for banded and sparse systems. Approximation by splines. Prerequisite: Csi 401 or equivalent and knowledge of linear algebra, multi-variable calculus and MATLAB required. Only one of Csi 501 or Mat 522 may be taken for credit.

**Csi 502 Computer Graphics (3) **

An introduction to interactive computer graphics including device characteristics, display processors, and file structure. Graphical transformations and transformation systems including perspective transformations and hidden line and surface algorithms are discussed. Selected topics from graphical data structures, graphics systems, video graphics, and microprocessor graphics.

**Csi 503 Algorithms and Data Structures (3) **

Review of discrete mathematics and probability used in algorithm design and analysis. Analyses of divide-and-conquer algorithms, number-theoretical algorithms, and algorithms for sorting, searching, and order statistics. Basic data structures. Basic graph algorithms for topological sorting, constructing minimum cost spanning trees, and shortest path problems. Prerequisites: Departmental examination in discrete mathematics or B+ or above in Csi 521.

**Csi 504 (Ece 532) Advanced Computer Architecture (3) **

The organization of the hardware components of computing systems. Logic design theory review. Comparative survey of instruction set architectures. Design, control, communication, and interconnection strategies for major components such as arithmetic-logic units, control units, CPUs, memories, and I/O systems. Prediction and measurement of performance. Introduction to VLSI, parallel processing, and other current architectural trends. Only one of Csi 504 and Ece 532 may be taken for credit. Prerequisites: Csi 404 or Ece 432 or equivalent.

**Csi 508 Database Systems I (3) **

Basic concepts of a database system, with emphasis on database schema design, data manipulation languages, and query languages. Data models. Relational databases, functional dependencies, normal forms. Relational calculus, relational algebra, SEQUEL, Query-by-Example. The CODASYL network model: data definition and data manipulation languages. Computer project using a database system. User viewpoint of concurrent access. Prerequisites: Departmental examination in discrete mathematics or B+ or above in Csi 521.

**Csi 509 Automata and Formal Languages (3) **

Introduction to the theory of computation. Models of computation including finite automata, push-down automata. Turing machines are examined along with their formal language counterparts such as regular, context-free and phrase-structured languages. Key results such as pumping lemmas and proofs of undecidability are covered. Additional topics may include computational complexity and applications to Computer Science. Prerequisite: Departmental examination in discrete mathematics or completion of Csi 521; a grade of C or better in Csi 311 is recommended.

**Csi 511 Programming Languages and Systems Concepts (3) **

Principles of program design, documentation, and software engineering. Assembly language, machine design, and the fetch-execute cycle at all levels of hardware and software. Introduction to software development, compiler design, operating systems design, and program verification.

**Csi 515 Combinatorial Algorithms (3) **

Efficient algorithms for optimization and search problems involving networks and other combinatorial structures. Efficient solutions from integer, linear, or mixed programming formulations. Application of advanced data structures and algorithm analysis techniques to algorithms from current literature. Prerequisite: Csi 503.

**Csi 516 Computer Communications Networks I (3) **

Advanced computer communication networks. Topics include network architectures and application/protocol design considerations; advanced topics in transport layer protocols; understanding and managing network congestion; advanced topics in routing and router design; software-defined networking; application architectures including peer-to-peer, content delivery networks and cloud. Prerequisites: Recommended - Csi 333, Csi 416 or equivalent, and Mat 367.

**Csi 517 Compiler Design I (3) **

Lexical analysis. Finite-state machines, pushdown machines, and context- free grammars. Top-down and bottom-up parsing. Syntax-directed translation. Prerequisites: Departmental examination in discrete mathematics or B+ or above in Csi 521.

**Csi 518 Software Engineering (4) **

Software engineering principles, the role of abstraction in programming, abstract data types, modularization and module interfaces, specifications, and teamwork. Concurrent programming models, synchronization and interprocess communication. Project work in contemporary concurrent and object-oriented languages. Prerequisites: Graduate CSI standing or permission of instructor.

**Csi 519 Advanced Programming Concepts (3) **

The main focus of the course is on declarative programming and axiomatic semantics. In declarative programming we cover the Functional Programming (FP) and the Logic Programming (LP) paradigms. The emphasis in functional programming will be on programming with higher-order functions, and polymorphism as in the programing language ML. In Logic Programming we cover unification, SLD-resolution and backtracking, as in Prolog. Also covered are Floyd-Hoare axiomatic semantics, and verification of programs. Prerequisite: Extensive programming experience.

**Csi 520 Topics in Distributed and Parallel Computing (3) **

Selected areas relating to multiple processor systems will be examined. The models treated include various communication mechanisms and synchronous and asynchronous operation. Prerequisite: Consent of instructor.

**Csi 521 Discrete Mathematics with Applications (3) **

Deeper coverage of the content of Csi 210 at the graduate level. Proofs by induction, recursive definitions, and combinatorial analysis. Introduction to recurrence equations, graph theory, and abstract algebra. Applications to proofs, correctness, and analysis of combinatorial and algebraic algorithms. Prerequisite: Csi 210 is recommended, or graduate standing.

**Csi 522 (Ece 520) Intro to VLSI (3)**

An introduction to Very Large Scale Integrated (VLSI) circuit design. The device, circuit, and system aspects of VLSI design are covered in an integrated fashion. Emphasis is placed on NMOS, PMOS and CMOS technology. Using transistors, simple gates such as XOR, AND, OR, AOI, OAI, and flip flops, are constructed and simulated using Cadence Design Systems tools. Verilog-A is used to provide input vectors and test the correctness of the output. Prerequisites: Either Ece 231 and Ece 300 or Csi 404 and Phy 415, or equivalent.

**Csi 523 Computational Geometry (3) **

Efficient algorithms for geometric problems. Paradigms of divide and conquer, space sweep, locus computation, prune and search, transformation, and random sampling. Problems such as finding convex hulls, line intersections, Voronoi diagrams, and nearest neighbors are studied together with selections from research literature. Lower bound proofs, examples of parallel algorithms, and some implementation issues. Prerequisites: Csi 503, Departmental examination in discrete mathematics or B+ or above in Csi 521.

**Csi 524 Computer Security (3)**

This course introduces students to the fundamental and technical problems surrounding computer security. The course reviews basic security concepts, design principles, and mechanisms. Throughout the course and based on hands-on exercises, students will develop an in-depth understanding of several vulnerabilities and corresponding countermeasures in system security, web security, and network security areas. Topics include privilege escalation, buffer overflow, race condition, SQL injection, cross-site scripting, packet spoofing, TCP attacks, and firewalls.

**Csi 525 Mobile Wireless Networks (3)**

This course will focus on the state of the art of mobile wireless networks. We will begin with fundamentals in wireless network architectures, protocols and operations. We will learn how are wireless links different than wired and what challenges does this pose to network design and integration. We will study the architecture and operations of networks you use on a daily basis including Wi-Fi 802.11 and mobile cellular networks. We will then transition to our advanced topics by identifying and surveying pitfalls that shape the wireless capacity crunch. We will cover the state of the art of novel technologies for increased network capacity that have the potential to accommodate the multi-zettabytes traffic projections. The students will gain basic practical skills in mobile computing while working on homework assignments. They will also have the opportunity to learn new techniques and concepts while working on an original research project with the end goal of producing real publishable results. In addition, the students will gain experience in efficient reading and understanding of technical papers, and giving public technical presentations. Prerequisite: strong programming skills and ICSI516 or equivalent.

**Csi 526 Cryptography (3)**

The making of ciphers to encode information is the subject of cryptography. This course covers the field from its origins in early historic times through its most up-to-date implementations and uses in digital computers. Various ciphers will be shown and their security assessed. This latter is known as cryptoanalysis - the attempt to break cipher in order to read the underlying message. The course will emphasize how cryptography and cryptoanalysis are intimately related, and how the arms race between the two has motivated progress throughout their history. Prerequisites: Csi 503 and 518.

**Csi 530 Introduction to Mathematical Logic (3) **

Topics include logical validity, logical consequence, computerized theorem proving, compactness, soundness, consistency, completeness, and incmpleteness in the context of propositional logic, first order logic, Frege-Hilbert deduction and computerized Semantic Tableaus deduction. This course will survey Goedel's Completeness and Incompleteness Theorems along with decidability, undecidability and classification of theoretically computable and uncomputable problems. Prerequisites: Departmental examination in discrete mathematics or B+ or above in Csi 521.

**Csi 531 Data Mining (3) **

A course on data mining (finding patterns in data) algorithms and their application to interesting data types and situations. We cover the basic algorithms that address the five core data mining tasks: prediction, classification, estimation, clustering and associations. Course projects will involve advanced topics such as algorithm developments for handling large data sets, sequential, spatial and streaming data. Prerequisite: Recommended - CSI 213 and MAT 220; familiarity with Python (or similar scripting language) as well as elementary statistics (e.g. MAT 370).

**Csi 532 Network Science (3)**

Social networks have become important tools for analyzing a wide array of human behavior and interactions. This course will consider networks arising in many different contexts (e.g. worldwide web, viral marketing, sociology, and epidemiology) and present techniques for analyzing such networks. The goal is to investigate the topology and dynamics of such networks, aiming to better understand the behavior, function, and properties of the underlying systems, as well as to understand how network structure influences its behavior. The course will cover the necessary background material in graph theory. The course will particularly emphasize on students ability to develop critical analytical skills through hands-on exercises of actual networking data analysis tasks. Prerequisites: Csi 403 and Csi 431 or permission of instructor.

**Csi 533 Theory and Practice of Multimedia Computing (3)**

This course lays the foundation for students to conduct research in the area of multimedia computing applications. Multimedia computing involves automated processing and analysis of multiple types of data such as text, images, and videos and audio, in a way that whole is greater than the sum of its parts. The course covers state-of-the-art computational techniques and algorithms for multimedia content processing, compression, networking, fusion, summarization, search and retrieval applicable to different areas such as social media, homeland surveillance and cyber security and privacy. The objective of this course is to prepare students to i) understand the theoretical foundation of multimedia computing, and ii) apply computational tools such as Matlab and Intel OpenCV to the processing and analysis of multimedia data. Prerequisite: Permission of instructor.

**Csi 534 (Ece 531) Reconfigurable Computing (3)**

This course provides a study of FPGA architecture with detailed discussion on opportunities and challenges in this flexible platform. Topics include device architecture, programming languages and models for FPGAs including streaming and I/O, Mapping, Placement and Routing in reconfigurable logic, application design, development, verification and application specific optimization techniques. Prerequisites: Ece 231 or Csi 404.

**Csi 535 Artificial Intelligence I (3) **

A first course in artificial intelligence (AI) introducing basic concepts and techniques. Topics include problem representation, production systems, heuristic search, predicate logic, and structured representation of knowledge. Techniques of sample search and sample problem solving systems are represented. Exercises in a selected AI programming language. Prerequisites: Departmental examination in discrete mathematics or B+ or above in Csi 521.

**Csi 536 Machine Learning (3)**

Machine learning is an important and rapid growing branch of artificial intelligence. The aim of machine learning is to design algorithm that can extract information from environment automatically and improve its ability to perform the intended task. Currently, machine learning has been applied in various fields including engineering, bioinformatics, data mining and neurosciences, to name a few. This course provides a broad introduction to machine learning. Specifically, topics that will be covered in the class may include: numerical optimization methods that are essential for machine learning algorithms dimension reduction methods: principal component analysis & ISOMAP classification methods: linear discriminant analysis, k-nearest neighbor classifier, and logistic regression regression methods: least squares regression, ridge regression, and l1 regularized least squares regression (LASSO) clustering methods: k-means clustering and EM algorithm neural networks support vector machines for classification and regression. Prerequisites: Recommended - basic knowledge of Linear Algebra (AMAT 220 or equivalent), Multivariate calculus (AMAT 214 or equivalent), Discrete probability (AMAT 367 or equivalent), Numerical methods (CSI 401 or equivalent).

**Csi 538 Computational Logic (3) **

This course is on computational issues in logic, with emphasis on automated reasoning and applications. Core material includes propositional logic, satisfiability, the first-order predicate calculus, Skolem functions, Herbrandâ€™s theorem, unification, clausal resolution and paramodulation. Other topics covered may change from year to year. Prerequisites: Departmental examination in discrete mathematics or B+ or above in Csi 521, Csi 503.

**Csi 539 Advanced Data Structures (3) **

Data structures for efficient retrieval in the context of problems relating to aggregation, reporting, quantifier evaluation, and range queries in both dynamic and static settings. K-d trees, k-fold trees, balanced trees, and other advanced topics. Prerequisite: Csi 503.

**Csi 540 High Performance Scientific Computing I (3) **

Introduction to distributed, shared memory, and non-uniform memory advanced architectures, advanced networks, advanced parallel and distributed languages supporting scientific computing. Basic linear algebra algorithms and their relation to decomposition, memory access patterns, and scalability. High-level prototyping languages, experimental methods, performance analysis and polyalgorithms design. Prerequisites: Csi 401 or knowledge of numerical methods; knowledge of Fortran recommended.

**Csi 541 High Performance Scientific Computing II (3) **

Numerical methods of ODE's, PDE's and transform (FFT) suitable for advanced parallel and distributed computing. Explicit versus implicit message generation and processing in distributed computing environments. Advanced experimental methods. High Performance Fortran. Prerequisite: Csi 540

**Csi 542 An Introduction to Quantum Computation, Information, and Simulation (3) **

The main ideas of Quantum Computation, Information, and Simulation are introduced. The course describes what quantum computation is and how it can be used to solve problems faster than classical computers. The challenges of building a quantum computer are addressed. Quantum simulators are explained and built illustrating the vast differences between quantum and classical gates. The course also covers quantum information, explaining how quantum states can be used to program communications. Prerequisites: Csi 403 or Csi 503, knowledge of the use of Boolean Algebra in circuit design, and programming experience.

**Csi 550 Information Retrieval (3)**

This course will discuss theory and practice of searching and retrieval of text and bibliographic information. Topics covered include automated indexing, statistical and linguistic models, text classification, Boolean and probabilistic approaches to indexing, query formulation and output ranking, information routing and filtering, topic detection and tracking, as well as measures of retrieval effectiveness, including relevance, utility, miss/false-alarm. Techniques for enhancing retrieval effectiveness including relevance feedback, query reformulation, thesauri, concept extraction, and automated summarization. Experimental retrieval approaches from Test Retrieval Conferences (TREC); modern internet search engines (Google, AltaVista, etc.) Prerequisites: Csi 210, or Ist 301/601, Ist 602; or Ist 433/633; or Permission of Instructor.

**Csi 551 (Inf 551, Phy 551) Bayesian Data Analysis and Signal Processing (3)**

This course will introduce both the principles and practice of Bayesian and maximum entropy methods for data analysis, signal processing, and machine learning. This is a hands-on course that will introduce MATLAB computing language for software development. Students will learn to write their own Bayesian computer programs to solve problems relevant to physics, chemistry, biology, earth science, and signal processing, as well as hypothesis testing and error analysis. Optimization techniques to be covered include gradient ascent, fixed-point methods, and Markov chain Monte Carlo sampling techniques. Prerequisites: Csi 201, Mat 214, or equivalents, or permission of instructor; Phy 509 or equivalent programming experience with permission of the instructor.

**Csi 552 (Ece 551) Robotics (3)**

An introduction to the fundamentals of robotics, including configuration space, transformation matrix, kinematics, motion planning, and a brief introduction to robot manipulation. In addition to simulation environments, the course uses robot arms and small drones as hardware platforms for students to practice programming and test algorithms. Current final projects include navigating drones through a small field of obstacles and the use of a robot arm to pick up objects. Prerequisites: Mat 220 Linear algebra, Ece/Csi 210, and Ece/Csi 213 or equivalent.

**Csi 553 (Ece 553) Cyber-Physical Systems (3)**

This course is an introduction to the basics of models, analysis tools, and control for embedded systems operating in real time. Topics include models of computation, basic analysis, control, and systems simulation, interfacing with the physical world, mapping to embedded platforms and distributed embedded systems. This course has a lab component. Prerequisites: Ece 233 or Csi 404 and either Ece 371 or APhy 415.

**Csi 580 Computer Science in Scientific Disciplines (3) **

Uses of high speed digital computers in science. Fundamentals of operation of a stored program digital computer. Scientific computer languages. Elementary numerical methods. Algebraic manipulation on a digital computer. May not be used for degree credit in computer science. Prerequisites: Two semesters of calculus.

**Csi 600 Distributed Systems (3) **

Survey of current trends in operating systems with a particular emphasis on distributed systems. Topics include multiprocessor systems, distributed file systems, caching and cache coherency, scaling issues, naming, resource location, process migration, heterogeneity, remote procedure call, communication protocols, authentication, security, and replication. Prerequisite: Csi 500.

**Csi 601 Computability and Undecidability (3) **

Introduction to theory of computability. Topics include formal models of computing systems and their computational equivalence, Church's thesis, recursive and recursively enumerable sets, effective reducibilities, the recursion theorem and the arithmetic hierarchy. Applications to computer science, logic and mathematics. Prerequisite: Csi 509.

**Csi 604 Computers and Computational Intractability (3) **

Introduction to theory of computational complexity. Computational tractable and intractable problems. The complexity classes P, RP, NP, PSPACE, etc. Classification of commonly encountered problems from computer science, mathematics and operations research, emphasizing the NP-complete problems. Techniques for dealing with computational intractability including back-tracking, approximation algorithms, etc. Prerequisite(s): Csi 503 and Csi 509 or consent of instructor.

**Csi 608 Database II (3) **

Systems-oriented aspects of database systems design. Transaction processing, database concurrency control, restart and recovery, distributed databases. Advanced topics of current research interest. Prerequisites: Departmental examination in discrete mathematics or B+ or above in Csi 521.

**Csi 609 Formal Languages and Theory of Computation (3)**

Course topics include finite-state machines, pushdown automata, Turing machines, regular, context- free and phrase-structured languages, parsing algorithms, computability, and complexity. Prerequisites: Csi 409 or Csi 509 and Departmental examination in discrete mathematics or B+ or above in Csi 521.

**Csi 616 Computer Communication Networks II (3) **

Survey of current trends in computer communication networks. Topics include transaction oriented protocols, bulk data transfer protocols, high speed networks, routing, protocol performance and efficiency, security, and authentication. Prerequisite: Csi 516.

**Csi 617 Compiler Design II (3) **

Code generation. Object code optimization and data flow analysis. Run- time implementation of programming languages. Prerequisites: Csi 333.

**Csi 628 Cryptographic Protocols (3)**

This course is on analyzing cryptographic protocols on security issues. The emphasis will be on formal methods, i.e., logically analyzing the protocols to establish the presence or absence of security flaws. The students will read and present latest cutting-edge literature and there will be a term project. Prerequisites: Csi 503 (or equivalent) as a co-requisite, Departmental examination in discrete mathematics or B+ or above in Csi 521, Csi 524 or 526.

**Csi 635 Artificial Intelligence II (3) **

A continuation of the materials introduced in Csi 535. Prerequisite: Csi 535.

**Csi 636 Natural Language Processing (3) **

Construction of programs that use human language. Topics include morphology, syntax, parsing, semantic representation, resolution of ambiguity, generation, and discourse. Prerequisite: Csi 535 or permission of instructor.

**Csi 642 Topics in Quantum Computation, Information, and Simulation (3) **

This course is a follow up to Csi 542, an Introduction to Quantum Computation, Information, and Simulation. Topics covered will change from semester to semester. Detailed in-depth studies of these topics may include: quantum computation including theoretical aspects, numerical aspects of quantum mechanical computation, quantum information theory including quantum error correction, and quantum simulation. Prerequisites: Csi 542.

**Csi 654 Seminar in Problem Solving (3) **

Methods of problem solving in computer science, including logical analysis and thought-experiments. Problems from all areas of computer science. Prerequisite: Admission to CSI doctoral program or consent of instructor.

**Csi 660 Topics in Computer Science (1-3) **

Advanced topics in computer science. Content determined by the instructor. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 661 Topics in Artificial Intelligence (1-3) **

Advanced study in selected subjects in Artificial Intelligence, with an emphasis on current research and results. Topics may be drawn from automated deduction, natural language processing, artificial neural networks, knowledge representation, and machine learning. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 662 Topics in Database Systems (1-3) **

Selected topics of current interest from the frontiers of database systems. Topics may vary from year to year. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 663 Topics in Parallel Computation (1-3) **

Selected topics of current interest in parallel processing. General topics include design and analysis of efficient parallel algorithms on a variety of parallel computation models, and theory of parallel computation. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 664 Topics in Automated Reasoning (1-3) **

Contents may vary from semester to semester. Possible topics include: automated reasoning methods based on term rewriting, completion, non- clausal approaches to theorem proving, dissolution, proofs by induction; theorem proving methods for nonclassical logics including modal, temporal, and multiple-valued logics; automated geometric theorem proving, geometric and algebraic reasoning, as well as constraint solving. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 665 Topics in Computer Graphics (1-3) **

Topics may include: Hidden line and surface removal, polygonal surfaces, fractals. B-spline and Bezier bicubic patches, Quadric surfaces, surface blending, shading, ray tracing, or animation. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 666 Topics in Theory of Computation (1-3) **

Selected topics in theory of computation, automata theory, and decidability. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 667 Topics in Algorithms (1-3) **

Selected topics in theory, analysis, and complexity of algorithms. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 668 Topics in Systems Architecture (3) **

Selected topics or case studies in structure, design, or evaluation of computer hardware and software systems. Content varies from year to year. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 669 Topics in Data Structures (1-3) **

Course contents may vary from semester to semester. General topic is efficient algorithms for searching data structures and data bases; particular topics may include perfect hashing, fast tries, fusion trees, and relational data base optimization. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 670 Topics in Specification and Verification (1-3) **

Course based on the application of formal methods for specification and verification of software and hardware. Emphasis on using mechanical theorem-provers to verify that the program/circuit meets the specification. Contents may vary from semester to semester. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.

**Csi 671 (Inf 671) Computer Vision (3)**

Billions of images are hosted publicly on the web - how can you find one that "looks like" some image you are interested in? How can a robot identify objects in complex environments, or navigate uncharted territory? How can a video camera in the operating room help a surgeon plan a procedure more safely, or assist a radiologist in more efficiently detecting a tumor? Computer vision is at the heart of many such questions: the goal is to develop methods that enable a machine to "understand" or analyze images and videos, so that information can be derived from raw pixel values to support various applications. In this course, through lectures, paper presentations, and projects, we will explore fundamental topics including image formation, feature detection, segmentation, recognition and learning, and motion and tracking. We will treat computer vision as a process of inference from noisy and uncertain data and emphasize probabilistic, statistical, and data-driven approaches. Prerequisites: This course requires familiarity with calculus, basic probability theory and linear algebra, and some programming experience. Previous experience with image processing and machine learning will be useful but is not assumed. MATLAB, the language of choice for the programming assignments will be covered as part of the introduction to the course.

**Csi 680 Master's Project (3) **

Master's level project under faculty supervision. Satisfactory completion fulfills project requirement for the M.S. in computer science. May be repeated for credit with permission of department. Prerequisite: Permission of instructor.

**Csi 680C Master's Research Project Continuation (1) **

Course grading is Load Only and does not earn credit. Appropriate for master's students engaged in research on the master's project beyond the level applicable to their degree program.

**Csi 681 Compiler Project (3) **

Project work in compiler design and implementation. Students are required to design and implement significant components of a compiler. Satisfactory completion fulfills project requirements for the M.S. or Ph.D. in computer science. Prerequisite: Csi 617 or permission of instructor.

**Csi 682 Database Project (3) **

Project work in database design and implementation. Students will design and implement significant components of a database system. Satisfactory completion fulfills project requirement for the M.S. or Ph.D. in Computer Science. Prerequisite: Csi 508 (corequisite: Csi 608 or Csi 609) or permission of instructor.

**Csi 683 Systems Programming Project (3) **

Project work in operating systems. Students will design and implement significant components of an operating system, subsystem, or supporting utility programs. Satisfactory completion of this course fulfills the project requirement for the M.S. or Ph.D. degree in computer science. Prerequisite: Csi 500 or permission of instructor.

**Csi 684 Computational Science Project (3) **

The computer solution of practical problems in pure or applied science and/or technology. Satisfactory completion fulfills project requirements for the M.S. or the Ph.D. in computer science. Prerequisites: Csi 540, 541, or consent of department.

**Csi 694 Directed Readings in Computer Science (1-3) **

Directed reading in a particular area of computer science specialization under supervision of a departmental faculty member. May be repeated for credit with permission of the department. Prerequisite: Consent of department.

**Csi 696 Independent Teaching and Learning (1-3)**

Participants extend and apply their understanding of computer science by tutoring or assisting in laboratory, tutoring or discussion activities, under faculty supervision, for one or more associated courses. One weekly contact hour and grading are required for each credit (or an equivalent obligation as determined by the faculty supervisor). Students must complete at least one relevant ITAL/ FTR training workshop during the semester in which they are enrolled in ICSI 696. May be repeated for credit with permission of the department. Prerequisite: Consent of department.

**Csi 697 Independent Study and Research (1-3) **

Independent study and research in a particular area of computer science specialization under supervision of a departmental faculty member. May be repeated for credit with permission of the department. Prerequisite: Consent of department.

**Csi 697C Independent Study and Research Continuation (1)**

Appropriate for master's students engaged in independent study and research beyond the level applicable to their degree program. This course is graded load-only and does not count towards a graduate degree program.

**Csi 698 Internship (3)**

Directed application of a particular area of computer science specialization via public or private sector employment. Must be under supervision of a departmental faculty member. The internship must demonstrate the ability to put science and/or managerial preparation to work in business, industry, or government. May not be repeated for credit. Qualifies for CPT for one semester only. Prerequisite: Permission of the department.

**Csi 698C Master's Internship Continuation (1)**

Course grading is Load Only and does not earn credit. Appropriate for master's students engaged in the master's internship beyond the level applicable to their degree program.

**Csi 699 Master's Thesis (3-6) **

Original independent research at the master's level under direction of a member of computer science faculty. Prerequisite: Acceptance of thesis proposal by faculty member.

**Csi 699C Master's Thesis Continuation (1) **

Course grading is Load Only and does not earn credit. Appropriate for master's students engaged in research and writing of the master's thesis beyond the level applicable to their degree program.

**Csi 720 Advanced Topics in Computer Science (1-3) **

Selected advanced topic from the current computer literature in computer science. Course material is at the doctoral level. Prerequisite: Permission of instructor.

**Csi 890 Independent Study and Research (3-19) **

Independent study at the doctoral level under the direction of a member of the computer science faculty. May be repeated for credit. Prerequisite: Consent of computer science department doctoral committee.

**Csi 899 Doctoral Research (1) **

Required of all candidates completing the degree of Doctor of Philosophy. Registration for this course is limited to doctoral students who have been admitted to candidacy. Course grading is Load Only and does not earn credit.