SMLOGO TITLE

Courses in Information and Computer Science

BREADTH COURSES FOR NONMAJORS

Nonmajors may also take other ICS courses for which they have the prerequisites.

10A Information: Presentation and Representation (4). Kinds of information, including quantitative, probabilistic, textual, graphic, audio. Locating information, evaluating reliability. Representing information on paper, in computer systems, in other media. Organization into hierarchies, networks, tables. Effectiveness and efficiency of alternative representations and organizations. Measuring information; redundancy, compression. Formerly ICS 10. (V)

10B Computer-Based Information Systems (4). The analysis, design, implementation, quality assurance, deployment, and ongoing management of computer-based information systems, and related software, hardware and networking issues; end-user customization of applications and interfaces, and selection of information, via query macro and scripting languages. Prerequisite: ICS 10A. Formerly ICS 11. (V)

10C Networked Information Discovery and Retrieval (4). Network-based communication and information resources, including electronic mail, news, and other sources. Technical, personal, and social aspects of their development, access, and use. Extensive use of a wide range of established and developing technologies. Prerequisite: ICS 10B. Formerly ICS 1C. (V)

LOWER-DIVISION

COURSES FOR MAJORS AND NONMAJORS

6A Discrete Mathematics for Computer Science (4). Covers essential tools from discrete mathematics used in computer science with an emphasis on the process of abstracting computational problems and analyzing them mathematically. Topics include: combinatorics, mathematical induction, elementary probability, and asymptotic analysis. Prerequisite: high school mathematics through trigonometry. Same as Mathematics 6A. (V)

21 Introduction to Computer Science I (6). First of a three-quarter introductory course. Introduces fundamental concepts related to computer software design and construction. Develops initial design and programming skills using a high-level programming language (primarily C++/Java). Introduces useful computer-based tools for analysis, expression, discovery. (V)

H21 Honors Introduction to Computer Science (6). First of a three-quarter introductory sequence. Introduces basic concepts, fundamental laws and principles of software and hardware organization, program construction, applications, and policy and social issues. Develops initial programming skills using a high-level programming language (primarily C/C++/Java). Introduces useful computer-based tools for analyses, expression, and discovery. Prerequisite: enrollment open to ICS majors in the Campuswide Honors Program or by consent of the Department of Information and Computer Science. ICS H21 and ICS 21 may not both be taken for credit. (V)

22 Introduction to Computer Science II (6). Second of a three-quarter introductory sequence. Abstract behavior of classic data structures (stacks, queues, priority queues, tables, trees), alternative implementations, analysis of time and space efficiency. Recursion. Object-oriented and functional programming. Models of computation. Corequisite or prerequisite: ICS 6A or Mathematics 6A. Prerequisite: ICS 21 with a grade of C or better. (V)

H22 Honors Introduction to Computer Science II (6). Second of a three-quarter introductory sequence. Covers in-depth concepts of programming and mathematical tools for analyzing programs. Topics include: combinatorics, program analysis and correctness, advanced structures, system design techniques, and programming paradigms. Corequisite or prerequisite: Mathematics 6A or ICS 6A. Prerequisite: ICS H21 with a grade of B- or better or ICS 21 with a grade of A or better. ICS H22 and ICS 22 may not both be taken for credit. (V)

23 Fundamental Data Structures (4). Focuses on implementation and mathematical analysis of fundamental data structures and algorithms. Covers storage allocation and memory management techniques. Prerequisites: ICS 22 with a grade of C or better or Engineering ECE40; Mathematics 6A or ICS 6A. ICS 23 and H23 may not both be taken for credit. (V)

H23 Introduction to Computer Science III (4). Third of a three-quarter introductory course. Builds on ICS H22 with respect to mathematical tools and analysis. Focuses on fundamental algorithms in computer science, basic data structures for primary and secondary memory, storage allocation and management techniques, data description, and design techniques. Prerequisites: ICS H22 with a grade of B- or better or ICS 22 with a grade of A or better; Mathematics 6A or ICS 6A. ICS H23 and 23 may not both be taken for credit. (V)

51 Introductory Computer Organization (6). Multilevel view of system hardware and software. Operation and interconnection of hardware elements. Instruction sets and addressing modes. Virtual memory and operating systems. Laboratory work using low-level programming languages. Prerequisites: ICS 21 with a grade of C or better; Mathematics 6B.

52 Introduction to Software Engineering (6). Introduction to the concepts, methods, and current practice of software engineering. The study of large-scale software production; software life cycle models as an organizing structure; principles and techniques appropriate for each stage of production. Laboratory work involves a project illustrating these elements. Prerequisite: ICS 23 with a grade of C or better.

53 Embedded Computing Systems (4). Principles of embedded computing systems: embedded systems architecture, hardware/software components, system software and interfacing, real-time operating systems, hardware/software co-development, and communication issues. Examples of embedded computing in real-world application domains. Simple programming using an embedded systems development environment. Prerequisites: ICS 21, 22, 23, 51.

54 Programming for Multitasking Operating Systems (4). In-depth study of principles and concepts embodied in modern Internet-connected, multiuser, multitasking operating systems, including shells, filters, pipelines, programmability and scripting, extensibility, concurrent processing, and interprocess communication. Several integral tools and utilities are presented. UNIX used to provide concrete examples. Prerequisite: ICS 23 with a grade of C or better.

80 Special Topics in Information and Computer Science (2 to 4). May be repeated for credit if title or topic varies.

92 Engineering and Computer Science Educational Laboratory (ECSEL) (0). Comprehensive academic support designed primarily for underrepresented or underprepared majors in Engineering, ICS, or selected areas of the physical sciences. Typical program activities: tutoring, study skills, career planning, self-esteem enhancement, library research techniques, graduate study planning, and independent studies. Students may receive a maximum of 12 units of workload credit only. Pass/Not Pass only. Same as ENGR92.

93 Strategies for Success in ICS (0). Designed to develop good study skills in technical fields and the participation of students as active learners in their education. Topics include time management, analytical thinking, text analysis, academic survival strategies, and goal setting. Pass/Not Pass only. Two units of workload credit only.

UPPER-DIVISION

NOTE: Empirical studies are one method used to advance the state-of-the-art in computer science. As such, participation in experiments is part of the regular structure of ICS 121 and 125, as well as other courses. Students' abilities to achieve their grade in a course will not be affected by their participation in experiments.

102 Requirements Analysis and Engineering (4). Aims to equip students to develop techniques of software-intensive systems through successful requirements analysis techniques and requirements engineering. Students learn systematic process of developing requirements through co-operative problem analysis, representation, and validation. Prerequisites: ICS 121; Mathematics 2A-B-C.

104 Human Computer Interaction (4). Presents basic principles of human-computer interaction (HCI). Introduces students to user interface design techniques, design guidelines, and usability testing. Students gain the ability to design and evaluate user interfaces and become familiar with some of the outstanding research problems in HCI. Prerequisites: one course (with a grade of C or better) selected from ICS 1A, ICS 21, Engineering E10, CEE10, ECE10, MAE10, or equivalent; and upper-division standing.

105 Project in Human-Computer Interaction and User Interfaces (4). The goal of this project course is to prepare students to develop and evaluate user interfaces to software systems through a one-quarter project. Prerequisites: ICS 104, 121, 131, and 141.

108 Medical Information Systems (4). Concepts related to the incorporation of computing and information technology into health-care environments, covering both the technological challenges and the social challenges. Topics include computer-based patient record systems, decision support systems, medical imaging, and databases. Prerequisites: one course (with a grade of C or better) selected from ICS 1A, ICS 10, ICS 21, Engineering E10, Engineering ECE11, or equivalent; ICS 6A, Mathematics 6A, or equivalent; and upper-division standing.

121 Software Tools and Methods (4). Concepts and techniques of constructing software in a systematic fashion, including detailed design techniques, specifications, programming methods, quality-inducing procedures, development tools, team techniques, testing, estimation, and performance improvement. Laboratory work involves exercises to illustrate important concepts, methods, and tools. Prerequisites: ICS 52 with a grade of C or better; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A; satisfactory completion of the lower-division writing requirement.

122 Software Specification and Quality Engineering (4). Aims to prepare students to develop high-quality software through successful specification and quality engineering techniques. Students learn what high-quality means, how to plan for and achieve it, and how to measure it. Prerequisites: ICS 121 and 141; Mathematics 2A-B-C.

123 Software Architectures, Distributed Systems, and Interoperability (4). Aims to prepare students to engineer well-structured software systems. Students learn a wide range of software architectural styles, architectural platforms that provide standard services to applications, and formal architecture description languages. Prerequisites: ICS 51 with a grade of C or better; ICS 121 and 141; Mathematics 2A-B-C.

125 Project in System Design (4). Specification, design, construction, testing, and documentation of a complete software system using concepts learned in ICS 52, 121, and 141. Special emphasis on the need for and use of teamwork, careful planning, and other techniques for working with large systems. Prerequisites: ICS 51 with a grade of C or better; ICS 121 and 141; Mathematics 2A-B-C.

126A-B Comprehensive Project in Software System Evolution (4). Provides students with an industrial-like software development experience. Students undergo the vicissitudes of developing a large-scale software system from several points of view and specify, design, construct, test, document, and evolve a complete software system. Students must enroll in both quarters. In-Progress grade for ICS 126A; final grades for both quarters will be assigned upon completion of 126B. Prerequisites: ICS 51 with a grade of C or better; ICS 121 and 141; Mathematics 2A-B-C.

127 Advanced Project in Software Engineering (4). Students work in teams to specify, design, construct, test, and document a complete software system in a specialized application domain using application/domain-specific techniques. Each offering's topic is announced the preceding spring. Prerequisites: ICS 125 or 126A; Mathematics 2A-B-C.

131 Social Analysis of Computerization (4). Introduction of computerization as a social process. Examines the social opportunities and problems raised by new information technologies, and the consequences of different ways of organizing. Topics include computerization and work life, privacy, virtual communities, productivity paradox, systems risks. Prerequisites: one course (with a grade of C or better) selected from ICS 1A, Engineering 10, Engineering ECE11, ICS 21, or equivalent; upper-division standing; satisfactory completion of the lower-division writing requirement.

132 Organizational Information Systems (4). Introduction to role of information systems in organizations, components and structure of organizational information systems, and techniques used in information systems analysis, design, and implementation. Prerequisite: ICS 131.

134 Computer-Supported Cooperative Work (4). Introduces concepts and principles of collaborative systems. Topics may include shared workspaces, group interaction, workflow, architectures, interaction between social and technical features of group work, and examples of collaborative systems used in real-world settings. Students develop a simple collaborative application. Prerequisites: ICS 21, 22, 23 with a grade of C or better, and ICS 131.

135 Project in the Social and Organizational Impacts of Computing (4). Students undertake projects intended to gather and analyze data from situations in which computers are used, organize and conduct experiments intended to test hypotheses about impacts, and explore the application of concepts learned in ICS 131, 132, and other ICS courses. Prerequisite: ICS 132. Prior course work in research methodology or statistics is recommended.

137 Electronic Publishing and Digital Archives (4). Analytical introduction to electronic publishing and accessing electronic documents through digital archives. Examines how these communication media link authors and readers via diverse mediating institutions and information technologies. Concrete activities may use the World Wide Web and HTML. Prerequisite: ICS 131.

139 Technical Writing and Communication Skills (4). Study and practice of critical and technical writing as it applies to the field of computer science. Each student writes essays of varying lengths, totaling at least 4,000 words. Prerequisite: completion of lower-division writing requirement; upper-division standing; Information and Computer Science majors only.

141 Programming Languages (4). In-depth study of several contemporary programming languages stressing variety in data structures, operations, notation, and control. Examination of different programming paradigms, such as logic programming, functional programming and object-oriented programming; implementation strategies, programming environments, and programming style. Prerequisites: ICS 23 and ICS 51 with grades of C or better.

142 Compilers and Interpreters (4). Introduction to the theory of programming language processors covering lexical analysis, syntax analysis, semantic analysis, intermediate representations, code generation, optimization, interpretation, and run-time support. Prerequisite: ICS 141. Prerequisite for Computer Engineering majors only: ECE40.

143 Principles of Operating Systems (4). Principles and concepts of process and resource management, especially as seen in operating systems. Processes, memory management, protection, scheduling, file systems, and I/O systems are covered. Concepts illustrated in the context of several well-known systems. Prerequisite: ICS 141. ICS 143 and ECE142 may not both be taken for credit.

144 High-Performance Computers and Program Optimization (4). Analyzes the relationship between computer architecture and program optimization. High-performance and parallelizing compilers for RISC, Superscalar, and VLIW architectures are discussed. Prerequisite: ICS 51 with a grade of C or better. Recommended: ICS 142.

145A Language Processor Construction (4). Project course which provides working laboratory experience with construction and behavior of compilers and interpreters. Students build actual language processors and perform experiments which reveal their behaviors. Prerequisite: ICS 142.

145B Project in Operating System Organization (4). Detailed specification and design of critical components of an actual operating system including a memory manager, a process server, and a file/IO subsystem. Hardware/software tradeoffs. Emphasis on logical organization of system and communication. Prerequisite: ICS 143.

148 Distributed Computing (4). Introduction to systems implemented within network-based computer architectures. Issues in distributed programming, operating systems, and applications. Specific topics covered include programming constructs, timing/coordination problems, data/service replication, transactions/concurrency control, fault-tolerance, recovery, file systems, security. Prerequisite: ICS 141. Recommended: ICS 153.

151 Digital Logic Design (4). Boolean algebra. Design/analysis of combinational and sequential systems using SSI/MSI/LSI modules. Number systems. Error detecting and correction codes. Arithmetic algorithms. Hardware/ firmware implementation of algorithms. Prerequisites: ICS 23 and 51 with grades of C or better; Mathematics 6A or ICS 6A; Mathematics 6B.

152 Computer Systems Architecture (4). Design of computer elements: ALU, control unit, and arithmetic circuits. Memory hierarchy and organization. Caches. Function unit sharing and pipelining. I/O and interrupt processing. RTL and behavioral modeling using hardware description languages. Microprocessor organization and implementation techniques. Prerequisite: ICS 151. ICS 152 and Engineering ECE 132 may not both be taken for credit.

153 Computer Networks (4). An introductory course on computer network architectures. Layering approach of communication protocols is introduced, and the function of each layer is explained. Various examples are shown from long-haul networks and local area networks to B-ISDN and high speed networks. Prerequisites: ICS 23 and 51 with grades of C or better; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A.

155A Logic Design Laboratory (4). Introduction to standard integrated circuits: gates, flip-flops, shift registers, counters, latches. Construction and debugging techniques. Design of digital systems using LSI and MSI components. Practical use of circuits in a laboratory environment, including implementation of small digital systems such as arithmetic modules, displays, and timers. Prerequisites: ICS 151 or concurrent enrollment; satisfactory completion of the lower-division writing requirement.

155B Computer Design Laboratory (4). Design of basic computer components and small complete digital systems. Emphasis on practical use of Computer-Aided Design (CAD) tools, modeling of computer systems, and design practices in a laboratory environment. Prerequisite or corequisite: ICS 151.

156 Advanced Computer Networks (4). Fundamental principles in computer networks are applied to obtain practical experience and skills necessary for designing and implementing computer networks, protocols, and network applications. Various network design techniques, simulation techniques, and UNIX network programming are covered. Prerequisite: ICS 153 or equivalent, or consent of instructor.

158 Parallel Architectures and Algorithms (4). Parallel processing systems: emphasis on theory and application of arrays, trees, and hypercubes. Computational models and applications: sorting, integer arithmetic, matrix operations, fast Fourier transform, and others. Interconnection networks: framework for the description, analysis, and construction of hypercube-like interconnect. Prerequisite: ICS 152. ICS 161 recommended.

160E Engineering Data Structures and Algorithms (4). Design of efficient algorithms for practical data structures in engineering applications. Models of computation. NP-completeness. Prerequisite: Engineering ECE40. Same as Engineering ECE144.

161 Design and Analysis of Algorithms (4). Time and space complexity of algorithms. Models of computation, techniques for efficient algorithm design, effect of data structure choice on efficiency of an algorithm. Fast algorithms for problems such as sorting, set manipulation, graph problems, matrix multiplication, Fourier transforms, and pattern matching. NP-complete problems. Prerequisites: ICS 23 and 51 with grades of C or better; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A; Mathematics 2A-B-C; satisfactory completion of the lower-division writing requirement. Prerequisite for Computer Engineering majors only: ICS 23.

162 Formal Languages and Automata (4). Formal aspects of describing and recognizing languages by grammars and automata. Parsing regular and context-free languages. Ambiguity, nondeterminism. Elements of computability: Turing machines, random access machines, undecidable problems, NP-completeness. Prerequisites: ICS 23 and ICS 51 with grades of C or better; Mathematics 2A-B-C; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A. Same as Linguistics 102.

163 Graph Algorithms (4). Algorithms for solving fundamental problems in graph theory. Graph representations, graph traversal, network flow, connectivity, graph layout, matching problems. Prerequisite: ICS 161.

164 Principles of Computational Geometry (4). Algorithms and data structures for geometric computation and graphics programming. Fundamental problems of computational geometry such as convex hulls, Voronoi diagrams, Delaunay triangulations, polygon partitioning, arrangements, geometric searching, hidden surface elimination, motion planning. Prerequisite: ICS 161.

165 Project in Algorithms and Data Structures (4). Design, implementation, execution, and analysis of algorithms for problems such as sorting, searching, data compression, and data encryption. Time-space-structure trade-offs. Prerequisite: ICS 161.

168 Computer and Network Security (4). Overview of modern computer and networks security, attacks, and countermeasures. Authentication, identification, data secrecy, data integrity, authorization, access control, computer viruses, network security. Also covers secure e-commerce and applications of public key methods, digital certificates, and credentials. Prerequisites: ICS 6A, 23, and 143. Both ICS 153 and 161 are recommended.

171 Introduction to Artificial Intelligence (4). Different means of representing knowledge and uses of representations in heuristic problem solving. Representations considered include predicate logic, semantic nets, procedural representations, natural language grammars, and search trees. Prerequisites: ICS 52 with a grade of C or better; Mathematics 2A-B-C.

172 Programming Techniques in Artificial Intelligence (4). The study of methods for implementing artificial intelligence programs in high-level languages. Exercises on implementation of data structures for representing rules, frames, grammars, networks, and algorithms for search, inference, language processing, and learning. Prerequisite: ICS 171.

173 Neural Networks (4). An introduction to the rapidly growing field of neural networks, i.e., algorithms derived from brain circuitry. Models covered include the Hopfield model, delta rule, perceptrons, backpropagation, competitive learning. Mathematical analyses, applications, and biological bases of neural network algorithms. Prerequisites: ICS 52 with a grade of C or better; Mathematics 2A-B-C; Mathematics 6C or 3A.

175A Project in Artificial Intelligence (4). Construction of a working artificial intelligence system. Evaluation of capabilities of the system including impact of knowledge representation. Prerequisite: ICS 171.

175B Introduction to Expert Systems (4). Introduction to the methodology of design and implementation of expert systems. Laboratory work uses expert system shells to construct knowledge-based systems. Emphasis on techniques for representing and organizing domain and control knowledge as opposed to the theory and implementation of inference engines. Prerequisite: ICS 171.

178 Applications of Probability in Computer Science (4). Application of probability to real-world problems in computer science. Typical topics include analysis of algorithms and graphs, probabilistic language models, network traffic modeling, data compression, and reliability modeling. Prerequisites: Mathematics 2A-B and 67; either ICS 6A or Mathematics 6B; Mathematics 6D and either Mathematics 3A or 6C.

180 Special Topics in Information and Computer Science (4). May be repeated for credit if title or topic varies. Prerequisites vary.

184 File and Database Management (4). Database system architecture--data structures, storage structures, and data languages. Alternate approaches to database management systems: relational approach, hierarchical approach, network approach. Database security and integrity. Query processing. Prerequisite: ICS 52 with a grade of C or better. Same as Engineering ECE146.

186A Computer Graphics (4). Introduction to the fundamental principles of 3D computer graphics including polygonal modeling, geometric transformations, visibility algorithms, illumination models, texturing, and rasterization. This programming-intensive course requires students to learn a 3D graphics API to implement operational programs. Prerequisite: ICS 52 with a grade of C or better. Formerly ICS 186.

186B Advanced 3D Computer Graphics (4). Advanced topics in 3D graphics on illumination, geometric modeling, visualization, and animation. Covers physically based and global illumination models, solid modeling, curved surfaces, multiresolution modeling, image-based rendering and modeling, volume rendering, basic concepts of animation, scientific visualization, and antialiasing in graphics. Prerequisite: ICS 186A or equivalent; recommended: ICS 161, 164, 165.

187 Computer Game Development (4). Introduction to the principles of interactive two- and three-dimensional computer game development. Concepts in computer graphics, algorithms, software engineering, art and graphics, music and sound, story analysis, and artificial intelligence are presented and are the basis for student work. Prerequisites: ICS 186, and ICS 121 or 161 or 171; or Music 151; or Studio Art 106; or consent of instructor.

196 Tutoring in ICS (1 to 4). Offers opportunities to tutor both on an individual, as needed basis and as part of regularly scheduled courses. Specific tutoring assignments depend on the courses with which the student is working, as determined by the instructor in charge. In most cases includes time in individual tutoring and a term paper or project. May be taken for credit for a total of eight units. Pass/Not Pass only.

H197 Honors Seminar (2). An overview of computer science and selected recent trends in research. Students attend talks on current faculty research, with opportunities for discussion. Prerequisite: participation in the ICS Honors Program or Campuswide Honors Program. Pass/Not Pass only. Formerly ICS 197.

H198 Honors Research (4). Directed independent research in computer science for honors students. Prerequisites: ICS H197; upper-division standing and satisfactory completion of the lower-division writing requirement; participation in the ICS Honors Program or Campuswide Honors Program; consent of instructor.

199 Individual Study (2 to 5)

GRADUATE

200 Seminar in Research in ICS (2). Graduate orientation program and colloquium series. Includes talks by ICS faculty in all areas about their current research. Satisfactory/Unsatisfactory only. Formerly ICS 202.

205 Human-Computer Interaction (4). The design and evaluation of interfaces to computer systems and applications with special attention to their fit to human cognitive capabilities and organizational practices. Includes coverage of hypermedia, groupware, and other rapidly emerging developments.

206 Knowledge-Based User Interfaces (4). Concepts related to the development of interactive software systems with a focus on knowledge-based tools and human-centered design. Topics span the fields of human-computer interaction, software engineering, and knowledge representation. Prerequisite: ICS 171 or equivalent.

207 Information Retrieval, Filtering, and Classification (4). Algorithms for the storage, retrieval, filtering, and classification of textual and multimedia data. The vector space model, Boolean and probabilistic queries, and relevance feedback. Latent semantic indexing; collaborative filtering; and relationship to machine learning methods. Prerequisites: B.S. degree in computer science, or ICS 161, 171; Mathematics 3A or 6C; and a course in basic probability.

208 Introduction to Medical Informatics (4). Concepts related to the incorporation of information technology into health care environments, covering both the technological challenges and the social challenges. Topics include medical decision support systems, electronic patient records, information retrieval, standards, data security, human-computer interaction, and computer-aided instruction. Prerequisite: undergraduate degree in computer science, biological sciences, or health sciences with some exposure to the fundamentals of computing.

209 Seminar for Informatics in Biology and Medicine (2). Current research and research trends in bioinformatics and medical informatics. Forum for presentation and criticism by students of recently published research and work in progress. Prerequisite: ICS 208, 277A, or 277B, or a basic understanding of bioinformatics or medical informatics. May be repeated for credit.

211 Advanced Compiler Construction (4). Advanced study of programming language implementation techniques: optimizations such as common sub-expression elimination, register allocation, and instruction scheduling. Implementation of language features such as type-directed dispatch, garbage collection, dynamic linking, and just-in-time code generation. Prerequisite: ICS 142 or equivalent.

212 Introduction to Embedded Computing Systems (4). Embedded system technologies including processors, DSP, memory, and software. System interfacing basics; communication strategies; sensors and actuators; mobile and wireless technology. Using pre-designed hardware and software components. Design case studies in wireless, multimedia, and/or networking domains. Prerequisites: B.S. degree in computer science; or ICS 51, 152; Mathematics 3A or 6C or ICS 6A; ICS 161.

213 Software for Embedded Systems (4). Embedded computing elements, device interfaces, time-critical IO handling. Embedded software design under size, performance, and reliability constraints. Software timing and functional validation. Programming methods and compilation for embeddable software. Embedded runtime systems. Case studies of real-time software systems. Prerequisites: B.S. degree in computer science; or ICS 51, 152; Mathematics 3A or 6C or ICS 6A; ICS 161.

214 Databases (4). Examines basic principles of data management in both conventional and advanced database systems. Topics include: the relational database model and query languages; the network model; semantic and object-oriented databases; security and integrity; issues in distributed database management. Formerly ICS 211.

215 Advances in Database Management Systems Technology (4). Multidimensional data structures. Access methods in databases, spatial databases, spatio-temporal databases, multimedia database management, uncertainty in databases, data analysis, and decision support in databases. Prerequisites: ICS 143, 152, 161, and 214 or consent of instructor.

216 Validation and Testing of Embedded Systems (4). Embedded system building blocks including IP cores. Co-simulation. Formal verification using model checking. Verification environments. Test challenges in core integration: compliance, feature, random, and collision testing. Core access and test integration. Interface-based verification and standards. Prerequisite: B.S. degree in computer science or basic courses in algorithms and data structures, calculus, discrete mathematics, linear algebra, symbolic logic.

217 Design Automation and Prototyping of Embedded Systems (4). System representation and modeling. Abstract and language models. Simulation as a modeling activity. Computation and hw/sw systems prototypes. System analysis using models. Constraint and interface modeling. Behavioral compilation and synthesis. Prerequisites: B.S. degree in computer science or ICS 51, 152, 161, 212, and Mathematics 3A or 6C.

218 Multimedia Systems and Applications (4). Organization and structure of modern multimedia systems; audio and video encoding/compression; quality of service concepts; scheduling algorithms for multimedia; resource management in distributed and multimedia systems; multimedia protocols over high-speed networks; synchronization schemes; multimedia applications and teleservices. Prerequisites: undergraduate degree in computer science or ICS 143 and 161. ICS 148, 153, and 156 are also recommended. Undergraduates may enroll with consent of instructor.

219 Seminar in Compilers and Operating Systems (2). Current research and research trends in system-level software such as compilers and operating systems. Forum for presentation and criticism by students of new published research and work in progress. Prerequisites: undergraduate degree in computer science or ICS 142 and 143. May be taken for credit twice.

221 Software Engineering (4). Study of the concepts, methods, and tools for the analysis, design, construction, and measurement of complex software-intensive systems. Underlying principles emphasized. State-of-the-art software engineering and promising research areas covered, including project management. Formerly ICS 221A.

222 Formal Methods in Software Engineering (4). Examination of formal specification models, including algebraic/axiomatic, state-transition, model-based, operational, and temporal logics, along with their related analysis techniques. Formal models in software development are discussed as are different proof techniques.

224 Software Analysis and Testing (4). Studies techniques for developing confidence in software from traditional testing schemes to integrated, multitechnique analytic approaches. Considers strengths and weaknesses and explores opportunities for synergistic technique application. Emphasis is on approaches integrated into the software process. Formerly ICS 224A.

225 Software Processes (4). Explores vehicles for modeling, coding, and analyzing software processes. Considers integration of software process programming approaches with traditional management issues. Explores the use of software process execution as a vehicle for effective integration of tools into environments.

226 Software Measurement (4). Software measurement provides a foundation for evaluation, analysis, feedback, and improvement in large software systems and processes. Discusses software measurement principles, techniques, systems, and applications. Examines empirical studies and introduces experimental design considerations.

227 User Interfaces and Software Engineering (4). Exploration of current developments in systems and tools for creation and run-time management of graphical user interfaces. Object specification, constraint specification and maintenance, control paradigms, separation of concerns, support infrastructures, and multimedia issues also are discussed.

228 Software Environments (4). Study of the requirements, concepts, and architectures of comprehensive, integrated, software development and maintenance environments. Major topics include process support, object management, communication, interoperability, measurement, analysis, and user interfaces in the environment context.

229 Seminar in Software (2). Current research and research trends in software. Forum for presentation and criticism by students of research work in progress. May be repeated for credit.

230 Social Analysis of Computing (4). The social and economic impacts of computing and information technologies on groups, organizations, and society. Topics include computerization and changes in the character of work, social control and privacy, electronic communities, and risks of safety-critical systems to people.

233 Computer-Supported Cooperative Work (4). The role of information systems in supporting work in groups and organizations. Examines various technologies designed to support communication, information sharing, and coordination. Focuses on behavioral and social aspects of designing and using group support technologies.

234A Computerization, Work, and Organizations (4). Selected topics in the influence of computerization and information systems in transforming work and organizations. Theories of organization and organizational change. Processes by which diverse information technologies influence changes in work and organizations over short and long time periods. Prerequisite: ICS 230 or 233.

234B Theories of Computerization and Information Systems (4). Social and economic conceptions of information technology. Macrosocial and economic conditions that foster changes in information technologies. Social construction of information and computer technology in professional worlds. Theories of information technology and large-scale social change. Prerequisite: ICS 230 or 233.

234C Computing and Cyberspace (4). Selected topics in Internet-level computerization and systems, including electronic communities, distributed information services, electronic commerce, and digital libraries. Surveys systems and architectures. Theories of social interaction, computer-mediated communication, and social-technical system design. Examines social studies of cyberspace use and impacts. Prerequisite: ICS 230 or 233.

235A Qualitative Research Methods in Information Systems (4). Introduction to qualitative research methods used to study computerization and information systems, such as open-ended interviewing, participant observation, and ethnography. Studies of the methods in practice through examination of research literature. Prerequisite: ICS 230 or 233.

235B Quantitative Research Methods in Information Systems (4). Quantitative research methods used to study computerization and information systems. Design of instruments, sampling, sample sizes, and data analysis. Validity and reliability. Longitudinal versus cross-sectional designs. Analysis of secondary data. Studies of the methods through examination of research literature. Prerequisites: basic knowledge of elementary statistics; ICS 230 or 233.

238A Descriptive Multivariate Statistics I (4). Mathematical tools to organize and illuminate the multivariate methods. Multiple regression analysis. Multi-dimensional scaling and cluster analysis. Statistical computing via MDS(x), DMDP, and SPSS. Students must enroll in the laboratory section which meets on Wednesdays. Satisfactory/Unsatisfactory grading only. Prerequisite: Social Science 100A-B-C or equivalent. Same as Social Ecology 290A, Social Science 201A, and Management 290X.

238B Descriptive Multivariate Statistics II (4). Presentation of the principle methods of multivariate statistics including criteria for appropriate use and the interpretation of resulting measurements. Computer exercises are used to demonstrate concepts. Prerequisite: ICS 238A. Same as Social Ecology 290B, Social Science 201B, and Management 290Y.

239 Seminar in Research on Social Analysis and Information Systems (2). Current research and research trends in topics covered within computing, organization, policy, and society. Topics may emphasize, but are not limited to, social and organizational analysis pertinent to computerized information systems, Computer Supported Cooperative Work (CSCW), and studies of emerging information technologies. May be repeated for credit.

241A Computer Systems Architecture (4). Study of architectural issues and their relation to technology and software: design of processor, interconnections, and memory hierarchies. Prerequisites: ICS 143 and 153, or equivalent. Formerly ICS 241.

241B Modern Microprocessors (4). Fundamental concepts and recent advances in computer architecture necessary to understand and use modern microprocessors. Topics span out-of-order execution, multiple instruction issue, control/data speculation, predication, advanced cache and DRAM organizations, embedded systems, DSP and multi-media instructions. Prerequisite: ICS 241A or equivalent.

242 Distributed Computer Systems (4). Principles of distributed computing systems. Topics covered include message-passing, remote procedure calls, distributed shared memory synchronization, resource and process/thread management, distributed file systems, naming and security. Prerequisite: consent of instructor. Formerly ICS 247.

243A Computer Networks (4). Discussion of various techniques to provide communication among processes in distributed environments. Topics covered include layering protocol architectures, packet switched networks, local area networks, interprocess communication, internetworking, high-speed networks, multi-media networks. Prerequisite: consent of instructor. Formerly ICS 243.

243B Networking Laboratory (4). Structured around exercises that highlight topics taught in ICS 243A such as addressing, sub-netting, bridging, ARP, routing. Also focuses on network simulation and design. Structured around weekly readings and laboratory assignments. Prerequisite: ICS 153 or 243A, or ECE229A.

243C High-Speed Networks (4). Provides an overview of high-speed networking technologies. Topics covered include ATM networks, mechanisms to make the Internet high speed, integration of ATM and Internet, other types of high-speed networks, and case studies. Prerequisite: ICS 243A or equivalent.

243D Internet Technology (4). Introduction to Internet technologies. The focus is on both the Internet architecture and applications. Topics covered include Internet routing and multicast protocols, Internet support protocols, UNIX network programming, Web, Internet design, and measurement tools. Prerequisite: ICS 243A or equivalent.

243E Wireless and Mobile Networking (4). Provides a basic introduction to wireless networking. The focus is on layers 2 and 3 or the OSI reference model, design, performance analysis, and protocols. Topics covered include: an introduction to wireless networking, digital cellular, next generation cellular (G3), wireless LANs, and mobile IP. Prerequisite: ICS 153 or 243, or ECE229A and an introductory course in probability, or consent of instructor.

243F Middleware for Networked and Distributed Systems (4). Discusses concepts, techniques, and issues in developing distributed systems middleware that provides high performance and Quality of Service for emerging applications. Also covers existing standards (e.g., CORBA, DCOM, Jini, Espeak) and discuss their relative advantages and shortcomings. Prerequisite: undergraduate-level course in operating systems and networks or consent of instructor.

243G Network and Distributed Systems Security (4). Overview of modern computer and networks security: attacks and countermeasures. Authentication, identification, data secrecy, data integrity, authorization, access control, computer viruses, network security. Group communication and multicast security techniques. Also covers secure e-commerce and applications of public key methods, digital certificates, and credentials. Prerequisite: ICS 243A or equivalent.

244 Parallel Computing (4). Definition of parallel processing systems. Theory and application of arrays, trees, and hypercubes. Computational models, applications: sorting, integer arithmetic, matrix operations, Fast Fourier Transform, and others. Interconnection networks: a framework for the description, analysis, and construction of hypercube-derived networks.

245 High-Performance Architectures and Their Compilers (4). Emphasis on the development of automatic tools (i.e., compilers/environments) for the efficient exploitation of parallel machines, and the trade-offs between hardware and software in the design of supercomputing and high-performance machines.

246 Computer Systems Modeling and Performance Evaluation (4). Performance modeling and evaluation using analytical and simulation techniques. Application to performance analysis of computer systems, networks, and parallel and distributed systems. Prerequisite: consent of instructor.

247 Computer Security Algorithms (4). Algorithms and data structures for performing computer security services. Network security, digital certificates and credentials, authenticated dictionaries, dynamic coalition management, and techniques for authorization and non-repudiation. Prerequisites: ICS 161, 163, 260, 261, 262, 263, or equivalent.

248 Queuing Theory (4). Elementary queuing models; probability distributions, stochastic processes, work conservation laws, Markovian queues, product form results, embedded Markov chains. Advanced topics. Prerequisite: consent of instructor.

249 Seminar in Parallel Distributed and Network Systems (2). Current research and research trends in parallel distributed and network systems. Forum for presentation and criticism by students of research work in progress. May be repeated for credit.

250 Fault-Tolerant Computing (4). Various aspects of fault-tolerant computing systems. Includes hardware and software failures, reliability, mechanism to recover from failures. Prerequisite: consent of instructor. Same as Electrical and Computer Engineering 254.

251 Digital System Verification and Testing (4). Techniques for simulation, verification, and testing of hardware and mixed-mode systems. Fault models, test generation, algorithms, and functional testing. Design for testability. Prerequisite: consent of instructor.

252 Introduction to Computer Design (4). The methodology and use of CAD tools for computer design, accomplished by a lab in which students practice design using commercially available silicon compilers and other tools. Prerequisite: ICS 151 and 152 or equivalent.

253 Design Description and Modeling (4). Introduction to design modeling. Overview of design description languages and demonstration of design modeling at different abstraction levels. Techniques and methodologies for simulating and testing of design. Prerequisites: ICS 151, 152, and 241; or consent of instructor.

254 VLSI System Design (4). Overview of integrated circuit fabrication, circuit simulation, basic device physics, device layout, timing; MOS logic design; layout generation, module generation, techniques for very large scale integrated circuit design. Prerequisite: ICS 151 and 152 or consent of instructor.

255 Physical Design Automation (4). Overview of physical design algorithms for logic and physical partitioning, placement, and floor planning. Routing and layout verification. Prerequisite: ICS 252 and 234; or consent of instructor.

256 Design Synthesis (4). Methods, algorithms, and tools for design synthesis on different levels of design: logic, register-transfer, behavioral, and system. CAD laboratory assignments using design tools for exploration of different synthesis algorithms. Prerequisites: ICS 152 (or 241), or 252, or consent of instructor.

257 System Tools (4). Specification and requirement analysis of integrated systems. Support for early system-design decisions. Estimation and prediction of design metrics. System partitioning, modeling of hardware/software codesign. Synthesis from executable specifications. Prerequisites: ICS 252 and 253; or consent of instructor.

258 Combinatorial Algorithms for Design Synthesis (4). Basic graph partitioning algorithms. Combinatorial optimization techniques. Applications to layout, placement, routing, scheduling, allocation. Prerequisites: ICS 241, 252, 265.

259 Seminar in Design Science (2). Current research and research trends in design science. Forum for presentation and criticism by students of research work in progress. May be repeated for credit.

260 Fundamentals of the Design and Analysis of Algorithms (4). Covers fundamental concepts in the design and analysis of algorithms and is geared toward non-specialists in theoretical computer science. Topics include: deterministic and randomized graph algorithms, fundamental algorithmic techniques like divide-and-conquer strategies and dynamic programming, and NP-completeness. Prerequisite: ICS 161 or equivalent undergraduate algorithms course.

261 Data Structures (4). An in-depth treatment of data structures and their associated management algorithms including resource complexity analysis. Prerequisite: ICS 23 and 161.

262 Computational Complexity (4). Advanced course in computational models and complexity classes. Covers the fundamentals of Turing Machines, Decidability, and NP-completeness. Includes discussion of more advanced topics including polynomial hierarchy, randomized complexity classes, #P-completeness and hardness of approximation. Prerequisite: ICS 162.

263 Analysis of Algorithms (4). Analysis of correctness and complexity of various efficient algorithms; discussion of problems for which no efficient solutions are known. Prerequisites: ICS 161 and 261.

264 Topics in Online Algorithms (4). Design and analysis of algorithms which make decisions with partial information. Focuses primarily on the use of competitive analysis, a means of evaluating online algorithms, although some probabilistic analyses are covered. Application areas covered vary. Prerequisite: ICS 161 or equivalent.

265 Graph Algorithms (4). Graph definitions, representation methods, graph problems, algorithms, approximation methods, and applications. Prerequisites: ICS 161 and 261.

266 Computational Geometry (4). An overview of some of the basic problems in computational geometry and of some algorithmic and data-structuring techniques appropriate to their solution. Prerequisites: ICS 161 and 261.

267 Data Compression (4). An introduction to the theory and practice of modern data compression techniques. Topics include codes, coding, modeling, text compression, lossless and lossy image compression standards and systems, audio compression. Prerequisite: ICS 161, 260, or 261.

268 Cryptography and Computer Security (4). Overview of modern cryptography; security threats and countermeasures; secret and public key cryptography; digital signatures and non-repudiation; cryptographic strength; block cipers and stream cipers; computer and network security; data privacy and data integrity; authentication and identification; freshness and timeliness. Prerequisites: ICS 161, 162, 260, 261, 262, 263, or equivalent; consent of instructor.

269 Seminar in the Theory of Algorithms and Data Structures (2). Current research and research trends in the theory of algorithms and data structures. May be repeated for credit.

270A Introduction to Artificial Intelligence (4). The study of theories and computational models for systems which behave and act in an intelligent manner. Fundamental subdisciplines of artificial intelligence including knowledge representation, search, deduction, planning, probabilistic reasoning, natural language parsing and comprehension, knowledge-based systems, and learning.

270B Advanced Artificial Intelligence Programming (4). Study of a set of common techniques that reappear in many artificial intelligence projects such as planning, natural language processing, learning, expert systems, and model-based reasoning. Prerequisites: ICS 172 and 270A (may be taken concurrently) or consent of instructor.

273 Machine Learning (4). Computational approaches to learning. Covers methods for concept formation, learning search heuristics, language acquisition, and machine discovery, among others. Participants should be familiar with heuristic search techniques and fluent in the LISP programming language. Prerequisite: ICS 270A. Formerly ICS 273A.

274 Probabilistic Learning: Theory and Algorithms (4). A unified probabilistic framework for learning algorithms. Classical pattern recognition algorithms, probabilistic mixture models, kernel methods, hidden Markov models, among others. Multivariate data analysis concepts for classification and clustering. Methodologies such as cross-validation and bootstrap. Prerequisites: basic calculus and linear algebra.

275A Network-Based Reasoning/Constraint Networks (4). Study of the theory and techniques of constraint network model. Covers techniques for solving constraint satisfaction problems: backtracking techniques, consistency algorithms, and structure-based techniques. Tractable subclasses. Extensions into applications such as temporal reasoning, diagnosis, and scheduling. Prerequisite: a basic course in algorithm design and analysis, or consent of instructor.

275B Network-Based Reasoning/Belief Networks (4). Focuses on reasoning with uncertainty using "Bayes Networks" that encode knowledge as probabilistic relations between variables, and the main task is, given some observations, to update the degree of belief in each proposition. Prerequisite: a basic course in probability or consent of instructor.

276A Neural Networks (4). Introduction to concepts of artificial neural networks (ANNs). Architectures of supervised and unsupervised networks. Basic math of learning and performance rules.

276B Seminar in Models of the Brain (4). Basic neural anatomy and physiology. Fundamental cell types and their channel properties. Organization of telencephalic circuitry. Cortico-Hippocampal pathways. Synaptic plasticity: long-term potentiation. Behavioral implications of plasticity, interpretation of lesion experiments, computational network models based on physiology of plasticity.

276C Cognitive and Computational Neuroscience (4). Computational analysis and simulation of physiological rules as sited in anatomical circuitries. Synaptic plasticity in the brain and its behavioral and psychological consequents in learning and memory. Theories of hippocampal function; thalamocortical function and interactions among neocortical layers.

277A Representations and Algorithms for Molecular Biology (4). Introduction to computational methods in molecular biology, aimed at those interested in learning about this interdisciplinary area. Covers computational approaches to understanding and predicting the structure, function, interactions, and evolution of DNA, RNA, proteins, and related molecules and processes. Prerequisite: a basic course in algorithms, or a basic course in molecular biology, or consent of instructor. Formerly ICS 277.

277B Probabilistic Modeling of Biological Data (4). A unified Bayesian probabilistic framework for modeling and mining biological data. Applications range from sequence (DNA, RNA, proteins) to gene expression data. Graphical models, Markov models, stochastic grammars, structure prediction, gene finding, evolution, DNA arrays, single- and multiple-gene analysis. Prerequisite: a basic course in algorithms and molecular biology, or ICS 277A or equivalent, or consent of instructor.

278 Data Mining (4). Introduction to the general principles of inferring useful knowledge from large data sets (commonly known as data mining or knowledge discovery). Relevant concepts from statistics, databases and data structures, optimization, artificial intelligence, and visualization are discussed in an integrated manner. Prerequisite: ICS 273 or 274 or consent of instructor.

279 Seminar in Artificial Intelligence (2). Current research and research trends in artificial intelligence. May be repeated for credit.

280 Special Topics in Information and Computer Science (4) F, W, S

287 Advanced Topics in Three-Dimensional Computer Graphics (4) F, W, S. Advanced topics in three-dimensional graphics on rendering, geometric modeling, and visualization. Subjects range from illumination and shading, and multiresolution representations, to other advanced algorithms and data structures in graphics. Also looks at trends that go beyond traditional computer graphics. Prerequisites: ICS 161, 164, 186, and 266.

290 Research Seminar (2). Forum for presentation and criticism by students of research work in progress. Presentation of problem areas and related work. Specific goals and progress of research. Satisfactory/Unsatisfactory only.

291 Directed Research (2 to 12)

298 Thesis Supervision (2 to 12). Individual research or investigation conducted in preparation for the M.S. thesis option or the dissertation requirements for the Ph.D. program.

299 Individual Study (2 to 12). Individual research or investigation under the direction of an individual faculty member.

398A Teaching Assistant Training Seminar (2) F. Theories, methods, and resources for teaching computer science at the university level, particularly by teaching assistants. Classroom presentations, working with individuals, grading, motivating students. Participants will give and critique presentations and may be videotaped while teaching. Satisfactory/Unsatisfactory only. Formerly ICS 398.

398B Advanced Teaching Assistant Seminar (2) F. Teaching computer science at the university level, emphasizing issues in teaching an entire course. Course organization, designing examinations and projects, grading, motivating students. Participants will begin to assemble teaching portfolios. Satisfactory/Unsatisfactory only. Prerequisite: ICS 398A or consent of instructor.

399 University Teaching (4). Involves on-the-job experience for Teaching Assistants. Limited to and required of Teaching Assistants.


Table of Contents Find home