BREADTH COURSES FOR NONMAJORS
Nonmajors may also take other ICS courses for which they have the prerequisites.
1A Programming and Problem Solving I (4) F, S, Summer. Concepts and properties of procedures; language and notation for describing procedures; application of a specific procedure-oriented language to solve simple numerical and nonnumerical problems using a computer. Principles for using computers effectively and for clearly conceiving and expressing procedures. Provides an overview of computer science. Designed for non-ICS majors. No credit allowed for ICS 1A after successful completion of ICS 21. ICS 1A and ICS 1P may not both be taken for credit. (V)
1B Patterns of Problem Solving (4) F. Introduction to patterns of reasoning in decision making and problem solving. Logic, probability, and decision-making tools as examples of quantitative and mathematical models. Role of values in problem solving. (V)
1C Networked Information Discovery and Retrieval (4) S. Information resources and communication tools available over the Internet, with emphases on the organization of computer networks and the information they provide, developing effective strategies for search and retrieval, and the synthesis of information obtained from diverse sources. (V)
1D Introduction to Models (4). The nature of models, their limitations, and their improvement. Use and construction of computer-based modeling tools. (V)
1E Brain, Computation, and Thought (4). Analysis of neural connections in the brain as electrical circuits to examine their computational properties, providing an elementary understanding of the nature of brain computation and the mental operations it naturally gives rise to. (V)
1F What Can We Compute (4) W. Introduction to problems computers can and cannot solve--and for solvable problems, the time and resources needed. Includes discussion of algorithms and procedures, Turing machines and undecidability, undecidable problems, problem classes, intractable problems. (V)
1P Introduction to Computing (4) W. Computer literacy, including an introduction to computer hardware, capabilities and limits of computers, and impacts of computing; and use of productivity tools, including word processors, spreadsheets, and communication programs. Laboratory exercises give students hands-on experience with productivity tools. No credit allowed for ICS 1P after successful completion of ICS 21. ICS 1A and ICS 1P may not both be taken for credit.
COURSES FOR MAJORS AND NONMAJORS
21 Introduction to Computer Science I (6) F, W. First of a three-quarter introductory course. 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 analysis, expression, and discovery. No credit allowed for ICS 1A or 1P after successful completion of ICS 21. (V)
22 Introduction to Computer Science II (6) W, S. Second of a three-quarter introductory course. 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. Prerequisite: ICS 21 with a grade of C or better. (V)
23 Introduction to Computer Science III (6) F, S. Third of a three-quarter introductory course. Builds on ICS 22 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 22 with a grade of C or better; Mathematics 6A. ICS 23 and ICS 23E may not both be taken for credit. (V)
23E Data Structures for Computer Engineers (4) F. Focuses on algorithms of fundamental importance in computer engineering and their mathematical analysis, basic data structures for primary and secondary memory, storage allocation and management techniques, data description, and design techniques. For Computer Engineering majors only. Prerequisites: ECE40 and Mathematics 6A. ICS 23E and ICS 23 may not both be taken for credit.
51 System Architectures (6) W, S. Operation of hardware components, ways of interconnecting them to form systems, means of modeling and analyzing their behavior, and structures that may be realized in either hardware or software. Laboratory work illustrates these concepts in the context of assembly language programming. Prerequisites: ICS 22 with a grade of C or better; Mathematics 6B.
52 Systematic Software Construction (6) F, W. 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 a project illustrating these elements. Prerequisite: ICS 23 with a grade of C or better.
54 Programming for Multitasking Operating Systems (4) F. Principles and concepts embodied in modern multitasking operating systems, including shells, filters, pipelines, programmability and scripting, extensibility, concurrent processing, and interprocess communication. Several integral tools and utilities are presented. Unix and C are used to provide concrete examples. Prerequisite: ICS 23. ICS 54 and ECE40 may not both be taken for credit.
80 Special Topics in Information and Computer Science (2 to 4) W. May be repeated for credit if title or topic varies.
92 Engineering and Computer Science Educational Laboratory (ECSEL) (0) F, W, S. 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 Engineering E92.
93 Strategies for Success in ICS (0) F, W. 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.
H96 Freshman Honors Seminar (1). Issues and conflicts from the philosophy and history of engineering and science, ethical responsibilities of engineers and scientists, the influence of diverse backgrounds, and the breadth of activities within the engineering and science disciplines. Various faculty participate each week. Pass/Not Pass only. Open only to Information and Computer Science freshmen students accepted into the Campuswide Honors program. Same as Physical Sciences H96 and Engineering EH96.
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 125B, as well as other courses. Students' abilities to achieve their grade in a course will not be affected by their participation in experiments.
121 Introduction to Software Engineering (4) F, W, S. Broad introduction to the concepts, techniques, and current practice of software engineering. Software process models as an organizing concept; principles relevant to each part or aspect of the different models; exercises to illustrate important tools and concepts. Prerequisite: ICS 52; Mathematics 2A-B-C and 6A-B; lower-division writing.
125B Project in System Design (4) F, W, S. 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 121 and 141.
131 Social Analysis of Computerization (4) F, W, S. 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 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) W, S. 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.
135 Project in the Social and Organizational Impacts of Computing (4) S. 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) W, S. 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) F, W, S. In-depth study of several contemporary programming languages stressing variety in data structures, operations, notation, and control. Examination of languages for list, string, and array manipulation; languages for structured programming and systems programming; command and query language design; programming style; run-time representations, environments, and execution strategies. Prerequisites: ICS 51 and 52; Mathematics 6A-B; lower-division writing requirement.
142 Compilers and Interpreters (4) W. 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) F. 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) S. 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. Recommended: ICS 142.
145A Language Processor Construction (4) S. 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) W. 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.
147 Network Programming (4) S. Study of concepts, methods, and tools for the design and implementation of network-distributed applications. Topics include interprocess communication, communication protocols, transport layer interfaces, distributed application design (e.g., client/server), performance, and security. Prerequisites: ICS 51, 52, 54, and 153.
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 Introduction to Computer Systems Architecture (4) F, W. 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; Mathematics 6A-B-C; satisfactory completion of the lower-division writing requirement.
152 Intermediate Computer Systems Architecture (4) W. Hardware description languages. Issues in machine organization including: arithmetic/logic unit design, control unit design. Memory organization, I/O processing and interrupts. Microprocessor system design. Prerequisite: ICS 151. ICS 152 and Engineering ECE 132 may not both be taken for credit.
153 Computer Networks (4) F. 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; Mathematics 6A-B-C. Formerly ICS 157.
155A Logic Design Laboratory (4) W. 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. Prerequisite: ICS 151.
155B Computer Design Laboratory (4) S. 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.
161 Design and Analysis of Algorithms (4) F, W, S. 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 with a grade of C or better; ICS 51; Mathematics 2A-B-C and 6A-B-C; lower-division writing. Prerequisite for Computer Engineering majors only: ICS 23E.
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; Mathematics 2A-B-C. Same as Linguistics 102.
163 Graph Algorithms (4) S. 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) W. 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. Prerequisites: ICS 161 or equivalent; Mathematics 2A-B-C or equivalent.
165 Project in Algorithms and Data Structures (4) W. Design, implementation, execution, and analysis of algorithms for sorting, graph problems, and matrix manipulations. Time-space-structure trade-offs. Prerequisite: ICS 161.
171 Introduction to Artificial Intelligence (4) F, W. 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 141 and Mathematics 2A-B-C, 6C.
172 Programming Techniques in Artificial Intelligence (4) W. The study of the language LISP and its derivatives, as used in problem-solving systems requiring simple recursion, procedural embedding of information, production-system control structures, pattern-directed function invocation, and a variety of access and control mechanisms. Prerequisite: ICS 171.
173 Neural Networks (4) W. 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 141; Mathematics 6C, 2A-B-C; satisfactory completion of the lower division-writing requirement.
175A Project in Artificial Intelligence (4) S. Construction of a working artificial intelligence system. Evaluation of capabilities of the system including impact of knowledge representation. Prerequisite: ICS 172.
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 172.
180 Special Topics in Information and Computer Science (4) F, W, S. May be repeated for credit if title or topic varies. Prerequisites vary.
184 File and Database Management (4) W. 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. Prerequisite for Computer Engineering majors only: ICS 23E.
186 Computer Graphics (4) W. Interactive graphics software and hardware. Survey of interactive graphic design systems spanning a large family of disciplines. Each class member will generate an operational program demonstrating interactive graphics as a human-computer communication medium. Prerequisite: ICS 52.
196 Tutoring in ICS (1 to 4) F, W, S. 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) F. 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) F, W, S. 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) F, W. S
202 Seminar in Research in ICS (2) F. Graduate orientation program and colloquium series. Includes talks by ICS faculty in all areas about their current research. Satisfactory/Unsatisfactory Only.
205 HumanComputer Interaction (4). The design of interfaces to computerized systems with special attention to the ways in which they are compatible with human cognitive capabilities and organizational practices.
221A 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.
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.
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 multi-media 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 technology in supporting work in teams and organizations. Examines various technologies, including group editors, communications and conferencing systems, and group decision support systems. Examines the possibilities, the limits, and social studies of their use and impacts.
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.
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.
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.
241 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 152 (or equivalent).
242 Parallel Computer Architecture and Languages (4). Introduction to the principles of parallel processing. Fundamental organizations of multiprocessor/multicomputer architectures and their programmability. Various approaches to developing software for such machines, including explicit language extensions, new programming paradigms and models of computation, and tools for program development.
243 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.
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 Distributed Computer Systems (4). Design and analysis techniques for distributed systems and their communication architectures. Topics covered include distributed system components, interprocess communications, synchronization techniques, performance and reliability, and hardware-software interface. Prerequisite: consent of instructor.
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 233; 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.
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 Automata Theory (4). Advanced course in theory of finite automata and their relationship to formal languages and grammars. Formal analysis of various computational models including Finite State Acceptors, Push Down Acceptors, Turing Machines, and Random Access Machines. Topics include undecidability, computational complexity, and NP-completeness. 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.
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.
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). Introduction to Artificial Intelligence (AI), the study of mental faculties through the use of computational models. Fundamental subdisciplines of AI including knowledge representation, search, deduction, planning, natural language parsing and comprehension, knowledge-based (expert) 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.
271A Knowledge Representation in Artificial Intelligence (4). Investigation of approaches to representation of knowledge for machine intelligence. Need for such knowledge as exhibited by examples of human behavior. Evaluation of current models and representations.
273A 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.
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.
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
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 dissertation requirements for the Ph.D.
299 Individual Study (2 to 12). Individual research or investigation under the direction of an individual faculty member.
398 Teaching Assistant Training Seminar (2) F. Theories, methods, and resources for teaching computer science at the university level, particularly by teaching assistants. Course organization, designing examinations and projects, grading, motivating students. Participants give and critique presentations and are videotaped while teaching. Satisfactory/Unsatisfactory Only.
399 University Teaching (4). Involves on-the-job experience for Teaching Assistants. Limited to and required of Teaching Assistants.