SCHOOL OF INFORMATION AND COMPUTER SCIENCE
UNDERGRADUATE PROGRAM
Undergraduate Major and Courses in Information and Computer Science
Department of Computer Science (Majors in Computer Science and in Computer Science and Engineering)
Department of Informatics (Major in Informatics)
The School's undergraduate program prepares students for professions and careers in industry and provides students with the tools for advanced education at the graduate level. Many graduates follow career paths immediately after graduation; others go on to advanced study in a variety of fields, including computer science, management, engineering, law, medicine, and so on. An ICS undergraduate education is a blend of scholarship, science, technology, and practical application that forms an excellent foundation for professional life in the twenty-first century and prepares a student with serviceable skills useful for a lifetime.
The basis of the undergraduate program is a set of fundamental courses in mathematics and computer science, supplemented by breadth requirements from other academic disciplines. A premium is placed on writing and quantitative skills. Students start early with hands-on experience with advanced computing systems, and intense use of computer and network technologies continues throughout the undergraduate program. Students study data organization, algorithm design and analysis, design and organization of hardware and network systems, software engineering, artificial intelligence, social aspects of system design and use, and management of technology. In the process, students work with state-of-the-art hardware and software technologies, learn several contemporary programming languages, and make extensive use of computer-based utilities such as electronic mail.
The School of Information and Computer Science offers four majors. The Information and Computer Science (ICS) major allows students considerable flexibility in focusing on various areas; the Computer Science (CS) major is more focused on areas related to the Computer Science Department within the School. The Informatics major focuses on the interdisciplinary study of the design, application, use, and impact of information technology. The Computer Science and Engineering (CSE) major is a joint program with The Henry Samueli School of Engineering.
Students who are doing, or planning to do, extensive work with numerical problems are advised to consider courses in numerical analysis, statistics, probability, or other applied mathematics areas.
Students may also wish to consult the list of courses offered by the School of Engineering. Some Engineering courses can count toward intermediate-level and project course requirements for the ICS major. See the upper-division requirements for details.
Students enrolled in other degree programs who are interested in digital computer programming and the field of computer science will normally begin their studies with Introduction to Computer Science I (ICS 21) and continue in the programming sequence with Introduction to Computer Science II and Fundamental Data Structures (ICS 22 and 23) as far as their interests require and their programs permit.
The School of ICS Student Affairs Office is staffed by professional academic counselors and peer advisors. These individuals are available to assist students with program planning, questions on University and School policies and procedures, progress toward graduation, and other questions that arise in the course of a student's education. Faculty also are available for advising, generally for suggestions of additional course work in the student's area of specialization and on preparation for graduate school.
Freshmen
In the event the School receives more qualified applicants than can be accommodated, applicants may be subject to screening beyond minimum University of California admissions requirements. There is a limit on the number of applicants admitted to the majors.
Transfer Student Policy
Students transferring to UCI must satisfy the following requirements:
1. Completion of one year of college mathematics. Courses equivalent to Mathematics 6A-B-C (Discrete Mathematics) are preferred as this facilitates scheduling after transfer to UCI. If these are not available, students should take first-year calculus. A semester of pre-calculus and a semester of calculus may not be used to satisfy this requirement.
2. Completion of one year of computer science courses. The course work must contain one UC-transferable programming course involving concepts such as those found in C++, Java, Eiffel, or another object-oriented, high-level language; programming-only courses in Basic, Fortran, Cobol, Pascal, and C are not acceptable. For the remaining courses, it is strongly recommended that students select UC-transferable courses that do not focus strictly on learning a programming language but instead focus on topics such as object-oriented design, data structures, algorithms, and computer architecture, if such courses are available.
Since Java is used extensively in the curriculum, students who come in without the ability to program in Java should plan to learn it, by study on their own or by taking a Java programming course, prior to taking courses that assume knowledge of Java.
NOTE: These majors require a series of lower-division courses, and prerequisites constrain the order in which they can be taken. Students who transfer to UCI as juniors and must complete a significant part of this sequence will therefore find that it will take longer than two years to complete their degree.
To ensure admission consideration for the fall quarter, students should be sure to file their application by November 30 of the prior year. The selection criteria include grades, test scores, and other considerations. Note, however, that in cases where the number of incoming freshmen and advanced standing students who elect a major offered by the School exceeds the number of positions available, not all applicants will be accommodated.
Change of Major
Students interested in changing their major to one offered by the School should contact the ICS Student Affairs Office for more information and assistance. Information is also available at http://www.due.uci.edu/Change_of_Major.html.
NOTE: Students may not double major in ICS and CS.
SPECIAL PROGRAMS AND COURSES
The 3-2 Program with the Graduate School of Management
Outstanding students who are interested in a career in management may wish to apply for entry into the Graduate School of Management's 3-2 Program. Students normally apply for this program early in their junior year. See the Graduate School of Management section for additional information.
Campuswide Honors Program
The Campuswide Honors Program is available to selected high-achieving students from all academic majors from their freshman through senior years. For more information contact the Campuswide Honors Program, 1200 Student Services II; telephone (949) 824-5461; e-mail: honors@uci.edu; World Wide Web: http://www. honors.uci.edu/.
Education Abroad Program
Upper-division students have the opportunity to experience a different culture while making progress toward degree objectives through the Education Abroad Program (EAP). EAP is an overseas study program which operates in cooperation with host universities and colleges throughout the world. Additional information is available in the Center for International Education section.
Undergraduate Major in Information and Computer Science
REQUIREMENTS FOR THE BACHELOR'S DEGREE IN INFORMATION AND COMPUTER SCIENCE
University Requirements: See pages 56-61.
Major Requirements
Lower-division (some or all of these are prerequisites for required upper-division ICS courses):
A. ICS 6A or Mathematics 6A, Mathematics 6B, Mathematics 6C or 3A, Mathematics 2A-B, Mathematics 67.
B. ICS 21, 22, 23, 51, 52.
Upper-division:
A. ICS 121, 131, 141, 142, 143, 151, 152, 161, 171.
B. One intermediate course in each of two areas, selected from ICS 102; 104, 122, 123; 132; 144, 148; ICS 153, Engineering EECS143, EECS151; ICS 162, 163, 164, 168; ICS 172, 173, Engineering EECS136; Engineering EECS104 or ICS 183; ICS184.
C. Three project courses selected from ICS 105, 125, 126A-B, 127, 135, 145A, 145B, 155A, 155B, 156, 165, 175A, 175B, 185, 187, 188, Engineering EECS151L. NOTE: ICS 127 may not be used to satisfy any part of the project course requirement in conjunction with ICS 126A-B.
D. Two additional courses chosen from this list that have not been used to satisfy another ICS major requirement: Mathematics 105A-B, 114A-B, 118A-B, 120A-B, 121A-B, 130B-C, 131B-C, 132B-C, 140A-B, 141, 150, 151, 152, 162A-B, 171A-B-C, 173A-B, 180, 182; ICS 162, 163, 178; Philosophy 105A-B-C.
Specializations: Students may elect to complete one or more specializations within the major in Information and Computer Science. Courses taken for a specialization must be taken for a letter grade and may be used to satisfy upper-division requirements for the major. Courses may also be used to satisfy requirements of more than one specialization, subject to the following limitation: four of the courses used to satisfy the requirements for any one specialization may not be used to satisfy the requirements for any other specialization.
One individual study course (ICS H198 or 199) in the area of specialization may be substituted for one designated course (indicated by *) in the specialization requirements, upon prior approval of the ICS Associate Dean for Undergraduate Education.
Artificial Intelligence: four courses* selected from ICS 163 or 165, 172-179.
Computer Systems: four courses selected from ICS 123, 144-149, 153-159, 168, 183.
Implementation and Analysis of Algorithms: two courses selected from ICS 163, 164, 165; two courses* selected from ICS 125, 145A, 145B, 156, 175A, 175B.
Information Systems: three courses selected from ICS 102, 105, 108, 125, 132, 135; one course* selected from ICS 104, 123, 134, 137, 153, 175B, 184.
Networks and Distributed Systems: four courses selected from ICS 123, 145B*, 148, 153, 156*, 168.
Software Systems: two courses selected from ICS 102, 104, 105, 122, 123; two software project courses, either ICS 125 and 127* or 126A-B.
NOTE: Students may not major in both ICS and CS.
Requirements for the Minor in Information and Computer Science
ICS 21, 22, 23; ICS 6A or Mathematics 6A; ICS 51 or 52; two upper-division courses from ICS 100-189, excluding ICS 139 and 180.
Honors Program in Information and Computer Science
The honors program in ICS provides an opportunity for selected students majoring in ICS to pursue advanced work in one of the research areas in the School. Admission to the program is based on a formal application submitted to the School in the spring. Applications are available each year beginning May 1 and should be submitted by June 1 to ensure consideration.
For an application to be considered, the following conditions must be met (although exceptions may be granted in unusual circumstances):
1. The student must have completed the required lower-division ICS courses and Mathematics 6A-B-C by the end of the spring quarter in which the application is made.
2. The student must have the following grade point averages:
a. an overall grade point average of at least 3.2;
b. a grade point average of 3.5 or higher in the required lower-division ICS courses;
c. a grade point average of 3.5 or higher in Mathematics 6A-B-C.
3. Application must be made in the spring of the student's sophomore year. Certain exceptions are available, for example, for transfer students whose completion of the lower-division courses is delayed and for Campuswide Honors students.
In selecting students for the honors program, the School also considers evidence of ability and interest in research. Students admitted to the program participate in the ICS Honors Seminar (ICS H197), which provides an introduction to research areas in the School, followed by a minimum of two quarters of independent supervised research (ICS H198). Passing these two 198s counts for one of the project courses required for the major, provided that one other project course is taken in a different area. In order for the student to be considered to have successfully completed the honors program, the work must be written up as a final report and certified to be of honors quality by the student's advisor and by the program advisor.
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. Open to nonmajors only. 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. Open to nonmajors only. 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. Open to nonmajors only. 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. Same as CSE21. Only one course from ICS 21/CSE21 and ICS H21 may be taken for credit. (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 School of Information and Computer Science. Only one course from ICS H21 and ICS 21/CSE21 may 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/CSE21 with a grade of C or better. Same as CSE22. Only one course from ICS 22/CSE22 and ICS H22 may be taken for credit. ICS 22 and Informatics 42 may not both be taken for credit. (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. Only one course from ICS H22 and ICS 22/CSE22 may 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/ CSE22 with a grade of C or better or Engineering EECS40; Mathematics 6A or ICS 6A. Same as CSE23. Only one course from ICS 23/CSE23 and ICS H23 may 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. Only one course from ICS H23 and ICS 23/CSE23 may 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. ICS 52 and Informatics 43 may not both be taken for credit.
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.
53L Embedded Computing System Laboratory (2). Laboratory to accompany ICS 53. Corequisite: ICS 53.
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 Introduction to University Success (0). Survey of the attitudes and skills required for academic success. Designed primarily for new freshmen in technical fields who are first-generation college students, low-income students, or students with disabilities. Focus on specific tools and proven methods to improve academic performance. Study planning and independent studies. Students may receive a maximum of four units of workload credit only. Pass/Not Pass only.
93 Strategies for Success in ICS (0). Develops students' study skills for ICS and breadth requirement courses through instruction, small group activities, and application assignments. Topics include goal setting, note taking, text reading, examination preparation, memory and concentration, and problem solving. 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 or Informatics 111; ICS 6A or Mathematics 6A; Mathematics 7 and 67. Same as Informatics 113.
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 10A, ICS 21, Informatics 42, Engineering ENGR10, CEE10, EECS10, MAE10, or equivalent. Same as Informatics 131.
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; or Informatics 131. Same as Informatics 132.
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 EECS11, 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 or CSE90 with a grade of C or better; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A; or Informatics 43 with a grade of C or better; and satisfactory completion of the lower-division writing requirement. Same as CSE121 and Informatics 111.
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 6A or Mathematics 6A; Mathematics 7 or 67; either Mathematics 6B or 13 or Philosophy 29 or 30; ICS 121 or Informatics 111. Same as Informatics 115.
123 Software Architectures, Distributed Systems, and Interoperability (4). Prepares 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 and 67; or Informatics 122. Same as Informatics 123.
125 Project in Software 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 and 67.
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. Students must enroll in both quarters. In-Progress grade assigned for ICS 126A; final grades assigned after completion of 126B. Prerequisites: ICS 51 with a grade of C or better; ICS 121 and 141; Mathematics 2A-B and 67.
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 with a grade of C or better; Mathematics 2J or 67.
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 10A, ICS 21, Informatics 43, Engineering ENGR10, or equivalent; satisfactory completion of the lower-division writing requirement. Same as Informatics 161.
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 or Informatics 161. Same as Informatics 162.
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 23 or Informatics 43 with a grade of C or better; ICS 131 or Informatics 161. Same as Informatics 153.
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 previous courses. Prerequisite: ICS 132 or Informatics 162. Same as Informatics 163.
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 Concepts in Programming Languages I (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/CSE23 and ICS 51 or CSE31/EECS31 with grades of C or better. Same as CSE141.
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/CSE141. Prerequisite for Computer Engineering majors only: EECS40. Same as CSE142.
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. Prerequisites: ICS 23/CSE23, and ICS 51 or EECS31/CSE31 with grades of C or better. Same as CSE104. Only one course from ICS 143/CSE104 and EECS111 may 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. Only one course from ICS 152 and CSE132/EECS112 may 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: EECS40. Same as EECS114.
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/CSE23 and ICS 51 or CSE31/EECS31 with grades of C or better; Mathematics 6B; Mathematics 6C or 3A; Mathematics 2B; satisfactory completion of the lower division writing requirement. Same as CSE161.
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 and 67; 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 and 67.
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 analysis, applications, and biological bases of neural network algorithms. Prerequisites: ICS 52 with a grade of C or better; Mathematics 2A-B and 67; Mathematics 6C or 3A.
174 Bioinformatics (4). Introduces fundamental problems in biology that lend themselves to computational approaches. The lectures present the necessary biological background to understand the importance of the problem and the data available for algorithmic analysis. Prerequisites: ICS 21, 22, and 23; ICS 171 with a grade of C or better.
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.
177 Information Retrieval (4). An introduction to information retrieval including indexing, retrieval, classifying, and clustering text and multimedia documents. Prerequisites: ICS 23 or Informatics 43; Mathematics 7 or 67.
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 6A; Mathematics 6B; and either Mathematics 6C or 3A.
180 Special Topics in Information and Computer Science (4). May be repeated for credit if title or topic varies. Prerequisites vary.
183 Computer Graphics (4). Introduction to the fundamental principles of 3D computer graphics including polygonal modeling, geometric transformations, visibility algorithms, illumination models, texturing, and rasterization. Use of an independently-learned 3D graphics API to implement these techniques. Prerequisite: ICS 52 with a grade of C or better. Formerly ICS 186A.
184 Introduction to Data Management (4) W. Introduction to the design of databases and the use of database management systems (DBMS) for applications. Topics include entity-relationship modeling for design, relational data model, relational algebra, relational design theory, and Structured Query Language (SQL) programming. Prerequisites: ICS 52 or Informatics 43, either with a grade of C or better (for ICS or Informatics majors); ICS 23 with a grade of C or better (for Computer Engineering majors). Same as EECS116.
185 Project in Database Management (4). Introduces students to advanced database technologies. Students gain experience in programming complex applications using database management systems. Topics include object-oriented and object-related technologies, XML, and Internet databases. Prerequisite: ICS 184.
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.
188 Projects in Advanced 3D Computer Graphics (4). Projects in advanced 3D graphics such as illumination, geometric modeling, visualization, and animation. Topics may include physically based and global illumination, solid modeling, curved surfaces, multiresolution modeling, image-based rendering, basic concepts of animation, and scientific visualization. Prerequisite: ICS 183 or equivalent; recommended: ICS 161, 164, 165. Formerly ICS 186B.
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)