Computing and Information SciencesVirgil E. Wallentine,* Head
Professors Gustafson,* Hankley,* Schmidt,* Unger,* and Wallentine;* Associate Professors Bleyberg,* Dwyer,* Howell,* Mizuno,* Singh,* Stoughton;* Assistant Professor Andresen,* Hatcliff,* Hsu,* and Neilsen;* Instructors Campbell and Shea; Emeriti: Professor van Swaay, Associate Professor Calhoun.
The creation and use of the best possible hardware and software is, broadly speaking, the field of computer science.
Two curricula, computer science and information systems, are offered by the Department of Computing and Information Sciences. Many other fields require a minor emphasis in computer science, and students working toward a dual degree (one in computer science and one in some other field) are common.
The department maintains state-of-the-art computing and networking laboratories. Large-computer facilities are provided by Computing and Network Services. Some students choose to own or share microcomputers because of the convenience and learning efficiency of personal interactive computing.
Students must earn a grade of C or better for each course they wish to use to satisfy requirements for their major. Students may enroll in CIS courses only if they have earned a grade of C or better for each prerequisite to those courses.
Computer science curriculum
The computer science curriculum emphasizes a broad foundation of computer organization, programming languages, software engineering, distributed computing systems, data systems, algorithms, data structures, programming systems and environments, and mathematics, together with electives that focus on some aspect or application of computers. The computer science curriculum is recommended for students planning graduate studies in computing.
Technical electives consist of a set of computer science courses that permit students to concentrate on an area of technical expertise. The most common technical areas are: software engineering, which involves management and development of large software systems; operating systems, which consists of the supervisory software that controls the operation of a computer; theoretical computer science; computer systems architecture, which involves design of centralized and distributed computer systems; programming languages and their compilers; data systems; and knowledge engineering (artificial intelligence).
A person seeking a bachelor of science degree in computer science must fulfill the following requirements:
Bachelor of science in computer science
Natural science courses must meet the CSAB accreditation guidelines.
Humanities/social science electives must satisfy the College of Engineering requirements and must include 8 hours from at least two of the following departments: English (literature only), history, modern languages (except English or the student's native language), and philosophy (except 110, 220, and 510).
A free elective is any 100 or higher course, excluding courses listed as a prerequisite to a required course.
Required courses may not be taken under the A/Pass/F option.
Information systems curriculum
Five specializations are available, each designed to develop additional skills supportive of needs of the industry. These specializations are database manager (designs, uses, maintains, and manages database systems), management information systems specialist (defines organization requirements, acts as a management-technical communication channel, evaluates information systems, manages analyst/programmers), application programmer (designs detail logic, codes, verifies, documents programs and systems), and communications analyst (designs and implements distributed information systems, specifies and designs interface to the communication system.)
A person seeking a bachelor of science degree in information systems must fulfill the following requirements:
Required courses may not be taken under the A/Pass/F option.
Bachelor of science in information systems
A free elective is any 100- or higher-level course, excluding courses listed as a prerequisite to a required course.
Required courses may not be taken under the A/Pass/F option.
Humanities/social science electives must satisfy the College of Engineering requirements and must include 9 hours from at least two of the following departments: English (literature only), history, modern languages (except English or the student's native language), and philosophy (except 110, 220, and 510).
Minor in computer science
The engineering equipment fee is in addition to the normal university fees. Beginning in fall 2001 students enrolling in any CIS course will be assessed $14 per credit hour plus a $1 per credit hour university technology fee.
Computer science courses
CIS 101. Introduction to Information Technology. (1) I, II, S. Introduction to microcomputer hardware components and operating system software; Windows as a graphical user interface and disk/file management tool; Internet, including World Wide Web and home pages, e-mail, telnet, and ftp. One hour lecture, tow hours scheduled laboratory, and two hours unscheduled open laboratory each week. Course meets in one contiguous block of four weeks.
CIS 102. Introduction to Microcomputer Spreadsheet Applications. (1) I, II, S. Designing, building, and modifying spreadsheets. Addressing techniques and formatting. Use of formulas and functions. Spreadsheets as management and decision tools. Charting of data. One hour lecture, two hours scheduled laboratory, and two hours unscheduled open laboratory each week. Course meets in one contiguous block of four weeks. Pr.: CIS 101.
CIS 103. Introduction to Microcomputer Database Applications. (1) I. II, S. Design, create, modify and maintain relational databases. Create relationships. Add and modify data. Search and query database. Design and create screen forms and reports. One hour lecture, two hours scheduled laboratory, and two hours unscheduled open lab. each week. Course meets in one contiguous block of four weeks. Pr.: CIS 101.
CIS 104. Introduction to Microcomputer Word Processing Applications. (1) I. II, S. Basic features of word processing. Create and edit a document. View, format, and customize document. Revise, update and rearrange text. Add graphics. Support features. Merge documents. One hour lec., two hours scheduled lab, and two hours scheduled open lab each week. Course meets in one contiguous block of four weeks. Pr.: CIS 101.
CIS 112. Advanced Personal Computing. (3) Advanced features of application software for personal computers, including batch files, configuration and maintenance of hardware and software, macros for application software, and sharing of data and programs. Individualized problems. Two hours lec. and four hours lab a week. Pr.: B or better in CIS 101 or permission of instructor.
CIS 190. Undergraduate Seminar in Computing and Information Sciences. (1) I. Topics of special interest in computing and information sciences.
CIS 200. Fundamentals of Software Design and Implementation. (4) I, II. Introduction to elementary software architectures and object-based program design. Library reuse, especially for implementing graphical user interfaces. Principles and applications of programming's fundamenteal elements: state, control, data structures, methods, objects, and packages. Programming projects. Four hours lec., one hour lab per week. Pr.: MATH 100.
CIS 208. C Language Laboratory. (1) I, II. Fundamentals of programming in C; applications. Three hours lab a week. Pr.: CIS 200.
CIS 209. C/C++ Programming for Engineers. (3) I, II, S. Application of computers to engineering problems. Abstraction and problem solving; algorithms; control structures; input/output; functions; arrays and array processing. Two hours lec., two hours lab each week. Pr .: MATH 220.
CIS 300. Data and Program Structures. (3) I, II. A study of common data and program structures together with associated algorithms. Topics include interfaces, design patterns, arrays, stacks, queues, lists, trees, hash tables, recursion, binary search, and tree traversals. Experience with both use and implementation of these structures and algorithms using a modern programming language. Discussion of tradeoffs involving performance and software maintainability. Pr.: CIS 200.
CIS 301. Logical Foundations of Programming. (3) I, II. Logical formalisms used to model and reason about computer systems. Propositional and predicate logic: syntax, semantics, and proof theory; soundness and completeness issues. Mathematical induction and inductive definitions. Program verification: invariants and program logics. Verification of reactive systems: description languages, specification logics, and model checking tools. Pr.: CIS 200.
CIS 362. Introduction to Business Programming. (3) I. An introduction to basic business programming techniques including file manipulation operations and sorting. The COBOL language will be used as an implementation tool. Pr.: CIS 200.
CIS 397. Honors Seminar in Computer Science. (1-3).
CIS 411. Global Information System. (3) Structure of large computer networks; information available via networks; data bases, news groups, list servers, and hyper media. Handling of text, numeric, sound, and visual information. Application such as catalogs, distributed group- work, and remote teaching. Issues of ethics, economics, and utility in use of networks; future technologies. Pr.: CIS 101 (understanding of use of personal computers and software.)
CIS 450. Computer Architecture and Organization. (3) I, II. Introduction to modern computer architectures: register transfer abstraction, addressing modes, basic operations (data transfer, arithmetic/logic, and control operations). Understanding relationships of higher-level language constructs to corresponding assembly instruction sequences generated by compilers. Relationships studied include storage classes to memory organization and function invocations to activation records. Introduction to interrupts and low-level I/O operations. Pr.: EECE 241 and CIS 300.
CIS 462. Information Systems in Organizations. (3) II. Role of information systems in organizations, representation of systems structures, decision processes, system evaluation, information system applications including file structures, and using a high level language in a system study. Pr: CIS 362.
CIS 490. Special Topics in Computer Science. (2-4) Current topics in computer science. Pr.: Prerequisite varies with the announced topic.
CIS 492. Computers and Society. (1-3) A study of the impact of computers and associated technologies on society, including such topics as ethics of computer use, computer fraud, protection of privacy; legal, moral, and public policy-making responsibility of computer professionals. Pr.: Junior standing and conc. enrollment in PHILO 492; CIS 520.
CIS 499. Honors Research/Thesis. (2-4) Individual research problem selected with approval of faculty advisor. Open to students in the College of Engineering honors program and to seniors in the College of Arts and Sciences honors program. A report/thesis is presented orally and in writing during the last semester.
Undergraduate and graduate credit in minor field
CIS 520. Operating Systems I. (3) I, II. Basic operating systems concepts and services: interrupt processing, process, concurrency, deadlock, resource scheduling and system structure; resource management: real and virtual storage, input/output systems, disk scheduling and file systems; design and construction of concurrent programs. Pr.: CIS 450 or EECE 431; and CIS 501.
CIS 521. Real-Time Programming Laboratory. (3) I. Project-oriented introduction to asynchronous processes and related system software; device drivers, event-driven operations, hierarchical and time-sliced process scheduling, spooling operations, interjob and intermachine communications. Project will be built on a single-use environment. Conc.: CIS 520.
CIS 522 Introduction to Data Structures. (1) II. Introduction to basic data structures such as stacks, queues, lists, and priority queues, and algorithmic techniques for sorting, searching and hashing. Emphasis on modularity and reuse. Introduction to the concept of object-oriented design and interface specifications. Not available to students with credit for CIS 300. Three hours rec. a week. Course meets in one contiguous block of five weeks. Pr.: C, or C++ programming.
CIS 523 Introduction to concurrent programming. (1) II. Introduction to concurrent programming techniques based on message passing primitives (send/receive) and shared memory (semaphore based P/V operations and Monitor based wait/signal operations). Not available to students with credit for CIS 520. Three hours rec. a week. Course meets in one contiguous block of five weeks. Pr.: C, or C++ programming and CIS 300 or CIS 522.
CIS 525. Telecommunications and Data Communications Systems. (3) Basic concepts including OSI 7 layer model, data transmission methods, medium access, link control, connections management; network applications including electronic mail, file transfer, distributed computing, window systems; network management including OSI and Internet management frameworks. Pr.: CIS 300.
CIS 540. Software Engineering Project I. (3) I. Current practices of software development, requirements, design, prototyping, measures, and evaluation. Specification, design, and prototyping of a software system. Pr.: CIS 501.
CIS 541. Software Engineering Project II. (3) II. Final implementation, integration, and testing of a software system. Introduction to configuration management, project management, and software maintenance. Pr.: CIS 540 (which must be taken in the preceding semester).
CIS 560. Database System Concepts. (3) I, II. Concepts, approaches, and techniques in database management. Representation of information as data, data storage techniques, foundations of logical data models, data retrieval, database design, transaction management, integrity and security. Pr.: CIS 501; CIS 301 or MATH 510.
CIS 570. Introduction to Formal Language Theory. (3) I. Formal languages, automata, regular expressions, grammars, introduction to computability theory. Reading and writing informal mathematical proofs pertaining to these topics. Pr.: MATH 510, CIS 300, and CIS 301.
CIS 575. Introduction to Algorithm Analysis. (3) I. An introduction to mathematical analysis of time- and space-complexity of algorithms, including worst-case, average-case, and amortized complexity. An examination of various algorithmic designs, such as greedy algorithms, divide-and-conquer algorithms, and dynamic programming algorithms. Techniques for proving correctness of algorithms. Pr.: CIS 300, CIS 301, and MATH 510.
CIS 580. Numerical Computing. (3) I. Introduction to numerical algorithms fundamental to scientific computer work, including elementary discussion of error, roots of equations, interpolation, systems of equations, quadrature, and introduction to methods for solution of ordinary differential equations. Pr.: CIS 300 and MATH 221 and 551.
CIS 591. Computer Science Applications. (3) I, II, S. Programming, program libraries, and design of algorithms. for students with minimal background in computer science. Not for credit by CIS majors. Pr.: Graduate standing in student's own area and knowledge of at least one procedural programming language.
Undergraduate and graduate credit
CIS 605. Programming Languages. (3) I, II. History, processors, programming environments; types, scopes and extent, abstraction mechanisms, exceptions and concurrency; functional and object-oriented languages; formal syntax and semantics; structure of compilers for block-structured languages. Pr.: CIS 300. CIS 301.
CIS 625. Parallel Programming. (3) I. Basic concepts of concurrent and distributed programming; parallel computing architectures; real-time programming; parallel simulation; fault-tolerant programming; partitioning, mapping, and granularity of parallel programming such as communication systems; grid, N-body stimulation, and matrix problems; and embedded systems control. Pr.: Pr.: CIS 501 and 520.
CIS 635. Introduction to Computer-Based Knowledge Systems. (3) I. Introduction to the applications of artificial intelligence concepts to solving knowledge-dependent tasks. Review of knowledge-representation ideas. Survey of expert system design. Introduction to existing knowledge-based tools available on personal computers. Development of an intelligent system. Pr.: CIS 300.
CIS 636. Interactive Computer Graphics. (3) I, II. Devices and software for graphics display and user interaction, development of software for direct graphic manipulation applications. Pr.: CIS 300.
CIS 638. Multimedia Systems. (3) II. Introduction to computer graphics devices, user interaction; history and scope; multimedia structure, encoding methods and standards, mark-up and scripting languages, software tools, and applications; readings in current literature; class presentation; multimedia project. Pr.: CIS 300, senior standing.
CIS 640. Software Testing Techniques. (3) II, in alternate years. Survey of software testing methodologies; evaluation of software testing strategies; experience in a variety of software testing practices. Pr.: CIS 540.
CIS 644. Object Oriented Design and Development. (3) Object models, concepts of classes and objects, dynamic models, comparison of design methods, relationship to object-oriented languages, tools for design and program construction, design and prototype project. Three hours rec. a week. Pr.: CIS 300.
CIS 645. Software Development Environments. (3) On sufficient demand. Survey of current development environment. Pr.: CIS 501.
CIS 690. Implementation Projects. (3) I, II, S. The department will suggest various design or implementation projects for individuals or groups in areas such as translators, interpreters, microprogramming, minicomputer operating systems, graphics, numerical software, etc. Pr.: Junior standing.
CIS 697. Seminar in Computer Science. (1-3) Pr.: Junior standing.
CIS 705. Programming Language Design. (3) Fundamental design principles: abstraction, parameterization, qualification. Lamda-calculus as a metalanguage for design and analysis. The role of data typing, predicate calculus-base typing. Intuitionistic Type Theory. Pr.: CIS 605.
CIS 706. Translator Design I. (3) I. Compilers and interpreters, including description of languages, finite state scanners, LL (1) parsing, symbol tables, syntax directed semantics, simple code generation. Constructing a simple PASCAL compiler. Pr.: CIS 501, 605.
CIS 710. Computer Simulation Experiments. (3) On sufficient demand. Principles of digital computer simulations; discrete simulation method, statistics of simulations; implementations. Pr.: CIS 300.
CIS 720. Advanced Operating Systems. (3) Process synchronization and communication, distributed programming primitives, transactions and concurrency control, distributed scheduling, distributed storage, deadlock, security. Pr.: CIS 520.
CIS 721. Real Time Systems. (3) The design of hard real-time embedded systems, including language and operating system support, scheduling, schedulability analysis, fault-tolerance, and design tools. Pr.: CIS 520.
CIS 722. Operating System Practices. (3) II. Structure and functions of modern operating systems. Emphasis on reading and modifying the source code of a working operating system. This includes memory management, input/output, process management, file systems, and network interconnection software construction. Pr.: CIS 520.
CIS 725. Advanced Computer Networks. (3) Network algorithms; routing and congestion control; protocol engineering; protocol decomposition, specification and verification, synthesis; protocols for high speed networks; parallel implementations, light-weight protocols. Pr.: CIS 520 and 525.
CIS 726. Advanced World Wide Web Technologies. (3) II. An advanced course on the technologies that make up the World Wide Web. WWW site designs and analysis, WWW software architecture, server-side technologies, dynamic executable scheduling, digital libraries, WWW security. Pr.: CIS 520, CIS 525.
CIS 730. Principles of Artificial Intelligence. (3) II. Introduction to the fundamental concepts and techniques of AI: problem solving, search and planning, knowledge representation and qualitative reasoning, expert systems, natural language processing and cognitive modeling, computer vision, and machine learning. Pr.: CIS 501.
CIS 736. Computer Graphics. (3) Topics in computer representation and display of images and graphic interaction. Pr.: CIS 636 or EECE 636.
CIS 740. Software Engineering. (3) Software life cycle, requirements, specifications, design, validation, measures, and maintenance. Pr.: CIS 540.
CIS 746. Software Measurement. (3) Measurement theory; development, validation and use of software measures; software measures in the software life cycle, including cost estimation, design measures, software complexity and software reliability. Pr.: CIS 540.
CIS 748. Software Management. (3) Topics related to the management of software, including organization, project planning, process models, life cycle models, TQM, software quality assurance, cost estimation, configuration management. Three hours rec. a week. Pr.: CIS 740.
CIS 750. Advanced Computer Architecture Experiments. (3) On sufficient demand. Characteristics of various computers including those with execution support of multiprocessing, multiprogramming, microprogrammable, high-level language, stack processing, and communication architectures. Two hours lec. and three hours lab a week. Pr.: CIS 450.
CIS 761. Data Base Management Systems. (3) Data models and languages, hierarchical, network, relational systems; implementation and operational requirements; programming projects using data base management systems. Pr.: CIS 560, 604.
CIS 762. Office Automation. (3) Characteristics of information work; modeling systems for characterizing aspects of office environment; form-based systems; office automation and description languages; ergonomics; local area networks and tools used in the automation of offices. Pr.: CIS 525, 560.
CIS 764. Database Design. (3) On sufficient demand. Conceptual, logical, physical, and user interface design for database management systems. Three hours rec. a week. Pr.: CIS 501.
CIS 770. Formal Language Theory. (3) Regular languages, finite automata, context-free languages, pushdown automata, context-sensitive languages, linear bounded automata, recursively enumerable languages, Turing machines. Pr.: CIS 570.
CIS 771. Software Specification. (3) Formal logic for specification of software components; algebraic vs. model-based specifications; common abstract types; verification of properties of specifications; introduction to specification of concurrent systems. Pr.: CIS 604.
CIS 775. Analysis of Algorithms. (3) I. Study and application of techniques and procedures used in the analysis of algorithms including the worst and average cases of both time and space. Study of the P and NP classes. Pr.: CIS 575.
CIS 798. Topics in Computer Science. (Var.) I, II, S. Pr.: Prerequisite varies with the announced topic.