### Courses

#### Computer and Information Science

- CSCI-N 451 Web Game Development (3 cr.) Study of basic game development principles with a focus on client-side Web delivery. Topics to include creation of sprite objects, user interaction concepts, basic intelligence concepts, game data structures, and basic game physics. Lecture and laboratory.
- CSCI-N 100 Introduction to Computers and Computing (3 cr.) P or C: MATH 001, M001, or equivalent. No computing experience assumed. How computers work, word processing, spreadsheets, file management, and Internet skills. Emphasis on problem-solving tech-niques. Lecture and laboratory. Credit given for only one of CSCI N100, CPT 10600, CIT 10600, or BUS K201.
- CSCI-N 199 Introductory Computing Topics (topic varies) (1-3 cr.) Seminars in emerging technologies. May be repeated for credit.
- CSCI-N 201 Programming Concepts (3 cr.) Summary of basic computing topics, problem solving techniques, and their application to computing. Introduction to programming concepts with a focus on language-independent principles, such as algorithm design, debugging strategies, essential control structures, and basic data structure concepts. Lecture and laboratory.
- CSCI-N 207 Data Analysis Using Spreadsheets (3 cr.) Summary of basic computing topics. An introduction to data analysis using spreadsheets. Emphasis on the application of computational problem-solving techniques. Lecture and laboratory.
- CSCI-N 211 Introduction to Databases (3 cr.) Summary of basic computing topics. Introduction to database design concepts, creation of user forms, development of databases, querying techniques, and building reports. Focus on relational database systems from development and administration point of view. Lecture and laboratory.
- CSCI-N 241 Fundamentals of Web Development (3 cr.) Introduction to writing content for the Internet and World Wide Web. Emphasis on servers, hand-coded HTML, Cascading Style Sheets, and extending HTML with other Web technologies. Lecture and laboratory.
- CSCI-N 299 Survey of Computing Applications (topic varies) (1-3 cr.) An introduction to an emerging technology in the computing field. It will emphasize the various problems technology helps to solve and specific problem-solving strategies. Lecture and laboratory. May be repeated for credit.
- CSCI-N 301 Fundamental Computer Science Concepts (3 cr.) P: MATH M 118. An introduction to fundamental principles of computer science, including hardware architecture, algorithms, software engineering, and data storage. Lecture and laboratory.
- CSCI-N 305 C Language Programming (3 cr.) The basics of computer programming concepts using the C programming language. Emphasis on problem solving and algorithm implementation using a universal subset of the C programming language. Lecture and laboratory.
- CSCI-N 311 Advanced Database Programming, Oracle (3 cr.) P: N211 or equivalent. Focus on the concepts and skills required for database programming and client server development. Concepts will apply to any modern distributed database management system. Emphasis on developing Oracle SQLPlus scripts, PL/SQL server side programming, and Oracle database architecture. Students with programming experience in ODBC compliant languages will be able to practice connecting such languages to an Oracle database. Lecture and laboratory.
- CSCI-N 321 System and Network Administration (3 cr.) P: N301 or equivalent. Fundamental concepts of system administration. Design and administration of network servers and workstations. Focus on basic network concepts, such as user account administration, resource allocation, security issues, and Internet service management. Lecture and laboratory.
- CSCI-N 331 Visual Basic Programming (3 cr.) An introduction to programming with a focus on rapid application development environments, event-driven programming, and programming in the Windows environment. Course will demonstrate how the major application types (spreadsheets, databases, text editors) are written. Lecture and laboratory.
- CSCI-N 335 Advanced Programming, Visual Basic (3 cr.) P: N331 or equivalent. Databases and VB, object-oriented design and practice, the component object model, interobject communication, related RAD environments such as VB for Applications and ActiveX using the Windows API, and generating online help. Lecture and laboratory.
- CSCI-N 341 Introduction to Client-Side Web Programming (3 cr.) P: N241 or equivalent. Introduction to programming with a focus on the client-side programming environment. Programming using languages commonly embedded in Web browsers. Lecture and laboratory.
- CSCI-N 342 Server-Side Programming for the Web (3 cr.) P: N341. Designing and building applications on a Web server. Focuses on the issues of programming applied to Web servers. Emphasis on relational database concepts, data design, languages used on the server, transaction handling, and integration of data into Web applications.
- CSCI-N 343 Object-Oriented Programming for the Web (3 cr.) P: N341 or N307. Algorithm design and development within the object-oriented paradigm. Students will utilize Java to create Web-based application software with strong user interaction and graphics. In addition, students will utilize Oracle and SQL to learn introductory database design principles, coupling back-end database operation to application software. Lecture and laboratory.
- CSCI-N 345 Advanced Programming, Java (3 cr.) P: N307 or N331 or N341 or equivalent. A Java language course designed for students familiar with programming and the World Wide Web. Focus on the unique aspects of Java, Applet, and GUI design, object-oriented programming, event-handling, multithreaded applications, animation, and network programming. Lecture and laboratory.
- CSCI-N 351 Introduction to Multimedia Programming (3 cr.) An integration of computing concepts and multimedia development tools. An introduction to the science behind multimedia (compression algorithms and digital/audio conversion). Use of authoring tools to create compositions of images, sounds, and video. Special emphasis given to using the Web as a multimedia presentation environment. Lecture and laboratory.
- CSCI-N 355 Introduction to Virtual Reality (3 cr.) Explore concepts of 3D imaging and design including primitive shapes, transformations, extrusions, face sets, texture mapping, shading, and scripting. Lecture and laboratory.
- CSCI-N 361 Fundamentals of Software Project Management (3 cr.) P: N300-level programming class or consent of instructor. Tools and techniques used to manage software projects to successful completion. Problem-solving focus to learn specification development and management, program success metrics, UML modeling techniques, code design and review, principles, testing procedures, usability measures, release and revision processes, and project archival. Lecture and laboratory.
- CSCI-N 399 Topics in Computing (topic varies) (1-3 cr.) P: N200-level course or equivalent. An investigation of an emerging language or topic in computing. May be repeated for credit.
- CSCI-N 431 E-Commerce with ASP.NET (3 cr.) P: N331 or equivalent. Topics include basic Web controls, form validation, connecting to an Enterprise-level database, SSL, and sending email within an ASP.NET Web page. A significant software development final project creating a functional Web store is featured. Lecture and laboratory.
- CSCI-N 435 Data Management Best Practices with ADO.NET (3 cr.) P: N331 or equivalent. A study of managing data in the .NET environment. Focus on strategies to efficiently manage data for large-scale projects. Topics include XML, DataSets, SQL, and error management. Lecture and laboratory.
- CSCI-N 443 XML Programming (3 cr.) P: N241 and an N300-level programming course. Fundamentals of XML programming language. After mastering fundamental XML scripting syntax, the course focuses on narrative-centric and data-centric XML applications. Narrative content includes CSS, DTD and XSLT, and X-path, -link, and -pointer tools; data-centric content includes the DOM, Schemas, and ADO/ASP. A required masterpiece project summarizes course competencies. Lecture and laboratory.
- CSCI-N 461 Software Engineering for Applied Computer Science (3 cr.) P: N361 or consent of the instructor. This is a survey course covering software engineering concepts, tools, techniques, and methodologies. The topics covered include software engineering, software process and its difficulties, software lifecycle models, project planning including cost estimation, design methodologies including structured design, data structure-oriented design, object-oriented design, and software testing. This course is intended for nonmajors, and credit will not be awarded to computer science majors.
- CSCI-N 485 Capstone Project in Applied Computing (3 cr.) P: N301 and N341. This course provides students with a mechanism for producing and integrating technical achievement meritorious of program culmination. The project will demonstrate subject matter mastery within project development guidelines and reflect both a breadth and depth of technically focused problem-solving skills.
- CSCI-N 499 Topics in Applied Computing (topic varies) (1-3 cr.) P: N300-level course or equivalent. An investigation and examination of an emerging discipline in applied computer science.
- CSCI-N 300 Mobile Computing Fundamentals (3 cr.) P: N241 (or equivalent). Survey of programming & application development for mobile computing devices. Topics include mobile technology, location-based technology, mobile security, mobile platforms, programming languages & application development for mobile devices. Lecture and Laboratory.
- CSCI-N 410 Mobile Computing Application Development (3 cr.) P: Visual Basic.NET or C# (Any of the following: N331, N351, N431, N499). Focus of this course is to give programmers information they need to develop new applications or move existing applications to handheld devices and other resource-constrained hardware. All programming is done via Visual Basic.NET or C#.
- CSCI-N 420 Mobile Computing Cross Platform Development (3 cr.) P: N343. Survey of programming & application development for mobile and wireless computing devices. Topics include recommended practices using the J2 platform for micro devices such as cell phones and PDAs, the implementation of cross-device GUI's, using event handlers and remote server access.
- CSCI-N 430 Mobile Computing & Interactive Applications (3 cr.) P: N201. Introduction to programming with emphasis on the Flash ActionScript environment as used in mobile devices. Topics include interface design for mobile devices, use of Flash as an application environment, game and multimedia development, communication with a web server, and parsing XML data.
- CSCI-N 450 Mobile Computing with Web Services (3 cr.) P: Any of the following: N410, N420, N430. Fundamental concepts of data transport between client devices and a server. Topics include web services, SOAP (simple object access protocol), and XML.
- CSCI 47600 Scientific Computing II (3 cr.) P: 47500. Spring. Elementary statistical computing: time series analysis, model fitting, robust methods, generation of pseudorandom numbers, and Monte Carlo methods. Interpolation and curve fitting; numerical integration. Solving ordinary differential equations. Use of packaged environments and symbolic computation for scientific purposes.
- CSCI 23000 Computing I (4 cr.) P or C: MATH 15400 or MATH 15900. The context of computing in history and society, information representation in digital computers, introduction to programming in a modern high-level language, introduction to algorithm and data structures, their implementation as programs.
- CSCI 24000 Computing II (4 cr.) P: 23000. Continues the introduction of programming began in CSCI 230, with particular focus on the ideas of data abstraction and object-oriented programming. Topics include programming paradigms, principle of language design, object-oriented programming, programming and debugging tools, documentation, recursion, linked data structures, and introduction to language translation.
- CSCI 26500 Advanced Programming (3 cr.) P or C: ECE 26400 and CSCI 24200 or CSCI 23000. Spring. Learn advanced programming skills and concepts. Introduction to software engineering: problem specification and program design with emphasis on object-oriented programming, programming style, debugging, and documentation. A significant software project's required. (This course is for computer engineering and computer information systems majors.)
- CSCI 30000 Systems Programming (3 cr.) P or C: 23000 and 24000. Fall. Assembly language programming and structure of a simple and a typical computer. Pseudo operations, address structure, subroutines, and macros. File I/O and buffering techniques. Interfacing with high-level languages. Assemblers: one- and two-pass assemblers, system dependent and independent assembler features, and design options. Loaders, linkers, and macro processors.
- CSCI 34000 Discrete Computational Structures (3 cr.) P: 23000 and MATH 16500. Fall. Theory and application of discrete mathematics structures and their relationship to computer science. Topics include mathematical logic, sets, relations, functions, permutations, combinatorics, graphs, Boolean algebra, digital logic, recurrence relations, and finite-state automata.
- CSCI 35500 Introduction to Programming Languages (3 cr.) P: 24000 and 34000. Spring. Programming language concepts and different paradigms of programming. Topics include syntax and semantics of high-level languages, parsing methods, subprograms and their implementation, data abstraction, language translation overview including lexical analysis, syntax-directed translation, symbol table handling, code generation, functional programming, logic programming, and object-oriented programming.
- CSCI 36200 Data Structures (3 cr.) P: 24000 and 34000. Spring. A study of the design and analysis of data structures and algorithms. Abstract data types: arrays, stacks, queues, lists, trees, and graphs. Algorithms: sorting, searching, and hashing. File structures: organization and access methods.
- CSCI 40200 Architecture of Computers (3 cr.) P: 34000. Fall. Basic logic design. Storage systems. Processor organization: instruction formats, addressing modes, subroutines, hardware and microprogramming implementation. Computer arithmetic, fixed and floating point operations. Properties of I/O devices and their controllers. Interrupt structure. Virtual memory structure, cache memory. Examination of architectures such as microcomputers, minicomputers, and vector and array processors.
- CSCI 40300 Introduction to Operating Systems (3 cr.) P: 36200, and 40200. Spring. Operating system concepts; history, evolution and philosophy of operating systems. Concurrent processes, process coordination and synchronization, CPU scheduling, deadlocks, memory management, virtual memory, secondary storage and file management, device management, security and protection, networking, and distributed and real-time systems.
- CSCI 41400 Numerical Methods (3 cr.) P: MATH 26200 or MATH 35100. Fall. Error analysis, solution of nonlinear equations, direct and iterative methods for solving linear systems, approximation of functions, numerical differentiation and integration, and numerical solution of ordinary differential equations. Not open to students with credit in 51200.
- CSCI 43200 Security in Computers (3 cr.) P:40300. An introduction to computing security to include cryptography, identity and authentication, software security, operatiing system security, trusted operating system design and evaluation, network threats and defenses, security management, legal aspects of security, privacy and ethics.
- CSCI 43500 Multimedia Information Systems (3 cr.) P or C: CSCI 36200, MATH 35100/51100. Multimedia inforamtion systems concepts, evolution of multimedia information systems, media and supporting device commonly associated, image databases, techniques for presenting visual information, video databases, multimodels, audio databases, text databases, and multimedia information systems architecture.
- CSCI 43600 Principles of Computer Networking (3 cr.) P: CSCI 36200. Survey of underlying principles, fundamental problems, and their solutions in designing computer networks. Laboratory projects include using network systems and network simulation environments. Topics include: motivations, networking topologies, layered open systems protocols, transmission capacity, circuit and packet switching, packet framing and error correction, routing, flow and congestion control, and internetworking.
- CSCI 43700 Introduction to Computer Graphics (3 cr.) P: 36200 and MATH 35100/51100. An introduction to 3D programming with emphasis on game engine development using 3D graphics techniques and the standard and platform independent OpenGL library. Topics include lighting, shading, texture mapping, coordinate systems and transformations, collision detection, 3D geometric and physically based modeling and animation.
- CSCI 43800 Advanced Game Development (3 cr.) P: 43700. Advanced game design and development principles and technologies. Students will gain practical experience through extensive game development project. Topics include character animation, special effects, user interface design, networking for computer games, game engine components and variations, game performance considerations, artificial intelligence, and ethics in computer games.
- CSCI 44100 Client-Server Database Systems (3 cr.) P or C: CSCI 36200. Database system concepts, data models database design, CASE tools, SQL, query processing and query optimization, transaction processing, reliability and security issues, database interactions on the World Wide Web.
- CSCI 44300 Database Systems (3 cr.) P: 36200. Fall. Relational database systems: architecture, theory, and application. Relational data structure, integrity rules, mathematical description, data manipulation. Standard SQL and its data manipulation language, engineering aspects of database design in industry, introduction to nonrelational database systems.
- CSCI 44600 Introduction to Microprocessor Architecture (3 cr.) P: 40200. Introduction to programmable logic; elements of microprocessor system design; interrupt structures; interfacing using LSI devices; hardware timers; interactive debugging; physical device I/O programming; vectored and polled service; microprocessor architecture; and self-paced laboratory using A/D converters, D/A converters, etc.
- CSCI 44800 Biometric Computing (3 cr.) P: CSCI 36200 and STAT 41600 or STAT 51100. Biometrics is capturing and using physiological and behavioral characteristics for personal identification. It is set to become the successor to the PIN. This course will introduce computational methods for the implementation of various biometric technologies including face and voice recognition, fingerprint and iris identification, and DNA matching.
- CSCI 45000 Principles of Software Engineering (3 cr.) P: CSCI 36200. Fall. Tools and techniques used in software development. Lifecycle concepts applied to program specification, development, and maintenance. Topics include overall design principles in software development; the use of structured programming techniques in writing large programs; formal methods of program verification; and techniques and software tools for program testing, maintenance, and documentation. A primary goal of this course is to provide experience in team development of software.
- CSCI 45200 Object-Oriented Analysis and Design (3 cr.) P: CSCI 36200. Spring. Introduction to the object-oriented paradigm in software development. Basic concepts: objects, classes, messaging, inheritance, and methodologies. Analysis: defining objects, structures, attributes, and services. Design: transforming the analytic model into the design model. Implementation: comparison of the support features provided by languages such as Smalltalk, C++, Eiffel, and CLOS. A significant design project is required.
- CSCI 46300 Analysis of Algorithms (3 cr.) P: 36200. Techniques for analyzing and comparing algorithms. Average case analysis in sorting and searching; dynamic programming: greedy algorithms, amortized analysis, and applications; matrix algorithms: polynomials, discrete Fourier transforms, and fast Fourier transforms, parallel algorithms: examples in sorting, searching, graphs, and matrices, computational complexity, polynomial complexity classes P, NP.
- CSCI 47000 Automata and Formal Languages (3 cr.) P: 36200. Fall. Introduction to formal languages and automata theory: finite automata and regular expressions, context-free grammars and languages, pushdown automata, equivalence of CFGs and pushdown automata, application of pushdown automata in parsing, closure properties, pumping lemmas, decision procedures, Turing machines, computability, undecidability, and a brief survey of the Chomsky hierarchy.
- CSCI 47500 Scientific Computing I (3 cr.) P: 23000 and MATH 35100. P or C: MATH 26200. Fall. Solving scientific problems on computers. Languages for scientific computing. Software development on workstations: using tools the environment provides, organization of programs. Computer architecture: impact on software and algorithms. Problem formulation: model selection/simplification, relationship to numerical methods. Solution of linear equations: methods and packages. Nonlinear equations and optimization problems.
- CSCI 47700 High Performance Computing (3 cr.) P: 47600. Fall. Architecture of supercomputers: pipelined, vector, SIMD, MIMD; implications for algorithm and program design; and vectorization, parallelization, loop restructuring, and nonstandard language features. Splitting computation between supercomputers and workstations; interactive analyses of remote machines' output. Numerical methods for large-scale problems: examples from continuum mechanics, graphical visualization, and statistical computing. A project is required.
- CSCI 48100 Data Mining (3 cr.) P or C: 24000, MATH 35100/51100, STAT 51100/41600. An introduction to data warehousing and OLAP technology for data mining, data processing, languages and systems, and descriptive data mining: characterization and comparison, association analysis classification and predication, cluster analysis mining complex types of data, application, and trends in data mining.
- CSCI 48500 Expert System Design (3 cr.) P: 36200. Overview of artificial intelligence; expert system technology; early expert systems: MYCIN, DENDRAL; theoretical foundations, uncertainty measures, knowledge representation, inference engines; reasoning mechanisms: forward and backward chaining; and explanation systems, expert system shells, tools, and intelligent hybrid systems.
- CSCI 48700 Artificial Intelligence (3 cr.) P: 36200. Study of key concepts and applications of artificial intelligence. Problem-solving methods, state space search, heuristic search, knowledge representation: predicate logic, resolution, natural deduction, nonmonotonic reasoning, semantic networks, conceptual dependency, frames, scripts, and statistical reasoning; advanced AI topics in game playing, planning, learning, and connectionist models.
- CSCI 49000 Topics in Computer Sciences for Undergraduates (1-5 cr.) By arrangement. Fall, spring, summer. Supervised reading and reports in various fields. Open to students only with the consent of the department.
- CSCI 49500 Explorations in Applied Computing (1-6 cr.) Fall, spring, summer. Explorations in Applied Computing is an undergraduate capstone experience. Students will work in teams, advised by faculty and external liaisons, to solve real-world computing problems. This hands-on experience will cultivate technical expertise, utilization of analytical thinking, quantitative reasoning, project management skills, and communication skills.
- CSCI 12000 Windows on Computer Science (1 cr.) A first-year seminar for beginning majors in Computer Science. Open to all beginning IUPUI students and transfer students with below 18 credit hours.
- CSCI 34050 Honors Discrete Computational Structures (3 cr.) P: MATH 16500 or equivalent and CSCI 23000 or equivalent, or instructor permission. Fall/Spring. Discrete structures introduces students to the vocabulary, notation, formalisms, constructs, and methods of abstraction in which almost all of the advanced thinking in and about computer science is carried out. Topics include basic logic, proof techniques, recursion and recurrence relations, sets and combinatorics, probability, relations and functions, graphs and trees, Boolean algebra, and models of computation. An advanced project is expected in this course.
- CSCI 36250 Honors Data Structures and Algorithms (3 cr.) P: CSCI 23000, CSCI 24000, and CSCI 34000 or CSCI 34050. Fall/Spring. This course includes fundamentals of data structures and algorithms, such as algorithm analysis, lists, stacks, and queues, trees, hashing and heaps, sorting, graph algorithms, and file structures. An advanced project is expected.
- CSCI 48400 Theory of Computation (3 cr.) P: CSCI 36200 Techniques for analyzing and comparing algorithms are presented. Algorighms analyzed include those for sorting, searching, graph theory, comginatorics, computational geometry, matrices, and other problems. Computational complexity, including Turing Machines, NP completeness, and effecive computability.
- CSCI 58200 Automata and Formal Languages (3 cr.) P: 47000. Spring. Finite automata, regular expressions; push-down automata, context-free grammars; and languages and behaviors. Closure properties, pumping lemmas, and decision procedures. Deterministic context-free languages and LR(k) parsing; brief survey of the Chomsky hierarchy.
- CSCI 50200 Compiling and Programming Systems (3 cr.) P: 30000. R: 47000. Fall. 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; and design of interpretive systems. Students are expected to complete a large programming project as part of the course.
- CSCI 50300 Operating Systems (3 cr.) P: 40300. Spring. 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, and mutual exclusion; storage management, segmentation, paging, virtual memory, protection, sharing, and access control; file systems; resource management; and evaluation and prediction of performance.
- CSCI 50400 Concepts in Computer Organization (3 cr.) P: 40200.The fundamentals of computer hardware for computer scientists. An overview of the organization of modern computers, ranging from sequential to advanced machines. CISC, RISC, and vector processors; multiprocessors; virtual storage, hierarchical memory; interaction with O/S; connection models; high-level programming support; and cost/performance analysis.
- CSCI 50600 Management of the Software Development Process (3 cr.) A survey of the fundamental principles and concepts of managing a software project. Topics include life cycle models, standards and goals, cost estimation, risk analysis, tool use, component reuse, traceability, metrics, and process control and improvement. Students are required to apply management concepts using a project-based approach.
- CSCI 50700 Object-Oriented Design and Programming (3 cr.) An advanced exploration of the object-oriented model and programming. Topics range from a review of the object model to advanced concepts such as abstraction mechanisms, standard library/packages, OO design using an OO language, and the syntax and the semantics of constructs.
- CSCI 51200 Numerical Methods for Engineers and Scientists (3 cr.) P: MATH 35100 or MATH 51100; MATH 51000; and knowledge of programming. Not open to students with credit in 41400. Not normally accepted for graduate credit in computer science programs. A survey of the useful methods of computation. Solution of nonlinear equations and systems of nonlinear equations. Numerical methods for systems of linear equations. Approximate differentiation and integration. Numerical solution of ordinary differential equations. Introduction to partial differential equations and elementary approximation methods.
- CSCI 51400 Numerical Analysis (3 cr.) P: 41400 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, and round-off error bounds.
- CSCI 51500 Numerical Analysis of Linear Systems (3 cr.) P: knowledge of programming, and MATH 35100 or MATH 51100. Computational aspects of linear algebra; linear equations and matrices; direct and iterative methods; eigenvalues and eigenvectors of matrices; error analysis.
- CSCI 51600 Computational Methods in Applied Mathematics (3 cr.) P: 26500 and MATH 51000 or consent of instructor. A study of techniques such as direct integration, shooting, finite difference, finite elements, method of weighted residuals, and methods of characteristics for solving problems in fluid mechanics, solid mechanics, dynamics, and other fields of applied mathematics.
- CSCI 52000 Computational Methods in Analysis (3 cr.) P: 23000 or equivalent, and MATH 35100 or MATH 51100. 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; and a discussion of the characteristics of quality software for implementing these algorithms.
- CSCI 53600 Data Communication and Computer Networks (3 cr.) P: 40200. 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, Internet working as a fundamental design concept, the client-server paradigm, naming and name binding, name servers, addressing and address resolution, routing algorithms, congestion and flow control techniques, network file systems, distribution of computation, and DARPA Internet protocols (TCP/IP) as examples of protocol organization.
- CSCI 53700 Introduction to Distributed Computing (3 cr.) P: 50300 and 53600. Introduction to the principles and methods in the design of distributed computing systems. It covers the fundamentals of distributed computing from four perspectives: underlying communication media, protocols and their implications; operating system issues; high-level language constructs; and distributed algorithms.
- CSCI 53800 The Design of Interactive Systems (3 cr.) Fundamental concepts and tools employed in designing the interaction between humans and machines and the mediating interfaces. Topics include: design problem, interface design concepts, experimental design and analysis, cognitive and predictive models, the design project, case studies, and applications.
- CSCI 53900 Computing with Distributed Objects (3 cr.) An introductory treatment of the distributed-object model and programming. The topics range from a review of the distributed and object models of computation to advanced concepts such as remote method invocations, object brokers, object services, open systems, and future trends for distributed-object systems.
- CSCI 54100 Database Systems (3 cr.) P: 44300 or equivalent. Spring. 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.
- CSCI 54300 Introduction to Simulation and Modeling of Computer Systems (3 cr.) P: 26500 and STAT 51100 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 queuing models, network of queues, and applications to performance evaluation of computer systems.
- CSCI 54700 Information Storage and Retrieval and Natural Language Processing (3 cr.) P: 54100. Complex data structures of fields within records, as well as clustered, multilist, and inverted files; key decoding by tree and randomized techniques; overall techniques of classical document retrieval systems, e.g., the MEDLARS and NASA systems; overall techniques of automatic document retrieval systems, e.g., TIP and SMART, the internal structure of SMART; question answering systems; and natural language translation.
- CSCI 54800 Introduction to Bioinformatics (3 cr.) P: 34000, BIOL K483, CHEM C483, or MATH 51100. Analysis of biological data employing various computational methods to obtain useful information in the emerging area of bioinformatics. Topics include structures, functions and evolution of proteins and nucleic acids, retrieval and interpretation of bioinformation from the Internet, learning principles, algorithms and software for sequence alignment, similarity search of sequence databases, estimation of phylogenetic trees, structural prediction, and functional inference.
- CSCI 54900 Intelligent Systems (3 cr.) This course will discuss problems in the area of intelligent systems. Topics include the formalisms within which these problems are studied, the computational methods that have been proposed for their solution, and the real-world technological systems to which these methods have been applied.
- CSCI 55000 Computer Graphics (3 cr.) An introduction to computer graphics. Topics include the concepts, principles, algorithms, and programming techniques in 3D interactive computer graphics. Emphasis is on the development and applications of 3D graphic algorithms and methods.
- CSCI 55200 Advanced Graphics and Visualization (3 cr.) P: 55000. An introduction to data visualization methods and tools, and related graphics techniques. Students will explore a variety of data representation and modeling techniques, their corresponding visualization algorithms, and practical visualization applications in scientific, engineering, and biomedical fields.
- CSCI 55600 Fault-Tolerant Computing (3 cr.) P: 36200. Concepts of fault-tolerant computing; phases of fault-tolerance; applications to commercial, communication, and aerospace systems; fault-tolerance in multi-processor systems; diagnosis techniques; software fault-tolerance.
- CSCI 56500 Programming Languages (3 cr.) P: 30000. R: 47000. Fall. 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.
- CSCI 58000 Algorithm Design, Analysis, and Implementation (3 cr.) P: 46300 and 47000. 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.
- CSCI 58500 Mathematical Logic I (3 cr.) Students should register for MATH 58500. P: MATH 35100. Formal theories for propositional and predicate calculus with study of models, completeness, and compactness. Formalization of elementary number theory; Turing machines, halting problem, and the undecidability of arithmetic.
- CSCI 59000 Topics in Computer Science (3 cr.) Fall, spring. Directed study for students who wish to undertake individual reading and study on approved topics.
- CSCI 52600 Information Security (3 cr.) Basic notions of confidentiality, integrity, availability; authentication and protection models; security kernels; secure programming; audit; intrusion detection/response; operational security issues; personal security; policy formation/enforcement; access controls; information flow; legal/social issues; identification and authentication in local and distributed systems; classification and trust modeling; risk assessment.
- CSCI 55500 Cryptography (3 cr.) P: MATH 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, 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.
- CSCI 57300 Data Mining (3 cr.) P: STAT 511 or equivalent, CS 381 or equivalent, or permission of the 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.
- CSCI 61400 Numerical Solution of Ordinary Differential Equations (3 cr.) P: 51400. 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-value and eigenvalue problems by initial-value techniques and finite difference methods.
- CSCI 61500 Numerical Solution of Partial Differential Equations (3 cr.) P: 51500 and MATH 52300. The numerical solution of hyperbolic, parabolic, and elliptic equations by finite difference methods; iterative methods (Gauss-Seidel, overrelaxation, alternating direction) for solving elliptic equations; discretization and round-off errors; explicit and implicit methods for parabolic and hyperbolic systems; the method of characteristics; the concept of stability for initial value problems.
- CSCI 66000 Design of Translating Systems (3 cr.) P: 50200. Systems design of higher-level programming languages and their processors; symbol tables, lexical scan, syntax scan, object code generation and optimization; boot-strapping techniques, higher-level translators, self-compilers, and decompilers; and heuristic generators.
- CSCI 66100 Formal Compiling Methods (3 cr.) P: 50200. 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 semantic definition of a language (LISP, Lucid) and on proof-like techniques (PROLOG, equational systems); merits of such approaches.
- CSCI 69500 M.S. Project (1-9 cr.) Maximum of 6 credit hours apply to degree P: consent of instructor. The student integrates and applies the knowledge gained from the formal course work to formulate and execute a solution to a problem of practical importance. The faculty advisor and the sponsoring organization mentor, if applicable, provide guidance and evaluation.
- CSCI 69800 Research M.S. Thesis (1-18 cr.) P: Consent of instructor. Formal research on M.S. Thesis supervised by the faculty advisor.
- CSCI 69900 Research Ph.D. Thesis (1-9 cr.) P: Consent of instructor. Formal research on Ph.D. Thesis supervised by the faculty advisor.
- CSCI-C 591 Research Seminar (0-1 cr.) First-year seminar in research methods and current research directions of the faculty. Repeatable.
- CSCI 60300 Advanced Topics in Distributed Systems (3 cr.) P: CS 503. R: CS 542. Design and control of distributed computing systems (operating systems and database systems). Topics include principles of namings and location, atomicity, resources 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.
- CSCI 66200 Pattern Recognition and Decision-Making Processes (3 cr.) (Pending) P: EE 302 or equivalent. Introduction to basic concepts and various approaches to pattern recognition and decision-making processes. The topics include various classifier designs, evaluation of classifiability, learning machines, feature extraction, and modeling.