IUPUI
Home About Courses Programs People Facilities Research Events

Course Descriptions

Main Menu Distributed Courses N-Series Courses Undergrad Courses Graduate Courses

Course Offerings

View CSCI Offerings Search By instructor

Related Links

Distributed Education Streaming Media Orientation Pages

Bulletins

2006 School of Science Bulletin Campus Bulletin
Undergraduate Courses in Computer Science

CSCI 23000

Computing I

4 Credit Hours

P or C: MATH 221 or 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 algorithm and data structures, their implementation as programs.

Video Lectures

CSCI 24000

Computing II

4 Credit Hours

P: 230.

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.

Video Lectures

CSCI 24200

Computing II for Engineers

2 Credit Hours

Overview of fundamentals of operating systems; introduction to programming languages, file organization, and database concepts.

CSCI 26500

Advanced Programming

3 Credit Hours

P or C: ECE 264 and CSCI 242 or CSCI 230. 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 Credit Hours

P or C: 230 and 240. 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 Credit Hours

P: 240 and MATH 221 or MATH 163.

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 Credit Hours

P: 240 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.

CSCI 36200

Data Structures

3 Credit Hours

P: 240 and 340.

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 Credit Hours

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, and vector and array processors.

CSCI 40300

Introduction to Operating Systems

3 Credit Hours

P: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, and distributed and real-time systems.

CSCI 41400

Numerical Methods MATH 414

3 Credit Hours

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, and numerical solution of ordinary differential equations. Not open to students with credit in 512.

CSCI 43200

Security in Computers

3 Credit Hours

P:403.

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 Credit Hours

P or C: CSCI 362, MATH 351/511. 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 Credit Hours

P: CSCI 362.

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 Credit Hours

P: 362 and MATH 351/511.

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 Credit Hours

P: 437.

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 Credit Hours

P or C: CSCI 362. 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 Credit Hours

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 nonrelational database systems.

CSCI 44600

Introduction to Microprocessor Architecture

3 Credit Hours

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; and self-paced laboratory using A/D converters, D/A converters, etc.

CSCI 44800

Biometric Computing

3 Credit Hours

P: CSCI 362 and STAT 416 or STAT 511.

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 Credit Hours

P: CSCI 362.

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 Credit Hours

P: CSCI 362.

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 Credit Hours

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.

CSCI 47000

Automata and Formal Languages

3 Credit Hours

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.

CSCI 47500

Scientific Computing I

3 Credit Hours

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.

CSCI 47600

Scientific Computing II

3 Credit Hours

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.

CSCI 47700

High Performance Computing

3 Credit Hours

P: 476.

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 Credit Hours

P or C: 240, MATH 351/511, STAT 511/416. 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 Credit Hours

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; and explanation systems, expert system shells, tools, and intelligent hybrid systems.

CSCI 48700

Artificial Intelligence

3 Credit Hours

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.

CSCI 49000

Topics in Computer Sciences for Undergraduates

1-5 Credit Hours

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 Credit Hours

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 N100

Introduction to Computers and Computing

3 Credit Hours

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.

Video Lectures

CSCI N199

Introductory Computing Topics topic varies

1-3 Credit Hours

Seminars in emerging technologies. May be repeated for credit.

CSCI N201

Programming Concepts

3 Credit Hours

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.

Video Lectures

CSCI N205

Computing for the Paralegal

3 Credit Hours

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.

CSCI N207

Data Analysis Using Spreadsheets

3 Credit Hours

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.

Video Lectures

CSCI N211

Introduction to Databases

3 Credit Hours

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 N241

Fundamentals of Web Development

3 Credit Hours

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.

Video Lectures

CSCI N299

Survey of Computing Applications topic varies

1-3 Credit Hours

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 N301

Fundamental Computer Science Concepts

3 Credit Hours

P: MATH M118.

An introduction to fundamental principles of computer science, including hardware architecture, algorithms, software engineering, and data storage. Lecture and laboratory.

Video Lectures

CSCI N305

C Language Programming

3 Credit Hours

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.

Video Lectures

CSCI N307

Introduction to Programming Using Java

3 Credit Hours

P: 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 multiplatform programming issues. This course is primarily for students in the School of Informatics.

CSCI N311

Advanced Database Programming, Oracle

3 Credit Hours

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.

Video Lectures

CSCI N321

System and Network Administration

3 Credit Hours

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 N331

Visual Basic Programming

3 Credit Hours

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.

Video Lectures

CSCI N335

Advanced Programming, Visual Basic

3 Credit Hours

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.

Video Lectures

CSCI N341

Introduction to Client-Side Web Programming

3 Credit Hours

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.

Video Lectures

CSCI N342

Server-Side Programming for the Web

3 Credit Hours

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.

Video Lectures

CSCI N343

Object-Oriented Programming for the Web

3 Credit Hours

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 backend database operation to application software. Lecture and laboratory.

CSCI N345

Advanced Programming, Java

3 Credit Hours

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 N351

Introduction to Multimedia Programming

3 Credit Hours

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.

Video Lectures

CSCI N355

Introduction to Virtual Reality

3 Credit Hours

Explore concepts of 3D imaging and design including primitive shapes, transformations, extrusions, face sets, texture mapping, shading, and scripting. Lecture and laboratory.

Video Lectures

CSCI N361

Fundamentals of Software Project Management

3 Credit Hours

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.

This course is delivered via Oncourse

CSCI N399

Topics in Computing topic varies

1-3 Credit Hours

P: N200-level course or equivalent.

An investigation of an emerging language or topic in computing. May be repeated for credit.

CSCI N431

E-Commerce with ASP.NET

3 Credit Hours

P: N331 or equivalent.

Topics include basic Web controls, form validation, connecting to an Enterprise-level database, SSL, and sending e-mail within an ASP.NET Web page. A significant software development final project creating a functional Web store is featured. Lecture and laboratory.

Video Lectures

CSCI N435

Data Management Best Practices with ADO.NET

3 Credit Hours

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 N443

XML Programming

3 Credit Hours

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 N451

Web Game Development

3 Credit Hours

Study of basic game development principles with a focus on client-side Web delivers. Topics to include creation of sprite objects, user interaction concepts, basic intelligence concepts, game data structures, and basic game physics. Lecture and laboratory.

Video Lectures

CSCI N461

Software Engineering for Applied Computer Science

3cr. Credit Hours

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 N485

Capstone Project in Applied Computing

3 Credit Hours

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 N499

Topics in Applied Computing topic varies

1-3 Credit Hours

P: N300-level course or equivalent.

An investigation and examination of an emerging discipline in applied computer science.