Computer and Information Science

    Printer-friendly version

    Department of Computer and Information Science Course Descriptions

    Select a course number to see the catalog description for that course or scroll down the page.

    The first digit of the course number more or less gives the year-level of the course in the curriculum. Courses numbered in the range 100-499 are undergraduate courses. Courses in the 500-599 range are available for both undergraduate and graduate students. Courses 600 and above are graduate courses.

    CSCI courses

    [ 103 ] [ 111 ] [ 112 ] [191 ] [ 192 ] [ 193 ]

    [ 203 ] [ 211 ] [ 223 ] [ 251 ] [ 259 ]

    [ 300] [ 305 ] [ 311 ] [ 323 ] [ 345 ] [ 353 ] [ 361 ] [ 387 ] [ 390 ] [ 391 ]

    [ 405 ] [ 423 ] [ 433 ] [ 444 ] [ 450 ] [ 475 ] [ 487 ] [ 490 ] [ 495 ]

    [ 500 ] [ 501 ] [ 502 ] [ 503 ] [ 517 ] [ 520 ] [ 521 ] [ 523 ] [ 524 ] [ 525 ]
    [ 530 ] [ 531 ] [ 533 ] [ 541 ] [ 550 ] [ 551 ] [ 554 ] [ 555 ] [ 556 ] [ 561 ]
    [ 562 ] [ 575 ] [ 581 ] [ 582 ] [ 595 ] [ 658 ] [ 663 ]

    ENGR courses on computer science topics

    [ 596 ] [ 597 ] [ 598 ]

    [ 618 ] [ 652 ] [ 653 ] [ 654 ] [ 656 ] [ 657 ] [ 659 ] [ 660 ] [ 661 ] [ 662 ]
    [ 664 ] [ 666 ] [ 691 ] [ 692 ] [ 693 ] [ 694 ] [ 695 ] [ 697 ] [ 699 ]

    [ 797 ]

    ENGS courses on computer science topics

    [ 603 ]


    Catalog Course Descriptions

    CSci 103: Survey of Computing
    Introduction to computers and computing for students with no prior computer experience (Not to be used to satisfy computer science major requirements.)
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    CSci 111: Computer Science I
    Introduction to computer science with emphasis on problem solving and algorithm development. Using high-level, block-structured programming language, students design, implement, debug, test, and document computer programs for various applications.
    Corequisites: None
    Prerequisites:Either Math 121 (or higher Math course) or Math ACT of 22 (or greater)
    Credit(s): 3

    CSci 112: Computer Science II
    Continuation of CSci 111 with emphasis on computer programming as a systematic discipline. The topics include data structures, abstract data types, algorithm design and analysis, and programming methods and standards.
    Corequisites: None
    Prerequisites:CSci 111 with a minimum grade of C
    Credit(s): 3

    CSci 191: Office Applications
    Introduction to the use of computers with emphasis on the Windows platform and the Microsoft Office suite of application tools. (Not to be used to satisfy computer science major requirements.)
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    CSci 192: Computing Applications
    Introduction to the use of computers with emphasis on the Windows platform and the WordPerfect suite of application tools. (Not to be used to satisfy computer science major requirements.)
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    CSci 193: Personal Computer Systems
    Study of the hardware and software components of personal computer systems for experienced computer users. (Not to be used to satisfy computer science major requirements.)
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    CSci 203: Computer and Information Processing
    Introduction to computer programming and information processing principles using the Visual Basic language. (Not to be used to satisfy computer science major requirements.)
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    CSci 211: Computer Science III
    Continuation of CSci 112 with emphasis on advanced data structures, algorithm design, advanced programming techniques, and user interfaces.
    Corequisites: None
    Prerequisites: CSci 112 with a minimum grade of C
    Credit(s): 3

    CSci 223: Computer Org. & Assembly Language
    Introduction to the architecture of computer systems. The topics include processor and external device structures and operation, machine operation, machine operations and instructions, assembly language concepts, and assembly language programming.
    Corequisites: None
    Prerequisites:CSci 112 with a minimum grade of C
    Credit(s): 3

    CSci 251: Programming for Engineering and Sciences
    Algorithm development and structured programming techniques; numerical and graphical applications related to engineering and scientific problem solving.
    Corequisites: Math 261
    Prerequisites: None
    Credit(s): 3

    CSci 259: Programming in C++
    Study of programming in the language C++, covering character processing; use of pointers with strings, arrays and functions; data structures; bitwise operators.
    Corequisites: None
    Prerequisites: CSci 111 or CSci 251
    Credit(s): 3

    CSci 300: Social Responsibility in Comp. Science
    Study of the nature of and need for social responsibility and ethical behavior in computing and the computer professions.
    Corequisites: None
    Prerequisites: Csci 211, Csci 223
    Credit(s): 1

    CSci 305: Software for Global Use
    Study of the principles and practice of software internationalization with emphasis on the design and customization of software to accommodate linguistic and cultural diversity.
    Corequisites: None
    Prerequisites: CSci 211
    Credit(s): 3

    CSci 311: Models of Computation
    Introduction to the theoretical foundations of computer science, including automata and formal languages.
    Corequisites:Math 301
    Prerequisites:CSci 112 with a minimum grade of C
    Credit(s): 3

    CSci 323: Systems of Programming
    Study of a contemporary operating system and its set of tools from the perspective of software professionals and system administrators. The course analyzes the system components and their interactions, the tool environment, and system administration issues such as configuration, installation, networking, security, and performance tuning.
    Corequisites: None
    Prerequisites: CSci 112
    Credit(s): 3

    CSci 345: Information Storage and Retrieval
    Examination of systems for storage and retrieval of information in textual and other formats. The topics include query processing, matching and ranking algorithms, text analysis, user interfaces, and evaluation of retrieval effectiveness.
    Corequisites: None
    Prerequisites: CSci 211
    Credit(s): 3

    CSci 353: Introduction to Numerical Methods
    Numerical solutions of problems; problem analysis, algorithm design, codig, testing, interpretation of results; use of software packages on mainframe computers.
    Corequisites: None
    Prerequisites: Math 263 and one of the following: CSci 111 or CSci 251
    Credit(s): 3

    CSci 361: Introduction to Computer Networks
    Analysis of loosely coupled computer communication protocols and network services. A generic network model is presented and compared to selected examples of computer networks including the Internet TCP/IP and Internet-based applications.
    Corequisites: None
    Prerequisites: CSci 223 or EL E 335 or TC 201
    Credit(s): 3

    CSci 387: Software Design and Development
    Study of techniques for the construction of large, complex software systems, including project management, requirements analysis, specification, design, development, testing, documentation, deployment, and maintenance. Students develop software systems in a group structure that simulates an industrial setting.
    Corequisites: None
    Prerequisites:CSci 211 with a minimum grade of C; CSci 223 with a minimum grade of C
    Credit(s): 3

    CSci 390:
    Special Topics in Programming

    Study of topics in programming according to the interests of the instructor and students. May be repeated for credit when the topic varies.
    Corequisites: None
    Prerequisites: CSci 211
    Credit(s): 3

    CSci 391: Computer Graphics
    Introduction to the fundamentals of computer graphics, including elementary figures, shading, geometric transformations, graphics program design, and interactive techniques.
    Corequisites: None
    Prerequisites: Math 262, CSci 211, and CSci 223
    Credit(s): 3

    CSci 405: Computer Simulation
    Introduction to computer-based simulation and its applications to engineering, the sciences, and management.
    Corequisites: None
    Prerequisites: Math 262, CSci 211
    Credit(s): 3

    CSci 423:
    Introduction to Operating Systems

    Study of the basic concepts of operating systems, including user interfaces, process management, state saving, interprocess communication, input/output, device drivers, timing services, memory management, file management, and system abstractions.
    Corequisites: None
    Prerequisites:CSci 211 with a minimum grade of C; CSci 223 with a minimum grade of C
    Credit(s): 3

    CSci 433: Algorithm and Data Structure Analysis
    Study of the design and analysis of algorithms and data structures. The topics include analysis techniques, sorting, searching, advanced data structures, graphs, string matching, and NP-Completeness.
    Corequisites: None
    Prerequisites: Math 301; CSci 211 with a minimum grade of C
    Credit(s): 3

    CSci 444: Multimedia Design and Development
    In-depth analysis of multimedia architecture and tools. Students implement an interactive multimedia project.
    Corequisites: None
    Prerequisites: CSci 211
    Credit(s): 3

    CSci 450: Organization of Programming Languages
    History and concepts of programming languages; run-time behavior; formal aspects; language definition; data types and structures; control; and data flow, compilation and interpretation.
    Corequisites: None
    Prerequisites: CSci 211 with a minimum grade of C; CSci 223 with a minimum grade of C
    Credit(s): 3

    CSci 475: Introduction to Database Systems
    An introduction to database systems covering basic concepts, data models, normalization, concurrency, and storage structures.
    Corequisites: None
    Prerequisites: CSci 211, CSci 223
    Credit(s): 3

    CSci 487: Senior Project
    Each student conducts an in-depth study of a current problem in computer science or related area. Upon completion, the student presents the results in both oral and written form.
    Corequisites: None
    Prerequisites: 6 hours of CSCI 300 or above (C minimum grade)
    Credit(s): 3

    CSci 490: Special Topics
    Study of topics in computer science according to the interests of the instructor and students. May be repeated for credit when the topic varies.
    Corequisites: None
    Prerequisites: CSci 211, CSci 223
    Credit(s): 3

    CSci 495: Undergrad Computer Science Internship
    Internship in approved settings to enhance the educational experience of the student through supervised training in a professional computer science environment. Completion of an internship is recommended for all students but this credit does not count toward completion of degree requirements.
    Corequisites: None
    Prerequisites: Instructor appoval required
    Credit(s): 3

    CSci 500: Fundamental Concepts in Computing
    An intensive study of the formal concepts needed for graduate study in computer science. Computer science graduate students only.
    Corequisites: None
    Prerequisites: Computer Science graduate students only
    Credit(s): 3

    CSci 501: Fundamental Concepts in Systems
    An intensive study of the fundamental concepts of operating system and machine structures and the associated programming techniques. Computer science graduate students only.
    Corequisites: None
    Prerequisites: Computer Science graduate students only
    Credit(s): 3

    CSci 502: Fundamental Concepts in Algorithms
    An intensive study of the fundamental concepts of algorithms and data structures and the associated programming techniques. Computer science graduate students only.
    Corequisites: None
    Prerequisites: Computer Science graduate students only
    Credit(s): 3

    CSci 503: Fundamental Concepts in Languages
    An intensive study of the fundamental concepts of programming languages and the associated software system structures. Computer science graduate students only.
    Corequisites: None
    Prerequisites:Computer Science graduate students only
    Credit(s): 3

    CSci 517: Natural Language Processing
    Computer processing of natural language text at morphological, lexical, syntactic, and semantic levels; algorithms and procedures for sentence parsing and analysis; applications of natural language processing techniques.
    Corequisites: None
    Prerequisites: CSci 311 or CSci 500 or graduate standing
    Credit(s): 3

    CSci 520: Formal Theory of Computer Languages
    A detailed study of mathematical models of regular and context-free languages, nondeterministic and deterministic models; closure properties, design algorithms, simplification of grammars.
    Corequisites: None
    Prerequisites: CSci 311 or CSci 500 or graduate standing
    Credit(s): 3

    CSci 521: Computer Systems Engineering
    Analysis of computer system components and manufacturing economics, and how they influence design goals, direct architectural development, create hardware/software issues and modify implementation concepts, as well as system and circuit packaging.
    Corequisites: None
    Prerequisites: CSci 423 or CSci 501 or graduate standing
    Credit(s): 3

    CSci 523: Operating Systems
    Design and construction of operating systems for shared program computers; various contemporary operating systems.
    Corequisites: None
    Prerequisites: CSci 423 or CSci 501 or graduate standing
    Credit(s): 3

    CSci 524: Distributed Operating System Design
    Analysis of operating system design principles for multiple computers; a distributed operating system model is presented and compared to selected network and distributed operating system examples.
    Corequisites: None
    Prerequisites: CSci 423 or CSci 501 or graduate standing
    Credit(s): 3

    CSci 525: Compiler Construction
    Introduction to techniques used in current compilers for computer languages; the syntactic specification of programming languages and an introduction to syntax-directed compiling.
    Corequisites: None
    Prerequisites: CSci 311 or CSci 450 or CSci 500 or CSci 503 or graduate standing
    Credit(s): 3

    CSci 530: Computer Architecture and Design
    Structured organization and hardware design of digital computers; register transfers, micro-operations, control units and timing, instruction set design, microprogramming; automated hardware design aids.
    Corequisites: None
    Prerequisites: CSci 423 or CSci 501 or graduate standing
    Credit(s): 3

    CSci 531: Artificial Intelligence
    Use of the computer in human problem solving. Game theory, decision trees, Markov decision problems, selected topics.
    Corequisites: None
    Prerequisites: CSci 433 or CSci 502 or graduate standing
    Credit(s): 3

    CSci 533: Analysis of Algorithms
    Introduction to the analysis of the efficiency of computer algorithms and concepts of computational complexity; sorting, matrix multiplication, others.
    Corequisites: None
    Prerequisites: CSci 433 or CSci 502 or graduate standing
    Credit(s): 3

    CSci 541:Expert Systems and Logic Programming
    Expert systems and knowledge engineering. Computer systems to emulate human expertise. Rule-based and other knowledge representation techniques. Knowledge engineering as a model for expert systems development; logic programming for expert systems implementation.
    Corequisites: None
    Prerequisites: Either CSci 211 and Math 301 or graduate standing
    Credit(s): 3

    CSci 550:Program Semantics and Derivation
    A study of formal methods for the specification, derivation, and verification of computer programs. Predicate logic; notations for specification of programs; programming language semantics; calculational techniques for derivation of programs; case studies.
    Corequisites: None
    Prerequisites: Either CSci 211 and Math 301 or graduate standing
    Credit(s): 3

    CSci 551: Computer System Performance Analysis
    Defining, parameterizing, and evaluating models of computer systems. The emphasis is on applying queuing network models and simulation techniques as tools to evaluate the performance of centralized and distributed computer systems. P
    Corequisites: None
    Prerequisites: Math 423 and Math 375 or CSci 501 or graduate standing
    Credit(s): 3

    CSci 554: Web Architecture and Progamming
    Study of Web architecture and programming tools. Analysis of public-port protocols such as HTTP, embedded browser langages, browser extensions and interoperability. Server-seide Web components, design, tuning, and security. Server components include HTTP, Common Gateway Interface, database engine, and exetnsions.
    Corequisites: None
    Prerequisites: Either CSci 211 and CSci 223 or graduate standing
    Credit(s): 3

    CSci 555: Functional Programming
    The principles and techniques of programming wtih functions. Purely functional programming languages; recursion; higher-order functions; reduction models; strictness; type systems; list operations; infinite data structures; program synthesis and transformation.
    Corequisites: None
    Prerequisites: Either CSci 211 and Math 301 or graduate standing
    Credit(s): 3

    CSci 556: Multiparadigm Programming
    Principles and practice of software design and programming using languages that feature explicit and convenient support for multiple programming paradigms (e.g., imperative, object-oriented, and functional).
    Corequisites: None
    Prerequisites: Either CSci 211 and CSci 223 or graduate standing
    Credit(s): 3

    CSci 561: Computer Networks
    Analysis of loosely coupled computer communication, communication protocols, and network services; an open systems interconnection model is presented and compared to selected examples of computer networks. Prerequisite for this course may also be satisfied by equivalent coursework as approved by the department.
    Corequisites: None
    Prerequisites: CSci 423 or CSci 501 or graduate standing
    Credit(s): 3

    CSci 562: Software Engineering I
    Software engineering paradigms, requirement analysis and specification, design of reliable software; data flow, data structure, and object oriented design methodologies.
    Corequisites: None
    Prerequisites: CSci 387 or graduate standing
    Credit(s): 3

    CSci 575: Database Systems
    Review of database systems with special emphasis on data description and manipulation languages; data normalization; functional dependencies; database design; data integrity and security; distributed data processing; design and implementation of a comprehensive project.
    Corequisites: None
    Prerequisites: CSci 475 or CSci 423 or CSci 501 or graduate standing
    Credit(s): 3

    CSci 581: Special Topics in Computer Science I
    May be repeated for credit.
    Corequisites: None
    Prerequisites: Either CSci 211 and CSci 223 or graduate standing
    Credit(s): 1-3

    CSci 582: Special Topics in Computer Science II
    May be repeated for credit.
    Corequisites: None
    Prerequisites: Either CSci 211 and CSci 223 or graduate standing
    Credit(s): 1-3

    CSci 595: Graduate Computer Science Internship
    Internship in approved settings to enhance the educational experience of the student through supervised training in a professional computer science environment. Completion of an internship is recommended for all students but this credit does not count toward completion of degree requirements.
    Corequisites: None
    Prerequisites: Instructor appoval required.
    Credit(s): 3

    658: Software Language Engineering
    Study of topics on the design, implementation, use, and evolution of artificial languages for the engineering of software. Languages of interest include general-purpose programming languages, domain-specific languages, and modeling languages as well as application programming interfaces and collections of design patterns that implicity define languages.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    663: Software Families
    Study of concepts, methods, patterns, and tools for the analysis, design, and implementation of software families (e.g., software frameworks and software product lines) and other reusable, generic, and flexible programming artifacts.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 596: Special Projects I
    Approved investigation of original problems under direction of a staff member. May be repeated for credit.
    Corequisites: None
    Prerequisites: None
    Credit(s): 1-3

    Engr 597: Special Projects II
    Approved investigation of original problems under direction of a staff member. May be repeated for credit.
    Corequisites: None
    Prerequisites: None
    Credit(s):1-3

    Engr 598: Special Projects III
    Approved investigation of original problems under direction of a staff member. May be repeated for credit.
    Corequisites: None
    Prerequisites: None
    Credit(s):1-3

    Engr 618: Coding for Error Code
    This course provides a working knowledge of the use of codes to minimize error in the transmission of data using block and convolutional codes.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 652: Advanced Compiler Design
    Investigation into the theory of lexical analysis, syntax-directed translation, type checking, code generation, code optimization, and compiler project coordination.
    Corequisites: None
    Prerequisites: CSci 525
    Credit(s): 3

    Engr 653: Computer Structures
    In-depth study of the upper levels of computer structure (down to the internal register transfer level) including design choices, design needs and structural variations in organizing processors, memories I/O devices, controllers and communication links. An extensive review of several current machines is made.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 654: Information Systems Principles
    Introduction to the theory and practice related to the development and operation of information systems. Study of data base management principles, data management systems, and general purpose software for data management systems. System and performance evaluation.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 656: Operating Systems Design Concepts
    Design objectives of operating systems. Sequential and concurrent processes, processor management, memory management, scheduling algorithms, resource protection. System design and performance evaluation.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 657: Timesharing Computer Systems
    A study of the major design goals, implementation concepts and mechanisms of timesharing systems, including motivation for the development of timesharing systems and discussions of the hardware/software concepts important to timesharing system implementation.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 659: Advanced Information Retrieval
    Theoretical aspects of information retrieval. Comparison and evaluation of techniques for enhancement of recall and precision performance. Design of user/system interface; applications of natural language processing. Experimental and intelligent information retrieval systems.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 660: Software Engineering II
    Software quality assurance, software testing techniques, software testing strategies, software maintenance, and configuration management.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 661: Computer Networks II
    Continued analysis of loosely coupled computer communication, constraints on intercomputer communication, communication protocols, and network services. LAN data link protocols, transport services and other high-level network functions are examined in detail.
    Corequisites: None
    Prerequisites: CSci 561 or consent of instructor
    Credit(s): 3

    Engr 662: Advanced Artificial Intelligence
    Advanced aspects of artificial intelligence. Logical foundations of AI. Machine learning, planning, representation of commonsense knowledge, image understanding. Intensive study of artificial intelligence programming techniques and languages.
    Corequisites: None
    Prerequisites: CSci 531
    Credit(s): 3

    Engr 664: Theory of Concurrent Programming
    Topics in the theory of concurrent programming. Models of concurrency. Programming logics. Emphasis on the formal specification and verification of concurrent programs. Case studies drawn from several areas of computer science.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 666: Fault Tolerant Computing
    Reliability, safety, availability, maintainability, and performance modeling; fault tolerant design in VLSI; software reliability growth models; fault-tolerant data structures and algorithms; design diversity; self-stabilizing fault tolerance; Byzantine failures; performance and reliability tradeoffs.
    Corequisites: None
    Prerequisites: None
    Credit(s): 3

    Engr 691: Special Topics in Engineering Science I
    (May be repeated for credit.)
    Corequisites: None
    Prerequisites: None
    Credit(s): 1-3

    Engr 692: Special Topics in Engineering Science II
    (May be repeated for credit.)
    Corequisites: None
    Prerequisites: None
    Credit(s): 1-3

    Engr 693: Research Topics in Engineering Science II
    Individual research in selected areas of interest. (May be repeated for credit.)
    Corequisites: None
    Prerequisites: Consent of instructor.
    Credit(s): 1-3

    Engr 694:Research Topics in Engineering Science II
    Individual research in selected areas of interest. (May be repeated for credit.)
    Corequisites: None
    Prerequisites: Consent of instructor.
    Credit(s): 1-3

    Engr 695: Seminar
    Presentation of papers by faculty, visiting lecturers, and graduate students. (May be repeated for credit.)
    Corequisites: None
    Prerequisites: Consent of instructor.
    Credit(s): 1

    Engr 697: Thesis
    Corequisites: None
    Prerequisites: Consent of instructor.
    Credit(s): 1-12

    Engr 699: Special Topics in Engineering Science
    Individual design or research projects in selected areas of interest. (May be repeated for credit.)
    Corequisites: None
    Prerequisites: Consent of instructor.
    Credit(s): 1-6

    Engr 797: Dissertation
    Corequisites: None
    Prerequisites: Consent of instructor.
    Credit(s): 1-18

    EngS 603: Analysis of Algorithms
    Introduction to the analysis of computer algorithms as well as concepts of computational complexity, sorting, matrix multiplication, other (for computer engineering/telecommunications majors).
    Corequisites: None
    Prerequisites: Consent of instructor.
    Credit(s): 1-18