COURSES IN COMPUTER SCIENCES

As of 01 March 2007

The following information is subject to change at any time without notice.

Courses numbered below 500 are undergraduate courses.

"Sem. 1" and "Sem. 2" denote fall and spring semesters, respectively.

Courses marked "dormant" are unlikely to be offered.

091 Professional Practice I Sem. 1 and 2. SS. Cr. 0. Prerequisite: approval of the departmental Cooperative Education coordinator.

092 Professional Practice II Sem. 1 and 2. SS. Cr. 0. Prerequisite: CS 091 and approval of the departmental Cooperative Education coordinator.

093 Professional Practice III Sem. 1 and 2. SS. Cr. 0. Prerequisite: CS 092 and approval of the departmental Cooperative Education coordinator.

094 Professional Practice IV Sem. 1 and 2. SS. Cr. 0. Prerequisite: CS 093 and approval of the departmental Cooperative Education coordinator.

095 Professional Practice V Sem. 1 and 2. SS. Cr. 0. Prerequisite: CS 094 and approval of the departmental Cooperative Education coordinator.

110 Introduction to Computers Sem. 1 and 2. Class 2, lab. 2, cr. 3. May not be taken for credit by Computer Science majors.
Computer applications and how they can be used for solving problems in everyday life. The Internet with an emphasis on obtaining information from the World Wide Web, use of a database with an emphasis on data storage and retrieval, spread sheets, word processing, presentation software, integration of multiple software packages.

149 Web Programming [Not regularly offered.] Class 2, lab. 2, cr. 3. May not be taken for credit by majors in Computer Sciences.
HyperText Markup Language, JavaScript, Active Server Pages, Java Server Pages, Java servlets, Cascading Style Sheets, Extensible Markup Language (XML), website security.

158 C Programming Sem. 1 and 2. Class 2, lab. 2, cr. 3. Corequisite: MA 161 or 165 or equivalent. Students cannot receive credit for both CS 156 [no longer offered] and CS 158. Students who have credit in CS 180 cannot receive credit for CS 158.
UNIX, the X Window System, vi editor, file system, basic commands, utilities, mail, news, World Wide Web, Mosaic. Introduction to programming in C: integer and floating-point data, standard mathematics library, control structures, user-defined functions, arrays, character data, strings, input and output. Applications.

159 Programming Applications for Engineers Replaces CS 156. Sem. 1 and 2. SS. Class 2, lab. 2, cr. 3. Corequisite: ENGR 116 or 126, or consent of instructor.
Fundamental principles, concepts, and methods of programming (C & MATLAB), with emphasis on applications in the physical sciences and engineering. Basic problem solving and programming techniques; fundamental algorithms and data structures; and use of programming logic in solving engineering problems. Students are expected to complete assignments in a collaborative learning environment.

177 Programming with Multimedia Objects Sem. 1 and 2. Class 3, lab. 2, cr. 4. Not open to CS majors with a grade of C or better in CS 180. Not open to non-CS majors with a grade of C or better in any course in computer programming.
Introduction to computers and programming: number representations, primitive data types and operations, basic control structures, programming applets and applications using graphical user interfaces, programming for detecting events and performing actions, processing multimedia objects such as images and sounds. Throughout the course, examples are drawn from a variety of fields in the natural sciences.

180 Programming I Sem. 1 and 2. Class 3, lab. 2, cr. 4. Corequisite: MA 161. Intended primarily for students majoring in computer science. Credit cannot be obtained for both CS 180 and any of CS 156 [no longer offered], 158, and 159. Not open to students with credit in CS 181 [no longer offered] or 240.
Introduction to computers and software, primitive types, strings, input, output, flow of control, classes, objects, methods, arrays, inheritance, exception handling, recursion, abstract data types, collections framework, streams and file I/O, reuseable software, and event-driven programming. The programming language used is Java.

182 Foundations of Computer Science Sem. 1 and 2. Class 3, cr. 3. Prerequisite: CS 180 and MA 161.
Basic mathematical objects, logic, number representations, discrete probability, recursion and recursive programs, proof techniques, finite state machines, languages and strings, pushdown automata, asymptotics and complexity, computability and undecidability, and future computing trends.

190 Topics in Computer Sciences Sem. 1 and 2. SS. Cr. 1-5. Open to students only with the consent of the department.

191 (proposed new number for 192)

192 Freshman Resources Seminar First eight weeks of sem. 1. Class 2, cr. 1. Offered on a pass/no pass basis only. Open only to majors in Computer Sciences. Strongly recommended for all freshmen. The credit may be used only toward free electives.
This course is intended to integrate freshman majors in Computer Sciences into the department, help them adjust to university life, and assist them in developing academic and intellectual survival skills. Weekly recitation sections enable the students to work in teams.

197 Freshman Honors Seminar Sem. 2. Class 1, cr. 1. Offered on a pass/no pass basis only. Open only to students in the Computer Sciences Honors Program. The credit may be used only toward free electives.
A seminar dealing with the history, context, and future of computer science.

235 Introduction to Organizational Computing Sem. 1 and 2. Class 2, lab. 2, cr. 3. Prerequisite: CS 110. Intended for students in Management. May not be taken for credit by Computer Science majors.
People and organizations, decision-making, information systems, telecommunications, desktop systems, integration tools, collaboration and groupware, multimedia, authoring multimedia documents, emerging technologies.

240 Programming in C Sem. 1 and 2. Class 2, lab. 2, cr. 3. Prerequisite: CS 180.
Programming in C for students who know Java: preprocessor, structures, pointers, dynamic memory allocation, streams, string handling, header files, process control, interprocess communication, threads, interrupts, software engineering principles, features of C++.

250 Computer Architecture Sem. 1 and 2. Class 3, lab. 2, cr. 4. Prerequisite: CS 182 and 240.
Concepts of computer system organization and programming; instruction and data representations; basics of digital logic design; instruction set decoding and addressing modes; fundamentals of assembly language; the organization and the operation of the central processing unit, memory system, and I/O interfaces; I/O structures; direct memory access; interrupts; bus protocols.

251 Data Structures Sem. 1 and 2. Class 3, cr. 3. Prerequisite: CS 182.
Specification, representation, and manipulation of basic data structures: linked lists, arrays, stacks, queues, trees, strings, symbol tables, Huffman codes, optimal search trees, pattern matching, priority queues, heaps, hash tables. Storage allocation, garbage collection, compaction, reference counts. List and string processing languages. Analysis of algorithms. Students are required to write programs in several languages.

290 Topics in Computer Sciences Sem. 1 and 2. SS. Cr. 1-5. Open to students only with the consent of the department.

291 Sophomore Development Seminar Sem. 1. Class 1, cr. 1. Offered on a pass/not pass basis only. Prerequisite: (none) For sophomores in Computer Science.
Presentations by corporate partners about careers in computer science. Presentations by faculty about careers in academia and research. Students learn about upper-division courses, tour research laboratories, and attend job fairs.

307 Software Engineering I [Formerly 406] Sem. 1 and 2. Class 3, cr. 3. Prerequisite: CS 251.
An introduction to the methods and tools of software engineering; software life cycle; specification and design of software, software testing, cost and effort estimation; laboratory exercises with design, testing, and other tools.

314 Numerical Methods Sem. 2. Class 3, cr. 3. Prerequisite: MA 265 and one of CS 159, CS 177, and CS 180, or the equivalent.
Iterative methods for solving nonlinear equations; direct and iterative methods for solving linear systems; approximations of functions, derivatives and integrals; error analysis.

334 Fundamentals of Computer Graphics Sem. 1. [In 2007-08, sem. 2 also (taught by ECE).] Class 3, cr. 3. Prerequisite: CS 240 and MA 265, or consent of instructor. CS 314 is recommended.
Fundamental principles and techniques of computer graphics. The course covers the basics of going from a scene representation to a raster image using OpenGL. Specific topics include coordinate manipulations, perspective, basics of illumination and shading, color models, texture maps, clipping and basic raster algorithms, fundamentals of scene constructions.

348 Information Systems Sem. 1. [In 2007-08, sem. 2 also.] Class 3, cr. 3. Prerequisite: CS 251.
File organization and index structures; object oriented database languages; the relational database model with introductions to SQL and DBMS; hierarchical models and network models with introductions to HDDL, HDML, and DBTG Codasyl; data mining; data warehousing; database connectivity; distributed databases; the client/server paradigm; middleware, including ODBC, JDBC, CORBA and MOM.

352 Compilers: Principles and Practice Sem. 1 and 2. Class 3, cr. 3. Prerequisite: CS 250. Corequisite: CS 251. Should not be taken concurrently with CS 354.
The theory and practice of programming language translation, compilation, and run-time systems, organized around a significant programming project to build a compiler for a simple but non-trivial programming language. Modules, interfaces, tools. Data structures for tree languages. Lexical analysis, syntax analysis, abstract syntax. Symbol tables, semantic analysis. Translation, intermediate code, basic blocks, traces. Instruction selection, CISC and RISC machines. Liveness analysis, graph coloring register allocation. Supplemental material drawn from garbage collection, object-oriented languages, higher-order languages, dataflow analysis, optimization, polymorphism, scheduling and pipelining, memory hierarchies.

354 Operating Systems Sem. 1 and 2. Class 3, cr. 3. Prerequisite: CS 250 and 251. Should not be taken concurrently with CS 352.
Introduction to operating systems. Computer system and operating system architectures, processes, inter-process communication, inter-process synchronization, mutual exclusion, deadlocks, memory hierarchy, virtual memory, CPU scheduling, file systems, I/O device management, security.

355 Introduction to Cryptography Sem. 1 or 2. [Sem. 1 in 2007-08.] Class 3, cr. 3. Prerequisite: CS 251 and MA 265 or equivalent, or consent of instructor.
An introduction to cryptography basics: Classic historical ciphers including Caesar, Vigenère and Vernam ciphers; modern ciphers including DES, AES, Pohlig-Hellman, and RSA; signatures and digests; key exchange; simple protocols; block and stream ciphers; network-centric protocols.

381 Introduction to the Analysis of Algorithms Sem. 1 and 2. Class 3, cr. 3. Prerequisite: MA 261 and CS 251.
Techniques for analyzing the time and space requirements of algorithms. Application of these techniques to sorting, searching, pattern-matching, graph problems, and other selected problems. Brief introduction to the intractable (NP-hard) problems.

390 Topics in Computer Sciences Sem. 1 and 2. SS. Cr. 1-5. Open to students only with the consent of the department.

391 (proposed new number for 392)

392 Junior Resources Seminar [Formerly CS 491, Senior Resources Seminar] Sem. 2. Class 1, cr. 1. Offered on a pass/no pass basis only. Open only to junior and senior majors in Computer Sciences. The credit may be used only toward free electives.
This seminar course engages a number of outside speakers who typically present information on the role of research in computer science, how the research components of computer science relate to each other, approaches to software development in industry, different types of application development paradigms, technological trends, and societal, ethical, and legal issues.

397 Honors Seminar Sem. 1. Cr. 0. Offered on a satisfactory/unsatisfactory basis only. Open only to students in the Computer Sciences Honors Program.
A seminar for all sophomores, juniors, and seniors in the Computer Sciences Honors Program. Meets eight times each semester under the supervision of the Honors Coordinator. The meetings focus on honors research projects, helping students to identify appropriate projects and form groups and providing a forum for juniors and seniors to report on their projects as required in the honors program.

407 Software Engineering II [Dormant] Class 3, cr. 3. Prerequisite: CS 406.
Because of the nature of the project, CS 407 is an extension of CS 406. The emphasis is on the development of a large software system in a team environment. Knowledge of methods and tools acquired in CS 406 are put to use in a carefully controlled and guided project. Some advanced topics such as reliability estimation and methods, and tools for the design and verification of parallel programs are covered during the lectures.

422 Computer Networks Sem. 1 and 2. Class 3, cr. 3. Prerequisite: CS 354.
Introduction to computer networks and data communication. Low-level details of media, signals, and bits: time division and frequency division multiplexing; encoding; modulation; bandwidth, throughput, and noise. Packet transmission: Local Area Network (Ethernet, FDDI) and Wide Area Network technologies (ATM); wireless networks; network interconnection with repeaters, bridges, and switches; DSU/CSU; xDSL and cable modems. Internetworking: router-based architecture; IP addressing; address binding with ARP; datagram encapsulation and fragmentation; UDP and TCP; retransmission; protocol ports; ICMP and error handling. Network applications: client/server concept; port demultiplexing; program interface to protocols (API); use by clients and servers; domain name system; TELNET; Web technologies including HTTP, CGI, Java; RPC and middleware; network management.

426 Computer Security Sem. 2. [In 2007-08, sem. 1 also.] Class 3, cr. 3. Prerequisite: CS 354.
A survey of the fundamentals of information security. Risks and vulnerabilities, policy formation, controls and protection methods, database security, encryption, authentication technologies, host-based and network-based security issues, personnel and physical security issues, issues of law and privacy.

434 Advanced Computer Graphics Sem. 2. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: CS 334 or consent of instructor.
Advanced concepts and techniques of computer graphics. The course covers, in complete detail, going from a scene representation to a raster image without using OpenGL or other graphics packages. The course develops a complete graphics implementation in which the students implement every aspect of the graphics pipeline. This involves a substantial software project in C/C++.

448 Introduction to Relational Database Systems Sem. 1 and 2. [In 2006-07, sem. 2 only.] Class 3, cr. 3. Prerequisite: CS 251.
An in-depth examination of relational database systems including theory and concepts as well as practical issues in relational databases. Modern database technologies such as object-relational and web-based access to relational databases. Conceptual design and entity relationship modeling, relational algebra and calculus, data definition and manipulation languages using SQL, schema and view management, query processing and optimization, transaction management, security, privacy, integrity management.

456 Programming Languages Sem. 2. [In 2007-08, sem. 1 instead of sem. 2.] Class 3, cr. 3. Prerequisite: CS 352.
Concepts for structuring data, computation, and whole programs. Object-oriented languages, functional languages, logic- and rule-based languages. Data types, type checking, exception handling, concurrent processes, synchronization, modularity, encapsulation, interfaces, separate compilation, inheritance, polymorphism, dynamic binding, subtyping, overloading, beta-reduction, unification.

471 Introduction to Artificial Intelligence [Not regularly offered.] Class 3, cr. 3. Prerequisite: CS 251.
Basic problem-solving strategies, heuristic search, problem reduction and AND/OR graphs, knowledge representation, expert systems, generating explanations, uncertainty reasoning, game playing, planning, machine learning, computer vision, and programming systems such as Lisp or Prolog. Students are expected to spend at least three hours per week gaining experience with artificial intelligence systems and developing software.

478 Introduction to Bioinformatics (BIOL 478, STAT 490B) Sem 1. Class 3, cr. 3. Prerequisite: BIOL 231, 241 or BIOL 230, C S 180 or equivalent courses, or consent of instructor.
Bioinformatics is broadly defined as the study of molecular biological information, targeting particularly the enormous volume of DNA sequence and functional complexity embedded in entire genomes. Topics will include understanding the evolutionary organization of genes (genomics), the structure and function of gene products (proteomics), and the dynamics of gene expression in biological processes (transcriptomics). Inherently, bioinformatics is interdisciplinary, melding various applications of computational science with biology. This jointly taught course introduces analytical methods from biology, statistics and computer science that are necessary for bioinformatics investigations. The course is intended for junior and senior undergraduates from various science backgrounds. Our objective is to develop the skills of both tool users and tool designers in this important new field of research.

483 Introduction to the Theory of Computation Sem. 1 or 2. [Sem. 2 in 2007-08.] Class 3, cr. 3. Prerequisite: CS 381 and CS 352, or consent of instructor.
Turing machines and the Church-Turing thesis; decidability; halting problem; reducibility; undecidable problems; decidability of logical theories; Kolmogorov complexity; time classes: P, NP, NP-complete; space classes: Savitch's theorem, PSPACE-completeness, NL-completeness; hierarchy theorems; approximation theorems; probabilistic algorithms; applications of complexity to parallel computation and cryptography.

490 Topics in Computer Sciences for Undergraduates Sem. 1 and 2. SS. Cr. 1-5. Open to students only with the consent of the department.
Supervised reading and reports in various fields.

497 Honors Research Project Sem. 1 and 2. Cr. 3. Open only to juniors and seniors in the Computer Sciences Honors Program. One semester of the project may be counted as one of the seven computer science courses at or above the 300 level required for the bachelor's degree. One more semester, if approved by the Honors Coordinator, can be used as a free elective.
A group research project directed by Computer Sciences faculty members. Each group must submit a technical report describing its work and the results obtained.

501 Introduction to Computational Science Sem. 1. Class 3, cr. 3. Prerequisite: CS 158, CS 314, and MA 262, or equivalent. CS 250 and 251 are recommended. Credit in this course may not be used toward a graduate degree in Computer Sciences.
Overview of computational science and engineering: study of existing computational environments, software and systems infrastructure for building computational environments, mathematical and algorithmic infrastructure for building computational environments, high performance computing, case studies. Project required.

502 Compiling and Programming Systems Sem. 1. Class 3, cr. 3. Prerequisite: CS 251, 352, and 354. CS 483 is recommended.
Basic principles of compilers and compiler design; control of translation, loading, and execution; symbolic coding systems; lexical and syntactic analysis, design and operation of assemblers and macroprocessors; design of interpretive systems. Students are expected to complete a large programming project as part of the course.

503 Operating Systems Sem. 1 and 2. [In 2007-08, sem. 1 only.] Class 3, cr. 3. Prerequisite: CS 502.
Basic principles of operating systems: addressing modes, indexing, relative addressing, indirect addressing, stack maintenance; implementation of multitask systems; control and coordination of tasks, deadlocks, synchronization, mutual exclusion; storage management, segmentation, paging, virtual memory; protection, sharing, access control; file systems; resource management; evaluation and prediction of performance. Students are expected to spend at least three hours per week gaining hands-on experience in using and modifying a small operating system.

510 Software Engineering Sem. 2. [In 2006-07, sem. 1 instead of sem. 2.] Class 3, cr. 3. Prerequisite: CS 251.
Software life cycles, requirements engineering, software design, design of distributed systems, verification and validation, software architecture, process metrics and models, research methods in software engineering.

514 Numerical Analysis (MA 514) Sem. 1. [In 2006-07, sem. 2 instead of sem. 1, taught by Mathematics.] Class 3, cr. 3. Prerequisite: CS 314 or equivalent.
Iterative methods for solving nonlinear equations; linear difference equations, applications to solution of polynomial equations; differentiation and integration formulas; numerical solution of ordinary differential equations; roundoff error bounds.

515 Numerical Linear Algebra Sem. 1 or 2. [Sem. 2 in 2006-07.] Class 3, cr. 3. Prerequisite: CS 314 or MA 265 or MA 351 or equivalent, and MA 511 or consent of instructor.
Direct and iterative solvers of dense and sparse linear systems of equations, numerical schemes for handling symmetric algebraic eigenvalue problems, and the singular-value decomposition and its applications in linear least squares problems.

520 Computational Methods in Analysis Sem. 2. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: MA 351 or 511 and CS 154 [no longer offered] or 180 or equivalent.
A treatment of numerical algorithms for solving classical problems in real analysis with primary emphasis on linear and nonlinear systems of equations and on optimization problems; the writing, testing, and comparison of numerical software for solving such problems; a discussion of the characteristics of quality software for implementing these algorithms.

525 Parallel Computing Sem. 2. Class 3, cr. 3. Prerequisite: CS 501 and 520, or equivalent.
Parallel computing for science and engineering applications: parallel programming and performance evaluation, parallel libraries and problem-solving environments, models of parallel computing and run-time support systems, selected applications.

526 Information Security Sem. 1. Class 3, cr. 3. Prerequisite: CS 503 or equivalent.
Basic notions of confidentiality, integrity, availability; authentication models; protection models; security kernels; secure programming; audit; intrusion detection and response; operational security issues; physical security issues; personnel security; policy formation and enforcement; access controls; information flow; legal and social issues; identification and authentication in local and distributed systems; classification and trust modeling; risk assessment.

530 Introduction to Scientific Visualization Sem. 1. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: CS 334 and 381, or equivalent. CS 251 is recommended.
Teaches the fundamentals of scientific visualization and prepares students to apply these techniques in fields such as astronomy, biology, chemistry, engineering, and physics. Emphasis is on the representation of scalar, vector, and tensor fields; data sampling and resampling; and reconstruction using multivariate finite elements (surfaces, volumes, and surfaces on surfaces).

531 Computational Geometry Sem. 1. [In 2007-08, sem. 2 instead of sem. 1.] Class 3, cr. 3. Prerequisite: CS 580 or consent of instructor.
Computational geometry studies how to compute with and reason about geometric objects. The subject is playing an increasingly important role in computer graphics, game software, geometric modeling, geographic information systems, and many other applications. Course topics include convex hull, segment manipulations, triangulations, range searching, Voronoi diagrams, window queries, Delaunay triangulation, duality. Some key algorithms are implemented. Questions of floating-point accuracy and robust algorithm design are considered throughout the course.

535 Interactive Computer Graphics (ME 573) Sem. 1. Class 3, cr. 3. Prerequisite: Admission by consent of instructor. Credit cannot be obtained for both CS 435 [no longer offered] and 535.
The principles of computer graphics and interactive graphical methods for problem solving. Emphasis placed on both development and use of graphical tools for various display devices. Several classes of graphics hardware considered in detail. Topics include hardcopy plotting, refresh displays, dynamic techniques, three dimensional transformations and hierarchical modeling, color, modeling of geometry, and hidden surface removal. Projects involve programming of interactive minicomputer graphics applications.

536 Data Communication and Computer Networks Sem. 1. Class 3, cr. 3. Prerequisite: CS 354 and 422. CS 543 or equivalent is recommended.
Data communications: communication hardware technologies including local area and long-haul network hardware, circuit and packet switching, interfaces between computer and network hardware, and performance issues. Network architecture: protocol software and conceptual layering, reliable delivery over an unreliable channel, transport protocols, virtual circuits, datagrams, internetworking as a fundamental design concept, the client-server paradigm, naming and name binding, name servers, addressing and address resolution, routing and routing algorithms, congestion and flow control techniques, network file systems, distribution of computation, and DARPA Internet protocols (TCP/IP) as examples of protocol organization.

541 Database Systems Sem. 1. Class 3, cr. 3. Prerequisite: CS 448.
Fundamentals for the logical design of database systems. The entity-relationship model, semantic model, relational model, hierarchical model, network model. Implementations of the models. Design theory for relational databases. Design of query languages and the use of semantics for query optimization. Design and verification of integrity assertions, and security. Introduction to intelligent query processing and database machines.

542 Distributed Database Systems Sem. 2. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: CS 448. CS 381 and 422 are recommended.
Fundamental issues in distributed database systems that are motivated by the computer networking and distribution of processors and databases. The theory, design, specification, implementation, and performance of distributed database systems.

543 Introduction to Simulation and Modeling of Computer Systems Sem. 1. Class 3, cr. 3. Prerequisite: CS 154 [no longer offered] or 180 and STAT 511, or equivalent.
Simulation: discrete event simulation, process oriented simulation, generating random numbers, simulation languages, simulation examples of complex systems. Nondeterministic models: random variables, Poisson process, moment generating functions, statistical inference and data analysis. Modeling: elementary queueing models, networks of queues, applications to performance evaluation of computer systems.

544 Simulation and Modeling of Computer Systems [Dormant] Class 3, cr. 3. Prerequisite: CS 422 and 543, or equivalent.
Emphasis is placed on the study and development of models of computer systems. Both analytical and discrete-event simulation models are studied. Data gathered from actual systems is used to parameterize and validate these models. The use of models to predict system performance is discussed.

555 Cryptography Sem. 2. Class 3, cr. 3. Prerequisite: MA 351, CS 251, CS 381, and CS 426, or equivalent.
Concepts and principles of cryptography and data security. Cryptography (secret codes): principles of secrecy systems; classical cryptographic systems, including Vigenère and Vernam ciphers; the Data Encryption Standard (DES); public-key encryption; privacy-enhanced email; digital signatures. Proprietary software protection; information theory and number theory; complexity bounds on encryption; key escrow; traffic analysis; attacks against encryption; basic legal issues; e-commerce; the role of protocols.

565 Programming Languages Sem. 2. Class 3, cr. 3. Prerequisite: CS 251 and 352. CS 354 and 483 are recommended.
An exploration of modern or unconventional concepts of programming languages, their semantics, and their implementations; abstract data types; axiomatic semantics using Hoare's logic and Dijkstra's predicate transformers; denotational semantics; functional, object-oriented, and logic programming; concurrency and Owicki-Gries theory. Example languages include ML, Ada, Oberon, LISP, PROLOG, and CSP.

569 Introduction to Robotic Systems (EE 569) [Taught by EE faculty.] Class 3, cr. 3. Prerequisite: EE 382 and basic knowledge of vector-matrix manipulations, or EE 483, or consent of instructor.
The topics to be covered include basic components of robotic systems; selection of coordinate frames; homogeneous transformations; solutions to kinematic equations; velocity and force/torque relations; manipulator dynamics in Lagrange's formulation; digital simulation of manipulator motion; motion planning; obstacle avoidance; controller design using the computed torque method; and classical controllers for manipulators.

573 Data Mining [Proposed, offered as CS 590D in sem. 1 of 2007-08.] Sem. 1 in alternate years. Class 3, cr. 3. Prerequisite: STAT 511 or equivalent, CS 381 or equivalent, or permission of instructor.
Data Mining has emerged at the confluence of artificial intelligence, statistics, and databases as a technique for automatically discovering summary knowledge in large datasets. This course introduces students to the process and main techniques in data mining, including classification, clustering, and pattern mining approaches. Data mining systems and applications will also be covered, along with selected topics in current research.

574 Advanced Computer Graphics Applications (ME 574) [Taught by ME faculty.] Class 3, cr. 3. Prerequisite: CS 535 (ME 573).
Study and application of advanced concepts of computer graphics, including high performance three dimensional interaction, scientific visualization, surface and solid modeling and engineering applications. Students select, design and implement individual projects.

580 Algorithm Design, Analysis, and Implementation Sem. 1 and 2. Class 3, cr. 3. Prerequisite: CS 381 and 483.
Basic techniques for designing and analyzing algorithms: dynamic programming, divide and conquer, balancing. Upper and lower bounds on time and space costs, worst case and expected cost measures. A selection of applications such as disjoint set union/find, graph algorithms, search trees, pattern matching. The polynomial complexity classes P, NP, and co-NP; intractable problems.

584 Theory of Computation and Computational Complexity Sem. 2. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: CS 483.
The theory of general purpose programming systems. Recursive and partial-recursive functions; recursive and recursively enumerable sets. The Church-Turing thesis. The recursion theorem, Rogers' translation theorem, Rice's undecidability theorem. The general theory of computational complexity: there are no general solutions to natural optimization problems. Complexity for specific models of computation: the polynomial complexity classes P, NP, and PSPACE; NP-hard and PSPACE-hard problems, inherently exponential problems.

590 Topics in Computer Sciences Sem. 1 and 2. Class 1-5, cr. 1-5.
Directed study for students who wish to undertake individual reading and study on approved topics.

591 Seminar Sem. 1 and 2. Class 1, cr. 1. Prerequisite: Offered on a pass/not pass basis only. May be repeated for credit.
A weekly seminar presented by faculty and invited speakers, normally in a specific area.

591C Research Seminar for First-Year Graduate Students First eight weeks of sem. 1. Class 2, cr. 1. Prerequisite: none. Offered on a pass/not pass basis only.
The purpose of this seminar is to help beginning graduate students in Computer Science find research areas in which they are interested and faculty members with whom they would like to work.

591S Information Security and Cybercrime Seminar Sem. 1 and 2 in 2006-07.
The security version of CS 591 (q.v.).

603 Advanced Topics in Distributed Systems Sem. 2. Class 3, cr. 3. Prerequisite: CS 503. CS 542 is recommended.
Design and control of distributed computing systems (operating systems and database systems). Topics include principles of naming and location, atomicity, resource sharing, concurrency control and other synchronization, deadlock detection and avoidance, security, distributed data access and control, integration of operating systems and computer networks, distributed systems design, consistency control, and fault tolerance.

614 Numerical Solution of Ordinary Differential Equations Sem. 1. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: CS 514.
Numerical solution of initial-value problems by Runge-Kutta methods, general one-step methods, and multistep methods; analysis of truncation error, discretization error, and rounding error; stability of multistep methods; numerical solution of boundary- and eigen-value problems by initial-value techniques and finite difference methods.

615 Numerical Methods for Partial Differential Equations I (MA 615) Sem. 2. Class 3, cr. 3. Prerequisite: CS 514 and MA 523.
Finite element method for elliptic partial differential equations; weak formulation; finite-dimensional approximations; error bounds; algorithmic issues; solving sparse linear systems; finite element method for parabolic partial differential equations; backward difference and Crank-Nicolson time-stepping; introduction to finite difference methods for elliptic, parabolic, and hyperbolic equations; stability, consistency, and convergence; discrete maximum principles.

626 Advanced Information Assurance Offered every third semester. [Sem. 2 in 2007-08.] Class 3, cr. 3. Prerequisite: CS 526 and 555.
Advanced topics in information assurance, including selections from the following: penetration testing, formal verification of systems, formal models of information flow and protection, distributed system authentication, protocol design and attack, computer viruses and malware, intrusion and anomaly detection models, multi-level security, active defenses, investigation and forensics, network firewalls, anonymity and identity, e-commerce support, database security models and mechanisms.

635 Capturing and Rendering Real-World Scenes Sem. 2. Class 3, cr. 3. Prerequisite: CS 535 or a solid foundation in computer graphics, CS 580, programming proficiency in C or C++, and basic linear algebra.
Advanced techniques for automated modeling and visualization of complex environments such as rooms, buildings, urban scenes, and landscapes. Topics covered are at the confluence of computer graphics, computer vision and engineering and include: capture technologies, acquisition device calibration, view registration, panoramic images, 3D reconstruction from images, view morphing, 3D image warping, lightfield modeling and rendering, visual hulls, point-based modeling and rendering, view dependent texture mapping, and application development issues and examples.

636 Internetworking Sem. 1. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: CS 503.
Principles of internetwork architecture and communication protocols underlying interoperable systems. Topics include universal interconnection, internet addressing and routing; address binding, control of internet congestion and flow, examples of internet protocol suites (TCP/IP and XNS), round trip time estimation, naming and name resolution, internet applications programs, the ISO/OSI model.

638 Multimedia Networking and Operating Systems Sem. 1 or 2. [Sem. 2 in 2007-08.] Class 3, cr. 3. Prerequisite: undergraduate background in computer science or a closely related discipline, CS 503 or 536, or consent of instructor.
For graduate students in computer sciences who have a background in networking and operating systems and are interested in research in networked multimedia systems. The course consists of a selection of networking and operating system topics for realizing high performance, predictable, scalable, flexible, and secure multimedia systems. Topics may vary to reflect timely research issues and the current interests of the instructor(s). Students are expected to complete a term project. Presentations also may be required.

641 Multimedia Database Systems Sem. 1 or 2. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: CS 541 or 542.
Prepares students for research in multimedia database systems. Students are exposed to a variety of emerging innovative techniques to store, manipulate, communicate, visualize, and reason with multimedia systems.

650 Computational Aspects of Parallel Processing [Dormant] Class 3, cr. 3. Prerequisite: CS 580.
Introduction to parallel models of computation (e.g., PRAM's, fixed interconnection networks), relationships and simulation results between models, processor-time and area-time tradeoffs; parallel algorithm techniques and their implementation on different models for problems such as sorting, graph problems, message routing, and numerical and algebraic problems; lower bound results on communication complexity, inherently sequential problems; layout techniques and their relationships to VLSI layout systems.

655 Advanced Cryptology Offered every third semester. [Not offered in 2007-08.] Class 3, cr. 3. Prerequisite: CS 526 and 555.
Advanced topics in cryptography and cryptanalysis, including selections from the following: Steganographic methods. Cryptanalytic techniques, including differential cryptanalysis, chosen plaintext attacks. Message digest algorithm construction. Digital cash. Quantum cryptography. N-key systems. Minimal and zero-knowledge systems. Protocol design and failure. Verification of algorithms. Key generation and management. Traffic analysis. VPN construction and operation. Politics, espionage and law enforcement concerns.

661 Formal Compiling Methods [Not regularly offered.] Class 3, cr. 3. Prerequisite: CS 502.
Application of concepts developed in formal language and automata theory to the design of programming languages and their processors. Models of syntactic analysis, including canonical precedence, LR(k) and LL(k) parsing methods and variants; efficiency of each. Synthesis techniques, including symbol tables, storage administration, parameter mechanisms, garbage collection; optimization considerations. Models of synthesis, including level, affix, attributed grammars; prospects of fully automating compiler design. Applicative vs. procedural languages and their implementations based on the semantic definition of a language (LISP, Lucid) and on proof-like techniques (PROLOG, equational systems); merits of such approaches.

662 Pattern Recognition and Decision-Making Processes (EE 662) [Taught by EE faculty.] Class 3, cr. 3. Prerequisite: EE 302 or equivalent.
Introduction to the basic concepts and various approaches of pattern recognition and decision-making processes. The topics include various classifier designs, evaluation of classifiability, learning machines, feature extraction, and modeling.

668 Introduction to Artificial Intelligence (EE 668) [Taught by EE faculty.] Class 3, cr 3. Prerequisite: EE 600.
Discussions of deterministic and heuristic approaches of making systems behave intelligently. Topics include various heuristic search techniques, knowledge representation methods, game-playing, question-answering systems, theorem-proving mechanisms, planning, general problem solvers, and current topics of interest in the artificial intelligence area.

690 Seminar on Topics in Computer Sciences Sem. 1 and 2. Cr. 0-5.

698 Research. M.S. Thesis

699 Research. Ph.D. Thesis


grad-info@cs.purdue.edu

2007.03.01