Computing and Information SciencesVirgil E. Wallentine, Head
Professors Gustafson, Hankley, Mizuno, Schmidt, Singh, Unger, and Wallentine; Associate Professors Andresen, Banerjee, Dwyer, Hatcliff, Howell, Neilsen, and Stoughton; Assistant Professors Amtoft, DeLoach, and Hsu; Instructors Forgie and Shea; Emeriti: Professor Van Swaay, Associate Professors Bleyberg, Calhoun; Instructor Campbell.
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 personal computers because of the convenience and learning efficiency of personal interactive computing.
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 at the 500 or higher level 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
The information systems curriculum emphasizes the use of computers to solve problems arising in the operations of business and commerce. The curriculum closely follows programs designed by the Association for Computing Machinery and the Data Processing Management Association.
Five specializations are available, each designed to develop additional skills supportive of needs of the industry. These specializations are information systems analyst/designer (analyzes information needs, designs, and maintains information systems, manages system projects), 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:
Bachelor of science in information systems
CIS 015. Undergraduate Seminar. (0) I, II. Presentation of professional problems and practices by students, faculty, and industry professionals associated with computing and information sciences. Required of all undergraduate students new to the department. One hour lec. per week.
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, telenet, and ftp. One hour lect., two 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 lec., 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 lec., two hours scheduled lab, 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 105. Introduction to Computer Programming. (1) I, II, S. An introduction to computer problem solving; basic programming logic; algorithms; control structures; and data structures. The focus is on the control flow of programming with an elementary introduction to object-oriented design. Upon successful completion of the course, students should be able to write simple computer programs. Consists of one hour lec. and one hour rec. per week for 8 weeks.
CIS 111. Fundamentals of Computer Programming. (3) I, II. Introduction to object-oriented programming. Principles and applications of programming fundamentals: state, control, data structures, methods, objects, and packages. Programming projects. Two hours lec., two hours lab per week. Pr.: MATH 100.
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 fundamental elements: state, control, data structures, methods, objects, and packages. Programming projects. Four hours lec., one hour lab per week. Pr.: MATH 100 and either CIS 105, CIS 111, AP computer science credit, or equivalent experience.
CIS 209. 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; databases, 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.: 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.
CIS 501. Software Architecture and Design. (3) I, II. Principles and patterns for design and structure of software, development of object-oriented models, examples of software architecture. Pr.: CIS 300.
CIS 505. Introduction to Programming Languages. (3) I, II. History; programming language concepts including type, scope, and extent, abstraction mechanisms and control; programming paradigms, including one or more of logic, functional, and object-oriented programming, and programming languages supporting the selected paradigms; interpreters, compilers, and virtual machines for the selected languages, storage management and garbage collection; type checking and type inference. Pr.: CIS 300 and 301.
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. The first semester of a two-semester capstone course. Current practices of software development, requirements, design, prototyping, measures, and evaluation. Specification, design, and prototyping of a software system. Not available for credit to students with credit in CIS 543. Pr.: CIS 501.
CIS 541. Software Engineering Project II. (3) II. Continuation of CIS 540. 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 543. Software Engineering Design Project. (3) I. Current practices of software development, requirements, design, prototyping, measures and evaluations. Specification, design, and prototyping of a software system. Not available for credit to students with credit in CIS 540. Pr.: CIS 501.
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 and CIS 505.
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 621. Real-Time Programming Fundamentals. (1) I. Relationship between C/C+ + constructs and corresponding assembly code generated by compilers. Introduction to special techniques used to implement micro-controllers, such as initialization of programmable CPU modules/peripheral devices, techniques to link assembly and C/C + + codes, producing ROM-able code, and EPROM burning/Flash programming. Three hours rec. a week. Course meets in one contiguous block of five weeks. Pr.: C or C + + programming, and CIS 523 and either CIS 300 or 522.
CIS 622. Real-Time Operating Systems. (1) I. Basic real-time operating systems concepts and services; interrupt processing; process and thread models; real-time software architectures and development environments. Detailed study of the design and implementation of real-time applications using real-time operating systems. Three hours rec. per week. Course meets in one contiguous block of five weeks. Pr.: CIS 621.
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.: CIS 501.
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 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. 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 Languages. (3) II. Programming language concepts, including typing, scoping, abstraction and exceptions; programming paradigms, including one or more of logic, functional, object-oriented and concurrent programming, and programming languages supporting the selected paradigms; introduction to programming language semantics; programming language design; development environments. Pr.: CIS 505 and MATH 510.
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 compiler. Pr.: CIS 501, 505.
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 or both CIS 622 and EECE 633.
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 net-work 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, lightweight 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, 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 732. Machine Learning and pattern Recognition. (3). I. Theory and methodology of inductive learning, including decision trees, artificial neural networks, probabilistic and instance-based learning, and inductive and boosting; genetic algorithms and genetic programming; and applications to data mining. Pr.: CIS 501 or 575.
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 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.: Varies with the announced topic.