My Courses at UCI
(6) W, S. 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)

(4) F, S. 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. Same as ICS 23E.
Only one course from ICS 23, 23E, and H23 may be taken for credit. (V)

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

(6) F, W. 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.

(4) F, S. 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.

(4) F, 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 51 with a
grade of C or better; ICS 121 and 141; Mathematics 2A-B-C.

(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 (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.

(4) F, 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.

(4) F, W, S. 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.

(4) F. 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.

(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 with grades of C or better;
Mathematics 6A or ICS 6A; Mathematics 6B.

(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 with grades of C or better; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A.

(4) S. 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.

(4) F, W. 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 23E.

(4) F, W, S. 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.



You are visitor number
of this page
