Official Indiana University seal   Indiana University South Bend
 
Computer Science Courses
 
   
 Skip Left Navigation
 
 
Undergraduate Courses

Click  Here to view the Prerequisite Hierarchy

 

C101 - Computer Programming I (4 cr.)  ( Test-out Option) Sample syllabus
    P: M014 or equivalent. Fundamental concepts of computer programming, algorithm development, and data structuring. The programming language used will be C++. Not open to students who have taken C201.
C151 - Multiuser Operating Systems (2 cr.) Sample syllabus
    R: C101.  Survey of the 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 environment.  Operating system security. Writing shell scripts and batch files.
C201 - Computer Programming II (4 cr.) Sample Syllabus
    P: C101. Fundamental forms and concepts of computer science, including top-down design, data structures, structured control flow, modular programming, recursion, and standard algorithms. Programming language concepts will be illustrated with C++.
C203 - COBOL and File Processing (3 cr.) No longer offered.  Syllabus not available
    P: C201. Computer programming applications related to file management for organizations. Survey of basic file organizations. Introduction to the COBOL language; searching techniques, including binary search, hashing, and tree directories; sorting algorithms; report generation. 
C243 - Introduction to Data Structures (4 cr.) Sample Syllabus
    P: C151, C201. Abstract data types and their implementations using various data structures and algorithms; elementary algorithm analysis; space/time trade-offs; sorting and searching; finite graph algorithms; introduction to object oriented design and programming; software engineering principles. NOTE: Students who take C243 prior to Fall 2003 are not required to take C151.
C251 - Foundations of Digital Computing (3 cr.) Sample Syllabus
    P: C243 and a course in calculus. Mathematical foundations of computing, including mathematical induction, propositional logic, proofs of correctness, Turing machines, computability, and the halting problem.
C297 - Sophomore Topics in Computer Science (2-3 cr.) Syllabus not available
    Contents and prerequisites vary from year to year. (This course may count toward a minor, but not a major.) The department uses this course to present current and future trends in computing.
C301 - Fortran Programming (1 cr.) No longer offered.  Syllabus not available
    P: C201. An introduction to scientific programming using FORTRAN. Recommended for students in applied mathematics and scientific computing.
C308 - System Analysis and Design (4 cr.) syllabus
    P: C243. Software development life cycle; structured top-down and bottom-up design; data flow diagramming; entity relationship modeling; study of computer aided software engineering; I/O design and validation; file and database design; design of user interfaces; comparison of structured vs. object oriented design. A team project will be completed.
C311 - Organization of Programming Languages (3 cr.) syllabus
    P: C243 and C335. Design and implementation of programming languages: syntax; semantics; comparison of programming paradigms such as imperative, functional, logic, and object oriented. Implementation of concepts such as binding, scope, looping, branching, subprograms and parameter passing, tasks and concurrency, heap management, exception handling, templates, inheritance, overloading.
C335 - Computer Structures (4 cr.) Syllabus Sample syllabus
    P: C201. Computer architecture and machine language; internal data representation; symbolic coding and assembly systems; macros; program segmentation and linking; I/O devices; serial communication. Projects to illustrate basic machine structure and programming techniques.
Y398 - Internship - Professional Practice (3 cr.) More information
    P: C251, C308, C335. Enrollment requires that the student be accepted as a temporary employee of an organization or business outside the university. The work must offer the student challenging computer experience in a closely supervised position. The student will report weekly to the faculty member in charge. Prior approval of the position is required.
C421 - Computer Organization (3 cr.) Syllabus not available
    P: C243, C335, Physics P303. Principles of logic design; addressing; central processing units; microprogrammed versus hardwired control; input-output organization, interrupts; other topics chosen by the instructor.
B424 - Parallel and Distributed Programming (3 cr.) Sample syllabus
    P: C243, M301.  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, tast-farming, divide-and-conquer and pipelining.  Performance analysis of parallel systems, execution time, time complexity, load balancing and scalability. (Credit not given for both B424 and B524)
C431 - Assemblers and Compilers I (3 cr.) Syllabus not available
    P: C308, C311. Analysis and implementation of a compiler for a high level programming language. Relationship between regular languages, finite automata, lexical analysis, and scanner generators such as lex. Relationship between context-free grammars, stack machines, parsers, and parse generators such as yacc and llgen. Symbol tables and semantic analysis for translating declarations, expressions, assignments, I/O, control structures, and subroutines. Large programming project.
C435 - Operating Systems and Computer Architecture (4 cr.)  Sample syllabus
    P: C251, C308, C335. R: C311. Design and implementation of operating systems: the process model, process synchronization, semaphores, deadlock management, multi-tasking, multi-threading, interprocess communication, process scheduling, memory management, paging, segmentation, virtual memory management, file system design and implementation, I/O device drivers, interrupt handlers and spoolers. Students will complete the design and implementation of a simulated multi-tasking operating system.
B438 - Computer Networks (3 cr.) Sample Syllabus
    P: C243, C335. Theory and practice of data communication between computing devices. Topics include network architecture and topology, wide-area networks, local-area networks, and ISO network layers.
C441 - Information Organization & Retrieval (3 cr.) (Was C445) No longer offered. Sample syllabus
    P: C243. Fundamental structures and algorithms for the management of secondary storage devices: persistence; shareability; file and database organization; fields; records; transactions; hardware concepts of storage devices; sequential, random, indexed, hashed, and B-tree files; operations on files; search; sort; performance issues.
C442 - Database Systems (3 cr.) (Was C446) Sample syllabus
    P: C308. The fundamental concepts, theory, and practices in the design and implementation of database management systems: data independence; data modeling; entity relationship modeling; functional dependencies; normalization; relational, hierarchical, network, and object oriented data models; relational algebra; relational calculus; data definition and manipulation languages; recovery; concurrency; security; integrity of data.
C455 - Analysis of Algorithms (3 cr.) Sample syllabus
    P: C251, M209 or M216, and M260 or a comparable probability course. Mathematical analysis of time and space requirements for algorithms, using combinatorics, recurrence relations, and elementary probability theory. Advanced graph algorithms Tractable and intractable problems.
C463 - Artificial Intelligence (3 cr.) Syllabus Sample syllabus
    P: C251. R: C311. Techniques and principles of artificial intelligence and implementations of some of these techniques. Various formalisms for representing knowledge, and relationships of this to such tasks as inference, game playing, and planning. Machine learning.
B481 - Interactive Computer Graphics (3 cr.) Sample syllabus
    P: C243, Math M301. An introduction to interactive programming: design and implementation of graphical user interfaces (GUI). Fundamentals of modern interactive graphics: hardware, software, data structures, mathematical manipulation of graphical objects, algorithms for two- and three-dimensional graphics. No prior background in graphics is needed, although a good background in C++ programming and data structures is required. Some familiarity with computer architecture is assumed.
C490 - Seminar in Computer Science (1-3 cr.) Syllabus not available
    P: Consent of instructor. Special topics in computer science. May be repeated to earn a maximum of 6 hours.

C490 - PC Techniques (3 cr.)  No longer offered.

    P: Consent of instructor. Special topics in computer science. May be repeated to earn a maximum of 6 hours.
C490 - Object Oriented Programming (Advanced Java Techniques) (3 cr.) Sample syllabus
    P: C243. Understanding of object oriented programming concepts. Survey of basic constructs of the Java programming language. Introduction to Unified Modeling Language and object oriented analysis and design. Examination of some advanced facilities provided by the Java language. Facilities such as graphics and GUI, network programming, multithreading, graphics, animation and database connectivity will be discussed. Student should be proficient with C++ language and knowledgeable about data structures and algorithms. Knowledge of event driven programming, multithreading, and operating system concepts is a plus. A substantial programming project in Java may be assigned.
C490 - Introduction to Computer Security (3 cr.) Sample syllabus
    P: C243. This course provides an introduction to topics in computer security and explores the problems and challenges faced. It covers fundamental issues and principles, security policies, models and mechanisms related to confidentiality, integrity and availability triad. Basics of cryptography and its role in computer security and in particular, authentication will be covered. It will provide real-world examples of how to apply the principles discussed.

C490 - Biomorphic Computing (3 cr.) Sample syllabus

    P: C243, Permission of Instructor. Biologically-inspired approaches to the design of intelligent systems. Distributed and perceptually-grounded representations. Temporal processing. Neural-network approaches to vision and natural language processing. Evolutionary computation. Additional topics may include an introduction to analogy computing, dynamical systems, and artificial life.
     

 

Graduate Courses

 A504 - Introductory C++ Programming (2 cr.) Sample syllabus

P: Programming Experience. Topics include aspects of C++ that are not object-oriented, basic data structures, standard libraries, and Unix tools for project management. Credit not given for both A504 and either C101 or C201. (Does not count as computer science credit for CS majors)
A506 - Object-Oriented Programming in C++ (2 cr.) Sample Syllabus
P: A504. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates and exceptions. Credit not given for both A506 and either C201. (Does not count as computer science credit for CS majors)
A593 - Computer Structures (3 cr.) Sample syllabus
P: C201 or A504, A506. Computer architecture and machine language; internal data representation; symbolic coding and assembly systems; macros; program segmentation and linking; I/O devices; serial communication. Projects to illustrate basic machine structure and programming techniques. Credit not given for both A594 and C335. Undergraduate CS majors should take C335.
A594 - Data Structures (3 cr.) Sample Syllabus
P: C201 or C504, C506. Abstract data types and their implementations using various data structures and algorithms; advanced features of C++; elementary algorithm analysis; space/time trade-offs; sorting and searching; introduction to object oriented design and programming; software engineering principles. Credit not given for both A594 and C243. Undergraduate CS majors should take C243.

B503 - Algorithms Design and Analysis (3 cr.) Sample syllabus

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.
B524 - Parallelism in Programming Languages and Systems (3 cr.) Sample syllabus
    P: C243, M301.  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, tast-farming, divide-and-conquer and pipelining.  Performance analysis of parallel systems, execution time, time complexity, load balancing and scalability. (Graduate Project) (Credit not given for both B424 and B524)
P536 - Advanced Operating Systems (3 cr.)
Advanced topics in operating systems, such as: multi-tasking, 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.
B538 - Networks and Distributed Computing (3 cr.)
Basic concepts and technologies of computer networks. Protocols and protocol stacks. Client-server models. Distributed object technology. High-performance and high-bandwidth techniques. Distributed operating systems. (Graduate Project)
B541 - Hardware System Design I (3 cr.)
Structured approach to hardware design, emphasizing hardwired and microprogrammed control. Boolean algebra, hardware building blocks, architecture and control, implementation issues. In the laboratory, students build a working computer using hardware prototyping technologies. Basic training in the use of design and simulation software. Lecture and laboratory. (Graduate Project)
B551  - Elements of Artificial Intelligence (3 cr.)
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, and planning. Overview of machine learning. (Graduate Project)
B553 - Biomorphic Computing (3 cr.) Sample syllabus
Biologically-inspired approaches to the design of intelligent systems. Distributed and perceptually-grounded representations. Temporal processing. Neural-network approaches to vision and natural language processing. Evolutionary computation. Additional topics may include an introduction to analogy computing, dynamical systems, and artificial life.
B561 - Advanced Database Concepts (3 cr.) Sample syllabus
Database models and systems: specially 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. (Graduate Project)
P565 - Software Engineering I (3 cr.) Sample syllabus
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. (Graduate Project)
B581 - Advanced Computer Graphics (3 cr.) Sample syllabus
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. (Graduate Project)
B582 - Image Synthesis (3 cr.)
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.
B583 – Game Programming and Design (3 cr.) Sample syllabus
P: C481 or B581. Programming techniques and data structures for game implementation, elements of game design, current trends in game industry, game theory, social aspects, and elements of artificial intelligence in games.

B649 - Topics in Systems (1-6 cr.)
P: Instructor's permission. Special topics in systems. May be repeated for credit with permission.
B651 - Natural Language Processing (3 cr.)
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.
B657 - Computer Vision (3 cr.) Sample syllabus
P: C463 or B551. 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.
B659 - Topics in Artificial Intelligence (1-6 cr.)
P: Instructor's permission. Special topics in artificial intelligence. May be repeated for credit with permission.
B661 - Database Theory and Systems Design (3 cr.)
Database models: relational, deductive, complex-object, object-oriented. Query languages: relational algebra and calculus, datalog, fixpoint logics, object-oriented query languages. Transaction management theory: concurrency control, recovery, distribution. Post-relational and object-oriented database systems.
B669 - Topics in Database and Information Systems (1-6 cr.)
P: Instructor's permission. Special topics in database and information systems. May be repeated for credit with permission.
B679 - Topics in Scientific Computing (1-6 cr.)
P: Instructor's permission. Special topics in scientific computing. May be repeated for credit with permission.
B689 - 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.
Y790 - Graduate Independent Study (1-6 cr.)
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.

Y798 - Professional Practicum/Internship (Non-credit.)  Requirements

P: current enrollment in CS graduate degree program. Provides for participation in graduate level Professional Training and Internship experience.

 


Indiana University South Bend
Department of Computer and Information Sciences
1700 Mishawaka Ave. P.O. Box 7111
South Bend, IN 46634
Phone: (574) 520-5521
Fax: (574) 520-5589
info@cs.iusb.edu


Copyright 2006 , The Trustees of Indiana University
Copyright Complaints