Previous IU South Bend Campus Bulletins

Students are ordinarily subject to the curricular requirements outlined in the Bulletin in effect at the start of their current degree. See below for links to previous Bulletins (PDF format).

Contact Us

If you are seeking further information, please contact individual departments. For problems accessing information on this website, please contact Teresa Sheppard.

Computer Science | CSCI

computer scienceComputer Science  | CSCI

P Prerequisite | C Co-requisite | R Recommended
I Fall Semester | II Spring Semester | S Summer Session/s


  • CSCI-A 106 Introduction to Computing (3 cr.) The use of computers in everyday activities. How computers work; use of packaged programs for word processing, spreadsheets, file management, communications, graphics, etc. lecture and laboratory. May not be taken for graduation credit after CSCI-C 101. I, II, S
  • CSCI-A 107 Advanced Microcomputing (4 cr.) P: CSCI-A 106 or equivalent. Introduction to computer programming utilizing languages within standard application tools. Emphasizes problem solving, interface design principles, and documentation writing. I, II
  • CSCI-A 201 Introduction to Programming I (3-4 cr.) P: C or better in MATH-A 100 or a min 36 ALEKS assessment score. Fundamental programming constructs, including loops, arrays, classes and files. General problem-solving techniques. Emphasis on modular programming, user-interface design, and developing good programming style. Not intended for computer science majors. I, II, S
  • CSCI-A 290 Tools for Computing (1-4 cr.) Exploration of topics in computing. Common topics include tools for power users. May be repeated for up to 6 credits.
  • CSCI-A 340 An Introduction to Web Programming (3 cr.) P: CSCI-A 201 or CSCI-C 101. Does not satisfy a computer science elective requirement. An introduction to programming web documents, including HTML, JavaScript and Perl. Creation of a simple web site, including a home page with dynamic elements, using both client-aide and server-side techniques. (Not intended for computer science majors.) II
  • CSCI-A 504 Introductory C++ Programming (2 cr.) Undergraduate computer science majors should take CSCI-C 101. Credit not given for both CSCI-A 504 and CSCI-C 101. Topics include aspects of C++ that are not object-oriented, basic data structures, standard libraries, and Unix tools for project management. I, II, S
  • CSCI-A 505 Object Oriented Programming (4 cr.) Fundamental concepts of software engineering, algorithm development, computer programming, objects, and data structuring. Emphasis on understanding how software is developed, writing small programs, and learning to read code with understanding. Will include a weekly closed laboratory session for most of the course. I, S
  • CSCI-A 506 Object-Oriented Programming C++ (2 cr.) P: CSCI-A 504. Credit not given for both CSCI-A 506 and CSCI-C 201. Undergraduate computer science majors should take CSCI-C 201. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates, and exceptions. I, II
  • CSCI-A 510 Database Management Systems (3 cr.) P: CSCI-A 505.

    Fundamental concepts and practices in design and implementation of database management systems. Topics include data modeling, functional dependencies, normalization, relational, hierarchical, network and object oriented data models, relational algebra, relational calculus, data definition and manipulation languages, SQL, recovery, concurrency, security, distribution and integrity of data. II

  • CSCI-A 515 Telecommunications and Computer Networking (4 cr.) P: CSCI-A 505. Fundamental concepts and technologies used in design of computer networks and the Internet. The architecture of the Internet and performance issues. Low-level technologies ranging from Ethernet to wireless will be compared. Packet switching and virtual circuits. Core protocols of the Internet: TCP (Transport Control Protocol) and IP (Internet Protocol). Ongoing and future changes in the Internet. I
  • CSCI-A 593 Computer Structures (3 cr.) P: CSCI-A 506 or CSCI-C 201. Credit not given for both CSCI-A 593 and CSCI-C 335. Undergraduate computer science majors should take CSCI-C 335. Structure and internal operation of computers. The architecture and assembly language programming of a specific computer are stressed, in addition to general principles of hardware organization and low-level software systems. Lecture and laboratory. I, II
  • CSCI-A 594 Data Structures (3 cr.) P: CSCI-C 201, CSCI-C 506. Credit not given for both CSCI-A 594 and CSCI-C 243. Undergraduate computer science majors should take CSCI-C 243. Systematic study of data structures encountered in computing problems; structure and use of storage media; methods of representing structured data; and techniques for operating on data structures. Lecture and laboratory. I, II
  • CSCI-B 100 Problem Solving Using Computers (4 cr.) This course introduces problem solving techniques, critical thinking skills, algorithm development, and computer programming, using real-world problems. Topics include: computer literacy, hardware, data representation, structured and object oriented programming techniques, modularity and reusability, and testing and debugging techniques.
  • CSCI-B 401 Fundamentals of Computing Theory (3 cr.) P: CSCI-C243, CSCI-C250. Fundamentals of formal language theory, computation models and computability, the limits of computability and feasibility, and program verification.
  • CSCI-B 424 Parallel and Distributed Programming (3 cr.) P: CSCI-C 243. P or C: MATH-M 301. Credit not given for both CSCI-B 424 and CSCI-B 524. Overview of parallel computers, shared memory, message passing, MIMD and SIMD classifications. Understanding and use of message passing and synchronization facilities such as MPI. Study of parallel programming models such as master-slave, client-server, task-farming, divide-and-conquer and pipeline. Performance analysis of parallel systems, execution time, time complexity, load balancing and scalability.
  • CSCI-B 438 Fundamentals of Computer Networks (3-4 cr.) P: CSCI-C 243, CSCI-C 335. History, theory, and design of data communicating between devices. Topics include history of computer networks, network architecture and topology, local- and wide-area networks, ISO network layers, current and future IEEE standards for networks, and network operating systems.
  • CSCI-B 451 Security in Computing (3 cr.) P: CSCI-C 335. An introduction to computing security to include confidentiality, integrity and availability triad, cryptography, software security, operating system security, trusted operating system design and evaluation, authentication, network threats and defenses, security management, legal aspects of security, privacy and ethics.
  • CSCI-B 503 Algorithms Design and Analysis (3 cr.) P: CSCI-C 243 and MATH-M 260 or MATH-M 365 or MATH-M 463. Credit not given for both CSCI-C503 and C455. Models, algorithms, recurrences, summations, growth rates. Probabilistic tools, upper and lower bounds; worst-case and average-case analysis, amortized analysis, dynamization. Comparison-based algorithms: search, selection, sorting, hashing. Information extraction algorithms (graphs, databases). Graphs algorithms: spanning trees, shortest paths, connectivity, depth-first search, breadth-first search.
  • CSCI-B 524 Parallelism in Programming Languages and Systems (3 cr.) P: CSCI-C 243, MATH-M 301. Credit not given for both CSCI-B 524 and B424. Fundamentals of parallel computation, with an emphasis on parallel programming methodology and programming languages. Topics include: parallel algorithms. Major paradigms for parallel software construction: data parallelism, task/thread parallelism and CSP. Compiling programs for parallel computers.
  • CSCI-B 538 Networks and Distributed Computing (3 cr.) P: CSCI-B 438. R: CSCI-C 435. Layered TCP/IP architecture. LAN technologies (ehernet, wireless, token rings). Switching. Internet addresssing (IP v4, IP v6). Routing protocols. Congestion control (TCP, UDP). Applications (DNS, HTTP, peer-to-peer networks). Selection of topics, inclding DHCP, ICMP, VPNs, multicast, security. Credit given for only one of P438 and P538.
  • CSCI-B 539 Applied Cryptography (3 cr.) P: MATH-M 301; AND CSCI-C 455 or CSCI-B 401; AND MATH-M 260 or MATH-M 365 or MATH-M 463. This course covers modern cryptosystems, emphasizing their provable security, concrete design, and applications. Cryptosystems covered include various private-key and public-key encryption schemes that are being used in practice, key exchange protocols and secret sharing schemes, hash functions, digital signatures.
  • CSCI-B 541 Hardware System Design I (3 cr.) P: CSCI-A 593 or CSCI-C 335. Credit not given for both CSCI-B 541 and CSCI-C 421. Structured approach to hardware design, exposing performance factors as well as target technologies and their influence on the design process. Basic training in the use of design and simulation software. Lecture and laboratory.
  • CSCI-B 551 Elementary Artificial Intelligence (3 cr.) P: CSCI-C 250. Credit not given for both CSCI-B 551 and C463. Introduction to major issues and approaches in artificial intelligence. Principles of reactive, goal-based, and utility-based agents. Problem-solving and search. Knowledge representation and design of representational vocabularies. Inference and theorem proving, reasoning under uncertainty, planning. Overview of machine learning.
  • CSCI-B 553 Neural and Genetic Approaches to Artificial Intelligence (3 cr.) P: Permission of instructor. Approaches to the design of intelligent systems inspired by nervous systems, evolution, and animal behavior. Distributed and perceptually-grounded representations. Temporal processing. Perception and action. Genetic search. Unsupervised and reinforcement learning. Comparison of symbolic, subsymbolic, and hybrid approaches to intelligence.
  • CSCI-B 561 Advanced Database Concepts (3 cr.) P: CSCI-C 442. Database models and systems: especially relational and object-oriented; relational database design theory; structures for efficient data access; query languages and processing; database applications development; views. Transaction management: concurrency and recovery.
  • CSCI-B 581 Advanced Computer Graphics (3 cr.) P: CSCI-C 243, C: MATH-M 301. Credit not given for both CSCI-B 581 and C481.

    Introduction to graphics hardware and software. Two-dimensional graphics methods, transformations, and interactive methods. Three-dimensional graphics, transformations, viewing geometry, object modeling and interactive manipulation methods. Basic lighting and shading. Video and animation methods.

  • CSCI-B 582 Image Synthesis (3 cr.) P: CSCI-C 481 or CSCI-B 581. Raster image display: color theory, gamma correction, and filtering. Advanced shading methods: local illumination models, global illumination models. Surface display, including ray tracing and Z-buffering. Solid modeling; spline surfaces, CSG, superquadrics, and deformations. Scientific visualization: isosurfaces and volume rendering.
  • CSCI-B 583 Game Programming and Design (3 cr.) Graduate standing. P: CSCI-C 243. R: CSCI-B 581 or CSCI-C 481. Programming techniques and data structures for game implementation, elements of game design, current trends in the game industry, game theory, social aspects, and elements of artificial intelligence in games.
  • CSCI-B 651 Natural Language Processing (3 cr.) P: CSCI-C 463 or CSCI-B 551. Theory and methods for natural language processing. Algorithms for sentence parsing and generation. Context-free and unification grammars. Question-and-answer systems. Analysis of narratives. Finite-state approaches to computational phonology and morphology. Machine translation. Machine learning of natural language. Speech recognition. Neural-network and statistical alternatives to symbolic approaches.
  • CSCI-B 657 Computer Vision (3 cr.) P: CSCI-C 463 or CSCI-B 551. Concepts and methods of machine vision as a branch of artificial intelligence. Basics of digital image processing. Local and global tools for deriving information from image data. Model-based object recognition and scene understanding.
  • CSCI-B 689 Topics in Graphics and Human Computer Interaction (1-6 cr.) P: Instructor’s permission. Special topics in graphics and human-computer interaction. May be repeated for credit, with permission. May be repeated for up to 6 credits.
  • CSCI-C 101 Computer Programming I (3-4 cr.) P: C or better in MATH-A 100 or a minimum 36 ALEKS assessment score. Fundamental concepts of computer programming, algorithm development, and data structuring. I, II, S
  • CSCI-C 151 Multiuser Operating Systems (2 cr.) P: CSCI-C 101. Survey of operating system facilities and commands. Installation and maintenance of operating systems such as Linux. Understanding process management, file systems, memory and virtual memory management issues. Understanding networking and its role in modern computing environments. Operating system security. Writing shell scripts and batch files. Societal issues surrounding the use and administration of multiuser operating systems. I, II
  • CSCI-C 201 Computer Programming II (3-5 cr.) P: CSCI-C 101. Intended for students needing a rigorous introduction to computer science, introduction to algorithm design, programming, and analysis. Using the Scheme programming language, course covers procedural and data abstractions, and use of several programing paradigms including functional, imperative, and object-oriented. No credit for both CSCI-C 201 and CSCI-S 201. I, II
  • CSCI-C 243 Introduction to Data Structures (3-4 cr.) P: CSCI-C 151, CSCI-C 201, MATH-M 125 or above. C:  CSCI-C 151 may be taken concurrently with CSCI-C 243. Introduction to data structure concepts and common applications. Structures to be discussed include strings, lists, queues, stacks, graphs, trees, sequential files, random files, and indexed sequential files. Practical applications and algorithms are stressed. I, II
  • CSCI-C 250 Discrete Structures (0-3 cr.) P: CSCI-C 101 and MATH-M 125. Mathematical foundations of computing including:  set theory, propositional and predicate logic, arguments and patterns of inference, proofs of correctness and mathematical induction.  Formal logic, argumentation and verification (proof) are also examined in the context of 'every day' critical thinking.
  • CSCI-C 297 Sophomore Topics in Computer Science (2-4 cr.) P: Varies. Selected topics in computer science appropriate to the student in or nearing the end of the sophomore year. Course may cover a topic selected from but not limited to the following list: programming languages, computer graphics, artificial intelligence, ethics in data processing, and database system. Credit not given for both CSCI-C 297 and CSCI-D 285 in excess of 9 credit hours. May be repeated for up to 9 credits.
  • CSCI-C 308 System Analysis and Design (1-4 cr.) P: CSCI-C 243. The software development life cycle; data flow diagrams; entity relationship modeling; structured design; validation; user interfaces; implementation and testing. A team project will be completed. I
  • CSCI-C 311 Programming Languages (3-4 cr.) P: CSCI-C 243, CSCI-C 335. Systematic approach to programming languages. Relationships among languages, properties, and features of languages; and the computer environment necessary to use languages. Lecture and laboratory.
  • CSCI-C 335 Computer Structures (4 cr.) P: CSCI-C 201. Computer architecture and machine language, internal data representation, assembly systems, macros, program segmentation and linking, I/O devices, serial communication. Projects to illustrate basic machine structure and programming techniques. I, II
  • CSCI-C 421 Digital Design (3-4 cr.) P: CSCI-A 593 or CSCI-C 335. Organization and logic design of digital systems. Course presents a structured design philosophy, emphasizing hardware building blocks, circuit synthesis, microprogramming. In the laboratory students build, study, and debug a working minicomputer from elementary hardware components. Lecture and laboratory.
  • CSCI-C 431 Assemblers and Compilers 1 (3-4 cr.) P: CSCI-C 311.  Design and construction of assemblers, macro processors, linkers, loaders, and interpreters. Compiler design and construction, including lexical analysis, parsing, code generation, and optimization. Extensive laboratory exercises.
  • CSCI-C 435 Operating Systems 1 (3-4 cr.) P: CSCI-C 243, CSCI-C 335, and three additional computer science courses above the level of CSCI-C 243. Organization and construction of computer systems that manage computational resources. Topics include specification and implementation of concurrency, process scheduling, storage management, device handlers, mechanisms for event coordination such as interruption, exclusion, and synchronization. Extensive laboratory exercises II
  • CSCI-C 441 Information Orgranization and Retrieval (3 cr.) P: CSCI-C 243. Organization and logic design of digital systems. Course presents a structured design philosophy, emphasizing hardwired and micro-programmed control. Boolean algebra, hardware building blocks, circuit synthesis, micro-programming. In the laboratory students build, study, and debug a working minicomputer from elementary hardware components. Lecture and laboratory.
  • CSCI-C 442 Database Systems (3 cr.) P: CSCI-C 308. Study of fundamental concepts, theory and practices in design and implementation of database management systems. Topics include data independence, data modeling, ER modeling, functional dependencies, normalization, relational, hierarchical, network and object oriented data models, relational algebra, relational calculus, data definition and manipulation languages, recovery, concurrency, security, and integrity of data. II
  • CSCI-C 455 Analysis of Algorithms I (3-4 cr.) P: CSCI-C 243 and MATH-M 260. C: Recommended CSCI-C 250. Algorithm design methodology. General methods for analysis of algorithms. Analysis of the performance of specific algorithms, such as those for searching and sorting. II
  • CSCI-C 463 Artificial Intelligence I (3-4 cr.) P: CSCI-C 250. R: CSCI-C 311. Goals of artificial intelligence, relations with other fields. Introduction to knowledge representation and inference: predicate calculus, frames, semantic networks, and connectionist representation schemes. Pattern recognition and pattern association. Computer vision. Natural language processing: speech recognition, syntax, and semantics. Heuristic search. Extensive laboratory exercises.
  • CSCI-C 481 Interactive Computer Graphics (3-4 cr.) P: CSCI-C 243 and MATH-M 301. C: M301 may be taken concurrently with C481. Computer graphics techniques. Introduction to graphics hardware and software. Two-dimensional graphics methods, transformations, and interactive methods. Three-dimensional graphics, transformations, viewing geometry, object modeling, and interactive manipulation methods. Basic lighting and shading. Video and animation methods. Credit not given for both CSCI-B 481 and CSCI-B 581.
  • CSCI-C 490 Seminar in Computer Science (1-4 cr.) P: Varies. Special topics in computer science. May be repeated for up to 12 credits.
  • CSCI-C 690 Special Topics in Computing (1-3 cr.) P: Varies. Special topics in Computer Science.
  • CSCI-P 536 Advanced Operating Systems (3 cr.) P: CSCI-C 435. Advanced topics in operating systems, such as: multitasking, synchronization mechanisms, distributed system architecture, client-server models, distributed mutual exclusion and concurrency control, agreement protocols, load balancing, failure recovery, fault tolerance, cryptography, multiprocessor operating systems.
  • CSCI-P 565 Software Engineering I (3 cr.) P: CSCI-C 308. Analysis, design, and implementation of software systems. Requirements specification: data and process modeling. Software design methodologies. Software quality assurance: testing and verification. Software development processes.
  • CSCI-Y 398 Internship in Professional Practice (1-6 cr.) Departmental approval and permission of instructor required. P: CSCI-C 308, CSCI-C 335 and one other CSCI course above the level of CSCI-C 243. Designed to provide opportunities for students to receive credit for selected, career-related, full-time or part-time work. Evaluation by employer and faculty sponsor
  • CSCI-Y 790 Graduate Independent Study (1-6 cr.) Permission of instructor required. Independent study under the direction of a faculty member, culminating in a written report. May be repeated for credit. R grade not allowed. The different departmental options for independent study are: research and reading, software system development, master’s research project, master’s software project, and a university master’s thesis. May be repeated for up to 9 credits.
  • CSCI-Y 798 Professional Practicum/Internship (0-6 cr.) P: Current enrollment in graduate degree program in computer science. Departmental approval and permission of the graduate director and instructor required. Provides for participation in graduate-level professional training and internship experience. May be repeated for up to 6 credits.

Academic Bulletins

PDF Version

Click here for the PDF version.