Information and Computer Sciences (ICS)
College of Natural Sciences
ICS 101 Tools for the Information Age (3) Fundamental concepts and terms of computer technology, application software for problem solving, computer technology trends and impact on individuals and society. Co-requisite: 101L.
ICS 101L Tools for the Information Age Lab (1) Using computers and application software: survival skills, written communications, spreadsheets, computer communications, presentation software. Co-requisite: 101.
ICS 111 Introduction to Computer Science I (3) Overview of computer science, writing programs. Pre: 101 or consent. Co-requisite: 111L. NS3
ICS 111L Introduction to Computer Science I Lab (1) Programming exercise, demonstration and discussion of computer equipment, techniques, issues. Co-requisite: 111.
ICS 141 Discrete Mathematics for Computer Science I (3) Logic, sets, functions, matrices, algorithmic concepts, mathematical reasoning, counting techniques, probability theory, relations, equivalences, partial orderings, graphs. Pre: 111 (or concurrent) or consent.
ICS 211 Introduction to Computer Sciences II (3) Algorithms and their complexity, introduction to software engineering, data structures, searching and sorting algorithms, numerical errors. Pre: 111 and 141 (or concurrent), or consent.
ICS 212 Program Structure (3) Program organization paradigms, programming environments, implementation of a module from specifications, the C and C++ programming languages. Pre: 211 or consent.
ICS 311 Algorithms and Data Structures (3) Data structures, including arrays, records, pointers, trees, and graphs, storage management, algorithms for searching and sorting, mathematical analysis of algorithms. Pre: 141 and 211, or consent.
ICS 312 Machine-Level and Systems Programming (3) Machine organization, machine instructions, addressing modes, assembler language, subroutine linkage, linking to higher-level languages, interface to operating systems, introduction to assemblers, loaders and compilers. Pre: 211 and 212 (or concurrent), or consent.
ICS 313 Programming Language Theory (3) Syntax, control structures, data binding and scope, language styles, programming in LISP and Prolog, language and automata theory. Pre: 141 and 212, or consent.
ICS 321 Data Storage and Retrieval (3) Data storage devices, timing and capacity, programming for files, hashed and indexed files, introduction to relational database systems. Pre: 141 and 211, or consent.
ICS 331 Logic Design and Microprocessors (3) Basic machine architecture, microprocessors, bus organization, circuit elements, logic circuit analysis and design, microcomputer system design. Pre: 312 or consent. Co-requisite: 331L.
ICS 331L Logic Design and Microprocessors Lab (1) Use of laboratory tools, measurement and construction techniques, hardware debugging, interfacing techniques, microcomputer circuitry and construction. Co-requisite: 331.
ICS 412 Operating Systems (3)
Operating system structure, process creation and management, memory allocation and management, scheduling, protection. Pre: 212 and 312, or consent.
ICS 413 Software Engineering I (3) System specification, modeling and analysis, prototyping, hierarchal design, program design methods, cost estimation, project management, computer-aided software design. Team-oriented software-design project. Pre: 311 or consent.
ICS 414 Software Engineering II (3) Continuation of 413. Project management, quality, and productivity control, testing and validation, team management. Team-oriented software-implementation project. Pre: 413.
ICS 415 Introduction to Programming for the Web (3) Introduction to emerging technologies for construction of World Wide Web (WWW)-based software. This course covers the programming and scripting languages used for the creation of dynamic WWW sites and client-server programming. Students will be expected to complete a medium-sized software project that uses all the languages and concepts discussed in the class. Pre: 311 or consent.
ICS 421 Database Systems (3) Principles of database systems, data modeling, relational models, database design, query languages, query optimization, concurrency control data security. Pre: 311 and 321, or consent.
ICS 422 Data Processing (3) Role of data processing in organizations, programming practices, ethics, COBOL language, sequential and indexed file processing, report writing, on-line transaction processing. Pre: 321 or consent.
ICS 424 Application Frameworks (3) Experience producing applications with at least two different applications frameworks. A-F only. Pre: 212, 311, and 313; or consent.
ICS 431 Computer Architecture (3) Memory management, control flow, interrupt mechanisms, multiprocessor systems, special-purpose devices. Pre: 331.
ICS 440 Discrete Mathematics for Computer Science II (3) Number theory, recursive algorithms, program correctness, planner graphs and graph coloring, trees and their applications, introduction to formal languages and automata. Pre: 141 or consent.
ICS 441 Theory of Computation (3) Grammars, sequential machines, equivalence, minimalization, analysis and synthesis, regular expressions, computability, unsolvability, G”del's theorem, Turing machines. Pre: 313.
ICS 442 Analytical Models and Methods (3) Applications of mathematical methods in computer science with emphasis on discrete mathematics, numerical computation, algebraic models, operations research. Pre: MATH 216 or MATH 242 or MATH 252.
ICS 451 Data Networks (3) Network analysis, architecture, digital signal analysis and design; circuit switching, packet switching, packet broadcasting; protocols and standards; local area networks; satellite networks; ALOHA channels; examples. Pre: 141 and 212, or consent.
ICS 461 Artificial Intelligence I (3) Survey of artificial intelligence: natural language processing, vision and robotics, expert systems. Emphasis on fundamental concepts: search, planning, and problem solving, logic, knowledge representation. Pre: 313.
ICS 464 Introduction to Cognitive Science (3) Introduces basic concepts, central problems, and methods from cognitive science. Identifies contributions from disciplines such as cognitive psychology, linguistics, artificial intelligence, philosophy, and neuroscience. Pre: 111 or consent.
ICS 465 Introduction to Hypermedia (3) Basic issues of interactive access to information in various formats on computers. Available hardware and software: editing, integration, programming. Implementation of a sample information system. Pre: 311.
ICS 471 Probability, Statistics, and Queuing (3) Introduction to: probability, Markov chains, queuing theory, statistical inference, and regression. Emphases on computer system applications and statistical computing and simulation. Pre: 141 or consent.
ICS 481 Introduction to Computer Graphics (3) Fundamentals of computer graphics including graphics hardware, representation, manipulation, and display of two- and three-dimensional objects, use of commercial software. Pre: 311 and either MATH 216, MATH 242, or MATH 252; or consent.
ICS 491 Special Topics (3) Reflects special interests of faculty. Oriented toward juniors and seniors. Pre: consent.
ICS 499 Computer Project (V) Individual or small-group projects in system design or application under faculty supervision. Pre: 313 or 321, or consent.
ICS 500 Master's Plan B/C Studies (1) Enrollment for degree completion. Pre: master's Plan B or C candidate and consent.
ICS 611 Compiler Theory and Construction (3) Design and implementation of compilers, syntactic and semantic descriptions of programming languages, algorithms for syntactic analysis and object code generation. Pre: 312 or consent.
ICS 612 Theory of Operating Systems (3) Advanced study in operating systems theory and design with emphasis on case studies and distributed systems. Pre: 412.
ICS 613 Advanced Software Engineering (3) Fundamental software engineering procedures, including planning, estimation, design, testing, process definition and improvement, and software quality assurance. Measurement techniques are used to support empirically-driven software process improvement throughout the course. Pre: 414 or consent.
ICS 621 Analysis of Algorithms (3) Analysis and design of algorithms: modeling, comparison, measures, applications. Pre: 311.
ICS 622 Systems Modeling and Evaluation (3) Mathematical modeling, analysis, optimization, and simulation techniques, applications to design and evaluation of computer software systems. Pre: 412, 440, and 471; or consent.
ICS 623 Data Security (3) Classical ciphers, current encryption standards, public key cryptography, authentication, digital signatures, security in operating systems and databases. Pre: 321 and 412, or consent.
ICS 641 Theory of Computation (3) Advanced topics in formal languages, automata, computability, computational complexity. Pre: 440 or consent.
ICS 651 Computer Networks (3) Elementary principles of modern computer networking. Detailed coverage of overall architecture and the physical, data link, and network layers, with emphasis on the network layer. Pre: 451.
ICS 661 Artificial Intelligence II (3) Current issues in artificial intelligence, including expert systems, knowledge representation, logic programming, learning, natural language processing. Pre: 461.
ICS 662 Computer Algebra (3) Use of computers and non-numeric mathematics, including algebra and calculus, theory and applications. Pre: 440 or consent.
ICS 663 Pattern Recognition (3) Nature of the problem in pattern recognition and clustering; explanation of various algorithms. Pre: MATH 371.
ICS 664 Human-Computer Interaction (3) Studies of human performance in designing and using information systems. Emphasizes concepts and methodologies from human factors, psychology, and software engineering relating to human performance. Pre: 413.
ICS 665 User Interfaces and Hypermedia (3) Advanced concepts in construction of interfaces between computers and their users. Hypermedia information structures, guidelines, problems, and tradeoffs. Discussion of selected readings, implementation of prototypes. Pre: 465.
ICS 671 Applied Regression Analysis (3) Fitting a straight line by least squares, multiple regression, hypothesis testing, examination of residuals, dummy variables, stepwise regression, analysis of variance, nonlinear estimation, computer assignments. Pre: 471.
ICS 672 Time Series Analysis (3) Least squares and maximum likelihood theory, application to stationary and nonstationary parametric time series model fitting. Pre: 671.
ICS 673 Multivariate Analysis (3) Matrix algebra, multiple and partial correlation, factor analysis, canonical correlation, discriminant analysis with applications. Pre: 471. Recommended: 671.
ICS 681 Computer Graphics (3) Selected advanced topics in computer graphics. Substantial project required. Pre: 481 or consent.
ICS 682 Numerical Computation (3) Selected topics in numerical analysis, mathematical software, and scientific computation; examples include sparse matrix methods, finite element methods, mathematical programming. Repeatable. Pre: 440 or consent.
ICS 690 Seminar in ICS (1) Series of talks on advanced research topics. CR/NC only.
ICS 691 Topics in Software (3) Reflects special interests of faculty in advanced programming, systems programming, software systems. Repeatable. Pre: consent.
ICS 692 Topics in Theoretical Computer Science (3) Reflects special interests of faculty in theoretical computer science. Repeatable. Pre: consent.
ICS 699 Directed Reading/Research (V) Pre: graduate standing and consent.
ICS 700 Thesis Research (V) Research for master's thesis.
ICS 800 Dissertation Research (V)
For key to symbols and abbreviations, see the first
page of this section.