Course Descriptions and Syllabi
CSI 100 Computing And Disability (3)  
The relation between people with disabilities and computers. Lectures, tutorials, and laboratory will deal with topics such as how computers may be used by persons with disabilities, assistive devices, software, and applications such as word processing, database inquiries, spreadsheets, and telecommunications. For students with disabilities and for professionals who teach and assist people with disabilities.  
CSI 101 Elements Of Computing (3)  
Introduction to the principles and practice of problem solving with computer programming through flowcharting, pseudocode and ultimately the use of a general purpose programming language such as Visual Basic.NET. Concepts introduced include algorithms, arrays, files, structured programming, topdown design and objects. Course also includes brief introductions to computer and network technology, applications, and architecture from both a historical and modern perspectives. Student may take both B Itm 215 and I Csi 101 for credit, if both courses were taken in Fall 2003 or thereafter.  
Ekblaw Fall 2008, Ekblaw Spring 2009  
CSI 102 Microcomputer Software (3)  
Theory and practice of general purpose microcomputer software systems such as spreadsheet and relational database packages. Query languages for database access. Word processing with emphasis on spelling and grammar checking. Normally offered spring semester only.  
CSI 103 Topics in Computer Literacy (3)  
Each offering of this course will address one or more topics that are germane to the use of computers in every day life. The main emphasis of this course will be on the use of available software packages.  
CSI 105 Computing and Information  
A broad introduction to computer and information sciences and related disciplines. All of these fields study various aspects of information and the modern digital computer. Among the central topics of this course, students will learn basic computer programming because understanding how computers work is a key to understanding their use across all of the disciplines in Computing and Information. The topics include what we can and cannot known through computing, interactions between technology and humans, and a series of contemporary applications of the disciplines. The course includes critical readings, multiple perspectives, formulation and defense of opinions, common themes among diverse topics, and skills and practice of teamwork.  
CSI 107 Web Design  
This course is designed to introduce the student to the ever changing world of Web Programming. The student will develop the ability to write original code in HTML, XML, CSS, Javascript, etc. to create highly customized websites.  
CSI 110 Introduction to Programming, Worlds and Problems (3)  
A general introduction to computer science by way of programming and algorithmic problem solving in contexts that provide attractive visualizations of results. Assumes no prior background in programming. The application contexts (animation, robotics, interactive graphics, virtual worlds, games, simulations, etc.) vary from semester to semester. Fundamentals of planning; objects and state; operations, expressions, control structures, logic and procedural decomposition; hierarchies and interactivity are introduced each semester. Provides a background for understanding information technology in terms of its organization, operation and customization, as well as for further study in computer science and related disciplines. Lecture/workshop and lab meetings.  
CSI 116H Honors Programmable Computing, Worlds, and Problems (3)  
Honors version of I Csi 110. Includes the same topics and approach as I Csi 110 but with greater depth and emphasis on surveying computer science as an intellectual discipline. It will quickly teach the fundamentals of programming so that students who have never done it before can encounter the challenges and rewards of algorithmic problem solving in the same manner as the professionals. The introduction with virtual world programming will be followed by study, discussion, problem solving, and practice with different embodiments of computing, including finite automata, neural networks, cellular automata, Turing machines, numerical simulations, and practical programming languages in different families such as Java, Scheme/Lisp and Prolong. Processes. Team based creative and research projects will be carried out and presented. Prerequisite(s): Excellent proficiency with secondary school mathematics.  
CSI 120N Computational Principles and Issues (3)  
Principles and issues arising in a variety of computational situations. Discussion of topics from computation theory, artificial intelligence, and systems design. From computation theory, an emphasis on impediments to computation, such as undecidability and NPhardness. From artificial intelligence, an emphasis on knowledge representation. From systems, an emphasis on computer design and on synchronization problems.  
CSI 124X Computer Security Basics (3)  
An introduction to security in computers and networks for a general audience. The operation of computers and networks is explained to show how they are the basis for attacks. The course will confer a basic but comprehensive understanding of how computer and network attacks (e.g., viruses, worms, denial of service) work. Also, how a general user of computers can defend her or himself from current and future attacks.  
CSI 131 Intro to Data Analytics  
This course will offer an introduction to the key terms, concepts and methods in data analysis, with an emphasis on developing critical analytical skills through handson exercises of actual data analysis tasks. In addition, you will learn and practice basic programming skills to use software tools in data analysis. Most importantly, this course aims to help you look at the data and their analysis from new points of view, and nurture a habit of finding relevant patterns in large data sets with appropriate analysis steps. This ability becomes particularly important when you are facing with large amounts of data from your future field and career, be it natural or social science, engineering or business.  
CSI 198 Consulting Service (13)  
Classroom instruction on the practical aspects of computing on the campus personal, network and mainframe computer environment, including word processing, data communications, networking and using various operating systems. Training is followed by continuing consulting work experience in the public user rooms. Work schedules are determined on an individual basis during the first two weeks of class. May be repeated for credit. Total credits for I Csi 198, 199, 490, 497, and the former I Csi 298 and 498 may not exceed nine. Prerequisite(s): permission of instructor. S/U graded.  
CSI 199 Consulting Service (13) for Information Literacy Gen. Ed. Req. in the University Library Reference Dept. section  
Classroom instruction on the practical aspects of computing on the University Libraries campus website, including search strategy and skills development in information technology in a public user facility. Students will learn about and assist users with library research databases and research on the Internet within the context of a sophisticated informationdelivery organization, will become familiar with the practical, social and ethical issues relating to information, and will be able to evaluate and utilize information acquired through a variety of formats. Consulting schedules are determined on an individual basis during the first two weeks of class. Number of credit hours taken determines consulting hours required. Class attendance is mandatory. (ICSI majors: total credits for I Csi 198, 199, 490, 497, and the former I Csi 298 and 498 may not exceed nine). S/U graded.  
CSI 201 Introduction To Computer Science (4)  
Computer algorithms and their representation. The principle of information hiding and its relation to program block structure. File structure and access methods. The efficient use of computational resources. Program development and style.  
CSI 203 Data Processing Principles (3)  
Introduction to systems analysis and structured programming techniques using COBOL (Common Business Oriented Language). Basic COBOL, table handling, sorting, file structures and maintenance, storage media, and basic functions of a multiprogramming operating system. May not be taken for credit by students with credit for I Csi 206 or I Csi 306. Prerequisite(s): I Csi 101 or 110 or 201. Normally offered spring semester only.  
CSI 204 Scientific Computing (3)  
Programming in the scientific languages Fortran 77 and APL. The effect of internal storage representation on precision and accuracy. Symbolic computation using Macsyma. Elementary numerical methods and the graphical presentation of scientific data. Software libraries of interest to scientists. Prerequisite(s): I Csi 101 or 110 or 201, and A Mat 113 or 119.  
CSI 205 Object Oriented Programming for Data Processing Applications (3)  
Introduction to object oriented programming, abstraction and system analysis techniques using an object orientated language such as C++ or Java. Basic syntax and semantics, classes, objects, arrays and pointers. Modular software design using header or class files and separate compilations and linking. Use of standard class and function libraries and packages. Introduction to memory management and performance issues. Prerequisite(s): I Csi 101 or 110 or 201. Normally offered fall semester only.  
Irvin Fall 2008  
CSI 210 Discrete Structures (4)  
Proofs by induction; mathematical reasoning, propositions, predicates and quantifiers; sets; relations, graphs, and trees; functions; counting, permutations and combinations. Prerequisite(s) or corequisite: I Csi 201. Normally offered fall semester only.  
Murray Fall 2008  
CSI 221 Introduction to Discrete Mathematics (3)  
Topics chosen from sets, relations, induction, binomial theorem, permutations and combinations, counting, and related topics in discrete mathematics. Only one of A Mat 221 & I Csi 221 may be taken for credit. Prerequisite(s) or corequisite: A Mat 113 or 119.  
CSI 300Z Social Implications Of Computing (3)  
The ethical and moral implications of using computers to affect the lives of individual and collective members of human society. Material drawn from a variety of topics, including security and privacy in computers, networks, security measures, and human users, data banks vs. rights to privacy, intellectual property, open vs. closed software, software piracy, unauthorized access, and other computer crimes. Prerequisite(s): I Csi 101, I Csi 110, I Csi 201 or other handson course in programming. [WI]  
CSI 310 Data Structures (3)  
Commonly used abstract data structures and their implementation. The use of pointers and recursive programming. Stacks, queues, lists and trees, and their application to such problems as sorting and searching. Analysis of algorithms for using these structures. Prerequisite(s): I Csi 201. Normally offered spring semester only.  
Haas Spring 2009  
CSI 311 Principles Of Programming Languages (3)  
Fundamental concepts and general principles underlying programming languages and their use as illustrated by Prolog and Lisp. Analysis and implementation of runtime environment including scope rules, binding, and parameter passing mechanism. Introduction to interpreters and compilers. Prerequisite(s): Grade of C or better required in I Csi 210 and 310. Majors who declared prior to September 1, 2002 will have the grade restriction waived. Normally offered spring semester only.  
Murry Spring 2009  
CSI 333 Programming at the Hardware Software Interface (4)  
Instruction set architecture of contemporary computers; boolean logic, memory, registers, instructions and interrupts. Assembly language programming; assembler passes, symbols, macros, function linkage and separate compilations. C language programming; syntax, control, types, abstractions, pointers and strings. dynamic memory, standard and user written libraries. ANSI and C++ standards. Instruction set simulation. Prerequisite(s): Grade of C or better required in I Csi 310. Majors who declared prior to September 1, 2002 will have the grade restriction waived. Normally offered fall semester only.  
Ravi Fall 2008  
CSI 400 Operating Systems (3)  
Historical overview; operating system services; mass storage file organization; memory management in multiprogrammed systems; virtual memory; resource allocation; concurrent processes; deadlock detection and prevention; security; the design of contemporary operating systems such as UNIX. Prerequisite(s): I Csi 333. 

Ekblaw Spring 2008, Ekblaw Spring 2009  
CSI 401 Numerical Methods For Digital Computers (3)  
Study of practical methods for the numerical solution of a variety of problems on a digital computer. Topics covered will include roots of equations, numerical interpolation, numerical integration and differentiation; the evaluation of mathematical functions, least squares curve fitting; the solution of simultaneous linear equations, matrix inversion and linear programming. Prerequisite(s): A Mat 220 and I Csi 310. Normally offered fall semester only. 

CSI 402 Systems Programming (3)  
Programming aspects of operating systems. Topics covered include implementation of storage management, resource allocation, multiprocessing, scheduling, synchronization, interprocess communication, and terminal I/O. Emphasis on projects to enhance subject understanding, problem solving, and programming skills. Prerequisite(s): Grade of C or better required in I Csi 333. Majors who declared prior to September 1, 2001 will have the grade restriction waived. Normally offered spring semester only. 

Ravi Spring 2009  
CSI 403 Algorithms And Data Structures (3)  
Description of common data structures such as lists, pushdown stores, queues, trees, and graphs. Definition of algorithm efficiency and efficient algorithms for integer and polynomial arithmetic, sorting, set manipulation, shortest paths, pattern matching, and Fourier transforms. Prerequisite(s): I Csi 210 and 310. Normally offered spring semester only. 

CSI 404 Computer Organization (3)  
An introduction to the logical organization of the hardware components of computing systems. Topics include logic design from a functional point of view, data representation and processing, description of major components such as the central processing unit and memory, and control and communication within the components and in the system. Prerequisite(s): I Csi 333 and 210. Normally offered spring semester only. 

Haas Spring 2009  
CSI 407 User Interfaces (3)  
The C programming language. Eventdriven systems. Aspects of the UNIX operating system that support simulation of multitasking in a single processor environment. Windoworiented user interfaces. Popup/pulldown menus. Human factors in software engineering. Prerequisite(s): I Csi 333. 

CSI 409 Automata And Formal Languages (3)  
Introduction to the theory of computation. Models of computation including Turing machines and pushdown automata will be examined along with their formal language counterparts such as contextfree languages. Additional topics include unsolvability, computational complexity, and applications to computer science. Prerequisite(s): I Csi 210. Normally offered fall semester only. 

CSI 410 Database Management Systems (3)  
Introduction to using relational database software and database management systems. Indepth coverage of a practical Structured Query Language (SQL), physical and logical database design, rollback and recovery techniques, and access methods including interfaces to programming languages. Prerequisite(s): two semesters of course work in computer programming or equivalent experience. Familiarity with data structures and operating systems concepts is helpful but not required. Normally offered fall semester only. 

CSI 411 Database Performance Principles and Transaction Management (3)  
Examination of database tuning principles and issues and how they apply to local and distributed transactional databases and data warehouses. Topics include locking and concurrency control, logging and recovery, query tuning, indexing schemes, file partitioning, hardware considerations, and how the database manager interacts with the transaction manager and the operating system. Prerequisite(s): I Csi 410 or a strong working knowledge of SQL. 

CSI 416 Computer Communication Networks (3)  
Introduction to computer communication networks. Equal emphasis on all layers of the ISO reference model and the TCP/IP protocol suite. Topics include physical networks, sliding window protocols, remote procedure call, routing, naming and addressing, security, authentication, performance, and applications. Prerequisite(s): I Csi 402 and A Mat 367. Normally offered fall semester only. 

CSI 417 Compiler Construction (3)  
Compilation vs. interpretation; lexical analysis based on finite automata; parsing; syntaxdirected translation; symbol tables; runtime storage allocation; error detection and recovery; code generation and optimization. Prerequisite(s): I Csi 333 and 409. 

CSI 418Y Software Engineering (3)  
Software engineering principles, the role of abstraction in programming, abstract data types, modularization and module interfaces, specifications, and teamwork. Project work in contemporary concurrent and objectoriented languages. Prerequisite(s): I Csi 333. 

CSI 421 Discrete Mathematics With Applications (3)  
A deeper coverage of the content of I Csi 210. Proofs by induction, recursive definitions, and combinatorial analysis. Introduction to recurrence equations, graph theory, and abstract algebra. Applications to proofs of correctness and analysis of combinatorial and algebraic algorithms. Prerequisite(s): I Csi 210. Normally offered fall semester only. 

CSI 422 Introduction to Computer Graphics (3)  
Mathematics, data structures, algorithms, system architecture and programming projects for implementing two and three dimensional computer graphics software. Rastorization, matrices, linear and projective transformations; clipping, removal of hidden lines and surfaces. Devices, event driven user interaction, and an introduction to window systems and visual programming tools. Prerequisite(s): A Mat 220 (linear algebra) and I Csi 310, or permission of the instructor. 

CSI 424 Information Security (3)  
This course covers the broad spectrum of technical issues surrounding computer security and intrusion detection. Topics considered include: viruses, worms, host and networkbased vulnerabilities and countermeasures, database security, intrusion detection, and privacy and legal issues. Facilities for securing hosts and limiting vulnerability are also discussed. Unlike in a systems administration class, detailed operational issues are not discussed. Prerequisite(s): I Csi 402 or I Csi 400. 

CSI 426 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 uptodate implementations and uses in digital computers. Various ciphers will be shown and their security assessed. This latter is known as cryptanalysis – the attempt to break a cipher in order to read the underlying message. The course will emphasize how cryptography and cryptanalysis are intimately related, and how the arms race between the two has motivated progress throughout their history. Prerequisite(s): I Csi 333 and coregistration in I Csi 403. 

CSI 430 Introduction to Mathematical Logic (3)  
Topics include logical validity, logical consequence, computerized theorem proving, compactness, soundness, consistency, completeness and incompleteness in the context of propositional logic, first order logic, FregeHilbert deduction and computerized Semantic Tableaux deduction. This course will survey Goedel’s Completeness and Incompleteness Theorems along with decidability, undecidability, and a classification of theoretically computable and uncomputable problems. Prerequisite(s) I Csi 210 plus permission of instructor. 

CSI 431 Data Mining (3)  
A course on data mining (finding patterns in data) algorithms and their application to interesting data types and situations. We cover algorithms that addresses 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(s): I Csi 310. 

Lyu Fall 2008  
CSI 435 Introduction To Artificial Intelligence (3)  
An introduction to the broad spectrum of approaches and techniques of Artificial Intelligence. Emphasis on how to represent knowledge in a computer and how to process that knowledge to produce intelligent behavior. Topics include expert systems, heuristic search, natural language processing and logicbased approaches. Programming assignments using artificial intelligence languages. Prerequisite(s): I Csi 311. 

CSI 440 High Performance Scientific Computing I (3)  
Introduction to distributed, shared memory, and nonuniform 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. Highlevel prototyping languages, experimental methods, performance analysis and polyalgorithm design. Prerequisite(s): I Csi 310, I Csi 401, A Mat 220 and knowledge of numerical methods and Fortran; or permission of instructor. 

CSI 441 High Performance Scientific Computing II (3)  
Numerical methods for ODE’s, PDE’s and transforms (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, F90 and MPI. Prerequisite(s): I Csi 440. 

CSI 442 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. Prerequisite(s): I Csi 403 or 503, knowledge of the use of Boolean Algebra in circuit design, and programming experience. 

CSI 445 Topics in Computer Science (3)  
The contents of this course will vary from semester to semester. Each offering will cover an advanced seniorlevel topic in Computer Science. Prerequisite(s): I Csi 333 (or I Csi 205 & 310) or permission of instructor. May be repeated for credit when content varies. 

Hwang Fall 2008, Lyu Fall 2008, Hwang Spring 2009  
CSI 451 (=A Phy 451) 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 handson course that will introduce the use of the 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, fixedpoint methods, and Markov chain Monte Carlo sampling techniques. Prerequisite(s): A Mat 214 (or equivalent) and I Csi 101 or I Csi 201. 

Knuth Fall 2008  
CSI 487 Honors Seminar (3)  
Each student is required to carry out independent study under the supervision of a faculty member and present a departmental colloquium on the chosen topic. Students may also be required to complete a theoretical or an experimental project, write reports or make short presentations. Only one of I Csi 487 and I Csi 487Z may be taken for credit. Prerequisite(s): Admission to the honors program. 

CSI 487Z Honors Seminar (3)  
Each student is required to carry out independent study under the supervision of a faculty member and present a departmental colloquium on the chosen topic. Students may also be required to complete a theoretical or an experimental project, write reports or make short presentations. Only one of I Csi 487 and I Csi 487Z may be taken for credit. Prerequisite(s): Admission to the honors program. 

CSI 488Z Honors Project (312)  
Students are required to pursue research supervised by a faculty member and submit final reports describing their research. Outcomes of this research may include software/hardware artifacts, data collected through experiments, bibliographies or research papers. Each student is evaluated by a faculty committee during the second semester of their senior year. Honors students must complete at least 6 credits of this course. Prerequisite(s): Admission to the honors program. [WI] 

CSI 490 Internships In Computer Science (16)  
Research or development experience with University units or external agencies or companies requiring significant solutions of problems in areas such as software design, development, programming of tests or extensions, etc. in a practical environment. The relevance to computer science and the technical level of the proposed internship, and the intern's qualifications must be approved by the department. A written report must be accepted by the department before the end of the internship semester. May be repeated for credit. Prerequisite(s): I CSI 310 and permission of the department. S/U graded. 

CSI 496 Independent Teaching and Learning (13)  
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 credit for each weekly contact hour or each 2 to 4 hours of scheduled tutoring, staff meetings, lecture attendance or grading. May be repeated for credit. Total credits of I CSI 198, 199, 496, 497 prior to 2008, and their general education versions may not exceed 9. Prerequisite(s): permission of instructor. S/U graded. 

CSI 496Y Independent Teaching and Learning (13)  
Oral discourse version of I CSI 496. In addition to the I CSI 496 requirements, at least two different lab or discussion exercises will be prepared and conducted, and will be evaluated by the faculty supervisor and section students. May be repeated for credit. Total credits of I CSI 198, 199, 496, 497 prior to 2008, and their general education versions may not exceed 9. Prerequisite(s): permission of instructor. S/U graded. 

CSI 497 Independent Study In Computer Science (13)  
Independent study of advanced topics under the guidance of a computer science faculty member which are not covered in regularly scheduled courses. Three to four hours per week per semester credit should be spent on readings, technology research, problem solving, experimentation with student created and existing software, faculty discussion, etc., culminating in an acceptable and significant written report or paper. May be repeated for credit. Prerequisite(s): junior or senior standing or equivalent experience, at least I CSI 310, and the permission of instructor with whom the student wishes to study. 

CSI 499 Senior Project In Computer Science (3)  
Introduction to software engineering. Students will participate in the design and production of a large, modular program typical of those encountered in business and industry. Prerequisite(s): I Csi 333 or 311, and permission of instructor. 
CSI 500 Operating Systems (4)  
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: Csi 333 (formerly Csi 202), Csi 310, Mat 367 and one of Csi 400, 402, or 404.  
Ekblaw Spring 2008, Ekblaw Spring 2009  
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 QuasiNewton 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: Introductory undergraduate courses in numerical analysis, linear algebra, and multivariate calculus. Knowledge of Fortran90 or Fortran77. 

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. Prerequisite: Csi 310.  
CSI 503 Algorithms and Data Structures (3)  
Review of discrete mathematics and probability used in algorithm design and analysis. Analyses of divideandconquer algorithms, numbertheoretical 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: Csi 310, departmental examination in discrete mathematics. 

Ravi Fall 2008  
CSI 504 Computer Organization (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 arithmeticlogic units, control units, CPUs, memories, and I/O systems. Prediction and measurement of performance. Introduction to VLSI, parallel processing, and other current architectural trends. Prerequisites: Csi 404, departmental examination in discrete mathematics.  
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, QuerybyExample. The CODASYL network model: data definition and data manipulation languages. Computer project using a database system. User viewpoint of concurrent access. Prerequisites: Csi 310, departmental examination in discrete mathematics. 

CSI 509 Theory of Computation (3)  
Finitestate machines, pushdown stack automata, turing machines, context free and context sensitive languages, regular sets, computability, NP completeness. Prerequisite: Departmental examination in discrete mathematics.  
CSI 511 Programming Languages and Systems Concepts (3)  
Principles of program design, documentation, and software engineering. Assembly language, machine design, and the fetchexecute cycle at all levels of hardware and software. Introduction to software development, compiler design, operating systems design, and program verification. Prerequisite: Csi 310  
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)  
Introduction to computer communication networks. Equal emphasis on all layers of the ISO reference model and the TCP/IP protocol suite. Topics include physical networks, sliding window protocols, remote procedure call, routing, naming and addressing, security, authentication, performance, and applications. Prerequisites: Csi 333 (formerly Csi 202), Csi 310, and Mat 367.  
CSI 517 Compiler Design I (3)  
Lexical analysis. Finitestate machines, pushdown machines, and context free grammars. Topdown and bottomup parsing. Syntaxdirected translation. Prerequisites: Csi 310, departmental examination in discrete mathematics.  
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 objectoriented languages. Prerequisites: Graduate Csi standing or permission of instructor, Csi 310.  
CSI 519 Programming Language Design (3)  
Brief history of programming language development. Functional programming with an emphasis on programming with higherorder functions, lazy evaluation, and streams, e.g. SCHEME. Type structure and type inference, e.g. ML. Logic programming and backtracking, e.g. Prolog, constraint logic programming, e.g. CLP(R). Denotational semantics, HoareFloyd 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 or graduate standing.  
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: Departmental examination in descrete mathematics, Csi 503.  
CSI 524 Information Security (3)  
This course covers the broad spectrum of technical issues surrounding computer security and intrusion detections. Topics considered include: viruses, worms, hostand networkbased vulnerabilities and countermeasures, database security, intrusion detection, and privacy and legal issues. Facilities for securing hosts and limiting vulnerability are also discussed. Unlike in a systems administration class, detailed operational issues are not discussed. Prerequisites: Csi 500 or permission of instructor. 

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 uptodate 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, FregeHilbert 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 Discrete Math Exam. 

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: Csi 503.  
Lyu Fall 2008  
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: Csi 310, departmental examination in discrete mathematics.  
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 firstorder 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, 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. Kd trees, kfold trees, balanced trees, and other advanced topics. Prerequisite: Csi 503.  
CSI 540 High Performance Scientific Computing I (3)  
Introduction to distributed, shared memory, and nonuniform 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. Highlevel prototyping languages, experimental methods, performance analysis and polyalgorithms design. Prerequisites: Csi 310, Csi 401 or knowledge of numerical methods; knowledge of Fortran recommeded.  
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/falsealarm. 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, Csi 310; or Ist 301/601, Ist 602; or Ist 433/633; or Permission of Instructor. 

CSI 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 handson course that will introduce the use of the 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, fixedpoint methods, and Markov chain Monte Carlo sampling techniques. Prerequisites: Csi 101 or Csi 201 or equivalent or permission of instructor. 

Knuth Fall 2008  
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 583 (Inf 523, Pad 523) Fundamentals of Information Management (19)  
Consists of two sevenweek modules teaching basic skills in information management. Topics include: introduction to programming, data structures, and overview of data base applications. Students may elect up to two additional modules in topics such as UNIX, networking, and software development tools. May not be used for degree credit in Computer Science. Prerequisite: Pad 504 or equivalent.  
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 NPcomplete problems. Techniques for dealing with computational intractability including backtracking, approximation algorithms, etc. Prerequisite(s): Csi 503 and Csi 509 or consent of instructor.  
CSI 608 Database II (3)  
Systemsoriented aspects of database systems design. Transaction processing, database concurrency control, restart and recovery, distributed databases. Advanced topics of current research interest. Prerequisites: Csi 310, departmental examination in discrete mathematics.  
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 (formerly Csi 202) and Csi 517.  
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 cuttingedge literature and there will be a term project. Prerequisites: Csi 503 (or equivalent) as a corequisite, departmental examination in Discrete Mathematics, 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 indepth 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 442 or Csi 542.  
CSI 654 Seminar in Problem Solving (3)  
Methods of problem solving in computer science, including logical analysis and thoughtexperiments. Problems from all areas of computer science. Prerequisite: Admission to Csi doctoral program or consent of instructor.  
CSI 660 Topics in Computer Science (13)  
Advanced topics in computer science. Content determined by the instructor. May be repeated for credit with permission of the department. Prerequisite: Permission of instructor.  
Hwang Fall 2008, Lyu Fall 2008, Berg et al.Spring 2009  
CSI 661 Topics in Artificial Intelligence (13)  
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 (13)  
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 (13)  
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 (13)  
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 multiplevalued 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 (13)  
Topics may include: Hidden line and surface removal, polygonal surfaces, fractals. Bspline 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 (13)  
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 (13)  
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 (13)  
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 (13)  
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 (13)  
Course based on the application of formal methods for specification and verification of software and hardware. Emphasis on using mechanical theoremprovers 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 680 Computer Science Research (3)  
Introduction to independent research in computer science. Satisfactory completion fulfills project requirement for the M.S. or Ph.D. in computer science. May be repeated for credit. Prerequisite: Permission of instructor.  
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 517 (corequisite: 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 (13)  
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 697 Independent Study and Research (13)  
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 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 699 Master's Thesis (36)  
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 720 Advanced Topics in Computer Science (13)  
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 (312)  
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 (112)  
Required of all candidates completing the degree of Doctor of Philosophy.  
 CCI Home
 Computer Science Home
 About the Department
 Undergraduate Programs
 Graduate Programs
 Research
 Resources for Students
 Computer Science FAQ
Students participate in more than 200 student clubs and honor societies, and enjoy a busy calendar of campus events.