Photo of IUPUI Students
Campus Events Athletics Health Care Research Academics & Libraries Admissions About IUPUI

Campus Bulletin

[an error occurred while processing this directive]

2004-06 IUPUI Campus Bulletin

The policies, regulations, and course descriptions that appear in this edition of the Bulletin are for the academic years specified. Curricular requirements are for students who entered the university or were admitted to a degree program during these specific academic years. As the "bulletin year" (the student's entry year) will be defined differently from school to school at IUPUI, consult your academic advisor to be sure you are using the appropriate edition of the Bulletin.

While every effort is made to provide accurate and current information, IUPUI reserves the right to change without notice statements in this bulletin concerning rules, policies, fees, curricula, courses, or other matters. Consult your academic advisor to learn if changes have occurred that may affect you.

Courses in Computer and Information Science (CSCI)

Note: P-prerequisite; C-corequisite; R-recommended; Fall-offered fall semester; Spring-offered spring semester; Summer-offered in the summer session.

Undergraduate Level

Courses numbered with N are primarily for majors outside of computer science. They do not satisfy the major or minor requirements in computer science.

N100-Level Courses

Courses in this category are primarily for majors outside of science. They are especially for those who are not familiar with computers. These courses do not satisfy the computer science course requirement for School of Science majors. Science majors may use them for general elective credit with their department's approval.

N100 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 techniques. Lecture and laboratory. Credit given for only one of CSCI N100, CPT 106, or BUS K201.

N199 Introductory Computing Topics (topic varies) (1-3 cr.) Seminars in emerging technologies. May be repeated for credit.

N200-Level Courses

Courses in this category or higher levels satisfy the computer science course requirement for School of Science majors with the major department's approval. They assume some previous use of computers. Consult your faculty advisor before registering.

N201 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.

N205 Computing for the Paralegal (3 cr.) Summary of basic computing topics, problem solving techniques, and their application to computing. Introduction to software and problem solving methods of special interest to those entering the paralegal profession. Jointly offered with the Continuing Studies Paralegal Program. Lecture and Laboratory.

N207 Data Analysis Using Spreadsheets (3 cr.) P: MATH 111. Summary of basic computing topics. An introduction to data analysis using spreadsheets. Emphasis on the application of computational problem solving techniques. Lecture and laboratory.

N211 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.

N241 Introduction to Web Design (3 cr.) Summary of basic computing topics. Introduction to the Internet and the World Wide Web. Emphasis on standard protocols, levels of connectivity, generating html documents with standard text editing tools, basic UNIX skills. Lecture and laboratory.

N299 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.

N300-Level Courses

Prerequisite for all N300-level courses: one CSCI course at the N200 level or equivalent.

N301 Fundamental Computer Science Concepts (3 cr.) P: MATH M118. An introduction to fundamental principles of computer science, including hardware architecture, algorithms, software engineering, and data storage. Lecture and laboratory.

N305 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.

N307 Introduction to Programming Using Java (3 cr.) P: CSCI N241 or equivalent. Introduction to programming concepts focusing on the Java language. Essential algorithm design, basic program control concepts, essential data concepts, debugging and testing programs. The course will also include object-oriented programming, creating user interfaces, event handling, and multi-platform programming issues. This course is primarily for students in the School of Informatics.

In some cases, courses of level N311 or higher may be used as general elective credit by computer science majors with the prior approval of the department. You must consult your faculty advisor before registering.

N311 Advanced Database Programming, Oracle (3 cr.) P: CSCI 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.

N321 System and Network Administration (3 cr.) P: CSCI 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.

N323 Communication Security and Network Controls (3 cr.) P: CSCI N301 or equivalent. Conventional encryption, and many hardware, software, and managerial controls needed to operate a data communication network in a safe and secure manner. Emphasis is on security attacks, malicious programs, authentication, and availability. In addition, legal and ethical issues are covered.

N325 Design and Implementation of Local Area Networks (3 cr.) P: CSCI N301 or equivalent. The design, implementation, and configuration of local area networks. Working in groups, students install the necessary hardware and software to set up a LAN server with several clients. Students will explore topics including inter-networking, network management, network performance, and security.

N327 Communication Network Design (3 cr.) P: CSCI N301 or equivalent. An introduction to wide area networking, which is a technology used to extend telecommunications connectivity for information distribution over large geographic regions. Topics include architecture, design (including Frame Relay and ATM), and implementation, as well as the influence of the state and federal regulatory environments.

N331 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.

N335 Advanced Programming, Visual Basic (3 cr.) P: N331 or equivalent. Databases and VB, object-oriented design and practice, the component object model, inter-object communication, related RAD environments such as VB for Applications and ActiveX using the Windows API, and generating online help. Lecture and laboratory.

N341 Web Programming (3 cr.) P: N241 or equivalent. Introduction to programming focusing on the World Wide Web. Essential algorithm design, client-side programming using languages such as JavaScript, interface technologies (including CGI interface), server-side programming with languages such as Perl, and an introduction to other languages and techniques of Web development. Lecture and laboratory.

N345 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, multi-threaded applications, animation, and network programming. Lecture and laboratory.

N351 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.

N355 Introduction to Virtual Reality (3 cr.) Explore concepts of 3D imaging and design including primitive shapes, transformations, extrusions, facesets, texture mapping, shading, and scripting. Lecture and laboratory.

N399 Topics in Computing (topic varies)(1-3 cr.) P: CSCI N200-level course or equivalent. An investigation of an emerging language or topic in computing. May be repeated for credit.

N485 Capstone Project in Applied Computing (3 cr.) P: CSCI N301 and N341. This course provides students with a mechanism for producing and integrating technical achievement meritorious of program culmination. The project shall demonstrate subject matter mastery in project development guidelines, and reflect both a breadth and depth of technically focused problem-solving skills.

N499 Topics in Applied Computing (topic varies) (1-3 cr.) P: CSCI N300-level course or equivalent. An investigation and examination of an emerging discipline in applied computer science.

Courses for Majors

230 Computing I (4 cr.) P or C: MATH 163. The context of computing in history and society; information representation in digital computers; introduction to programming in a modern high-level language; introduction to algorithms and data structures; their analysis and implementation as programs.

240 Computing II (4 cr.) P: 230. Overview of computer architecture; fundamentals of operating systems; introduction to programming languages; file organization and database concepts; social and ethical issues in computing.

242 Computing II for Engineers (2 cr.) Overview of fundamentals of operating systems; introduction to programming languages, file organization, and database concepts.

265 Advanced Programming (3 cr.) P or C: 240. Fall, Spring. The primary objective of the course is to teach students advanced programming skills and concepts. Introduction to the principles of software engineering: problem specification and program design with emphasis on object-oriented programming, programming style, debugging, and documentation. A significant software development project is required.

300 Systems Programming (3 cr.) P or C: 240 and 265. 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, design options. Loaders, linkers, and macro processors.

340 Discrete Computational Structures (3 cr.) P: 240 and MATH 164. Fall. Theory and application of discrete mathematics structures and their relationship to computer science. Topics include sets, relations, functions, permutations, combinatorics, graphs, trees, Boolean algebra, recurrence relations, group theory, and finite-state automata.

355 Introduction to Programming Languages (3 cr.) P: 265 and 340. 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.

362 Data Structures (3 cr.) P: 265 and 340. Spring. A study of the design and analysis of data structures and algorithms. Abstract data types: arrays, stacks, queues, lists, trees, graphs. Algorithms: sorting, searching, hashing. File structures: organization and access methods.

402 Architecture of Computers (3 cr.) P: 340. 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, vector and array processors.

403 Introduction to Operating Systems (3 cr.) P: 300, 362, and 402. 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, distributed and real-time systems.

414 Numerical Methods (MATH 414) (3 cr.) P: MATH 262 or MATH 351. Fall. Error analysis, solution of nonlinear equations, direct and iterative methods for solving linear systems, approximation of functions, numerical differentiation and integration, numerical solution of ordinary differential equations. Not open to students with credit in 512.

436 Principles of Computer Networking (3 cr.) 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.

437 Introduction to Computer Graphics (3 cr.) P: 362, and MATH 262 or MATH 351. Spring. An introduction to graphics hardware; implementation and interaction with operating systems. Mathematical aspects of computer graphics: 2D and 3D transformations, homogeneous coordinates, clipping, 3D views and hidden line removal, 3D realistic viewing. High-level issues in user-interface design, application of computer graphics in science and industry, and application software packages.

443 Database Systems (3 cr.) P: 362. 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 non-relational database systems.

446 Introduction to Microprocessor Architecture (3 cr.) P: 402. 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; self-paced laboratory using A/D converters, D/A converters, etc.

450 Principles of Software Engineering (3 cr.) P: 355 and 362. 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; techniques and software tools for program testing, maintenance, and documentation.

452 Object-Oriented Analysis and Design (3 cr.). P: 355 and 362. Spring. Introduction to the object-oriented paradigm in software development. Basic concepts: objects, classes, messaging, inheritance, methodologies. Analysis: defining objects, structures, attributes, 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.

463 Analysis of Algorithms (3 cr.) P: 362. 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.

470 Automata and Formal Languages (3 cr.) P: 362. 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.

475 Scientific Computing I (3 cr.) P: 230 and MATH 351. P or C: MATH 262. 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.

476 Scientific Computing II (3 cr.) P: 475. 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.

477 High Performance Computing (3 cr.) P: 476. Fall. Architecture of supercomputers: pipelined, vector, SIMD, MIMD; implications for algorithm and program design; vectorization, parallelization, loop restructuring, 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, statistical computing. A project is required.

485 Expert System Design (3 cr.) P: 362. 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; explanation systems, expert system shells, tools, and intelligent hybrid systems.

487 Artificial Intelligence (3 cr.) P: 362. 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.

490 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.

495 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.

Undergraduate and Graduate Level

These courses require admission to the graduate program or permission of the department.

*Course pending approval.

502 Compiling and Programming Systems(3 cr.) P: 300. R: 470. 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; design of interpretive systems. Students are expected to complete a large programming project as part of the course.

503 Operating Systems (3 cr.) P: 403. 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, mutual exclusion; storage management, segmentation, paging, virtual memory, protection, sharing, access control; file systems; resource management; evaluation and prediction of performance.

504 Concepts in Computer Organization (3 cr.) P: 402.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; cost/performance analysis.

506 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, process control and improvement. Students are required to apply management concepts using a project-based approach.

507 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, the syntax and the semantics of constructs.

512 Numerical Methods for Engineers and Scientists (3 cr.) P: MATH 351 or MATH 511; MATH 510; and knowledge of programming. Not open to students with credit in 414. 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.

514 Numerical Analysis (3 cr.) P: 414 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; round-off error bounds.

515 Numerical Analysis of Linear Systems (3 cr.) P: Knowledge of programming, and MATH 351 or MATH 511. Computational aspects of linear algebra; linear equations and matrices; direct and iterative methods; eigenvalues and eigenvectors of matrices; error analysis.

516 Computational Methods in Applied Mathematics (3 cr.) P: CSCI 265 and MATH 510 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.

520 Computational Methods in Analysis (3 cr.) P: 220 or 230 or equivalent, and MATH 351 or MATH 511. 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.

536 Data Communication and Computer Networks (3 cr.) P: 402. 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 and routing algorithms, congestion and flow control techniques, network file systems, distribution of computation, DARPA Internet protocols (TCP/IP) as examples of protocol organization.

*537 Introduction to Distributed Computing (3 cr.) P: 503, 536. 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.

*538 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.

*539 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.

541 Database Systems (3 cr.) P: 443 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.

543 Introduction to Simulation and Modeling of Computer Systems (3 cr.) P: 265 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 queuing models, network of queues, applications to performance evaluation of computer systems.

547 Information Storage and Retrieval and Natural Language Processing (3 cr.) P: 541. 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; natural language translation.

548 Introduction to Bioinformatics (3 cr.) P: CSCI 340, BIOL K483, CHEM C483, or MATH 511. 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.

549 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.

*550 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.

*552 Advanced Graphics and Visualization (3 cr.) P: 550. 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.

*553 Recent Trends in Database Systems (3 cr.) P: 503, 541. Emerging topics in database systems. Topics cover advanced applications including management of multimedia, spatial, and semi-structured data; database integration; Web databases; electronic commerce; digital libraries; and data mining.

*554 Special Topics in Visual Computing (3 cr.) P: 550. Emerging topics in 3D computer graphics, visualization, virtual and augmented environments, image processing, image and video compression, and computer vision.

556 Fault-Tolerant Computing (3 cr.) P: 362. Concepts of fault-tolerant computing; phases of fault-tolerance; applications to commercial, communication, and aerospace systems; fault-tolerance in multiprocessor systems; diagnosis techniques; software fault-tolerance.

565 Programming Languages (3 cr.) P: 300. R: 470. 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.

580 Algorithm Design, Analysis and Implementation (3 cr.) P: 463 and 470. 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.

582 Automata and Formal Languages (3 cr.) P: 470. Spring. Finite automata, regular expressions; push-down automata, context-free grammars; languages and behaviors. Closure properties, pumping lemmas, decision procedures. Deterministic context-free languages and LR(k) parsing; brief survey of the Chomsky hierarchy.

585 Mathematical Logic I (MATH 585) (3 cr.) Students should register for MATH 585. P: MATH 351. Formal theories for propositional and predicate calculus with study of models, completeness, compactness. Formalization of elementary number theory; Turing machines, halting problem, and the undecidability of arithmetic.

590 Topics in Computer Science (3 cr.) By arrangement. Fall, spring. Directed study for students who wish to undertake individual reading and study on approved topics.

Graduate Level

614 Numerical Solution of Ordinary Differential Equations (3 cr.) P: 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-value and eigenvalue problems by initial-value techniques and finite difference methods.

615 Numerical Solution of Partial Differential Equations (3 cr.) P: 515 and MATH 523. 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.

660 Design of Translating Systems (3 cr.) P: 502. 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; heuristic generators.

661 Formal Compiling Methods (3 cr.) P: 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 semantic definition of a language (LISP, Lucid) and on proof-like techniques (PROLOG, equational systems); merits of such approaches.

695 M.S. Project (1-9 cr., maximum of 6 credit hours apply to degree) P: Instructor's consent. 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.

698 Research M.S. Thesis (1-18 cr.)

This page last modified on May 11 2006
Indiana University | Purdue University | IUPU Columbus
Copyright © 2002-2004 The Trustees of Indiana University — Copyright Complaints
Contact IUPUI