• 1. Introduction to Computers and Computing

    Units: 4

    Lecture, three hours; laboratory, one hour. Not open for credit to students with credit for course 1S or 10A; may not be taken concurrently with course 1S or 10A. Fundamentals of computers and computing; editors, spreadsheets, file manager; machine organization and computer hardware; Internet; software applications. P/NP or letter grading.

  • 1S. Software Tools for Information Management

    Units: 1

    Lecture, one hour; laboratory, two hours. Preparation: some familiarity with computers. Not open for credit to students with credit for course 1; may not be taken concurrently with course 1. May be taken by students with credit for more advanced courses. Introduction to spreadsheets and databases in laboratory setting. P/NP grading.

  • 3. Introduction to Computing for Social Sciences and Humanities

    Units: 4

    Lecture, three hours; discussion, two hours. No prior programming knowledge required. Not open for credit to students pursuing specializations in Computing or to students with credit for course 20A. Basic principles of object-oriented programming and concepts, with applications from social sciences and humanities. Overview of Java programming language, programming with objects, control structures and functions, classes and object-oriented design, event-driven programming, application to multiagent models. P/NP or letter grading.

  • 10A. Introduction to Programming

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. No prior programming experience assumed. Basic principles of programming, using C++; algorithmic, procedural problem solving; program design and development; basic data types, control structures and functions; functional arrays and pointers; introduction to classes for programmer-defined data types. P/NP or letter grading.

  • 10B. Intermediate Programming

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10A. Abstract data types and their implementation using C++ class mechanism; dynamic data structures, including linked lists, stacks, queues, trees, and hash tables; applications; object-oriented programming and software reuse; recursion; algorithms for sorting and searching. P/NP or letter grading.

  • 10C. Advanced Programming

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10B. More advanced algorithms and data structuring techniques; additional emphasis on algorithmic efficiency; advanced features of C++, such as inheritance and virtual functions; graph algorithms. P/NP or letter grading.

  • 15. Introduction to Lisp and Symbolic Computation

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10A. Introduction to symbolic computation using Lisp programming language. Basics: list structures, recursion, function abstraction. Advanced topics: knowledge representation, higher-order functions, problem-solving algorithms and heuristics. P/NP or letter grading.

  • 16. Python with Applications

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10A, one additional programming course. Python programming and programming with Python packages. General Python programming constructs; standard data structures, flow control, exception handling, and input and output. Object-oriented programming with Python. Application programming with commonly used Python modules such as PyQt or tkinter, NumPy, SciPy, and NLTK. P/NP or letter grading.

  • 19. Fiat Lux Freshman Seminars

    Units: 1

    Seminar, one hour. Discussion of and critical thinking about topics of current intellectual importance, taught by faculty members in their areas of expertise and illuminating many paths of discovery at UCLA. P/NP grading.

  • 20A. Principles of Java Language with Applications

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10A. Not open for credit to students with credit for course 3. Introduction to Java computer language. Class and interface hierarchies; graphics components and graphical user interfaces; streams; multithreading; event and exception handling. Issues in class design and design of interactive Web pages. P/NP or letter grading.

  • 20B. Advanced Aspects of Java Language with Applications

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 20A. Further aspects of use of classes, graphics components, exception handling, multithreading, and multimedia. Additional topics may include networking, servlets, database connectivity, and JavaBeans. P/NP or letter grading.

  • 20C. Seminar: Enterprise Computing with Java

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, five hours. Enforced requisite: course 20B. Overview of Enterprise Java APIs: remote method invocation, database access with SQL, servlets, and JSP. Issues in implementation of server-side Java applications. Use of Java in conjunction with XML. Individual or group projects and presentations. P/NP or letter grading.

  • 30. Machine Organization and Assembly Language Programming

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10B. Description of machine organization and operation. Representation of information, instruction sets and formats, addressing modes, memory organization and management, input/output (I/O) processing and interrupts. P/NP or letter grading.

  • 40A. Introduction to Programming for Internet

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10A. Recommended: course 10B. Introduction to core technologies of Internet, with focus on client-side Web programming. Fundamental protocols, static Web pages, Perl language, Common Gateway Interface, XML. P/NP or letter grading.

  • 40B. Advanced Topics in Programming for Internet

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 40A. Study of advanced topics in Web programming, with focus on server-side technologies. P/NP or letter grading.

  • 60. Data Structures and Algorithms

    Units: 4

    Lecture, three hours; discussion, one hour; laboratory, five hours. Enforced requisites: course 10B, Mathematics 31A, 31B, 61. Review of basic data structures: arrays, stacks, queues, lists, trees. Advanced data structures: priority queues, heaps, balanced trees. Sorting, searching techniques. Corresponding algorithms. P/NP or letter grading.

  • 89. Honors Seminars

    Units: 1

    Seminar, three hours. Limited to 20 students. Designed as adjunct to lower division lecture course. Exploration of topics in greater depth through supplemental readings, papers, or other activities and led by lecture course instructor. May be applied toward honors credit for eligible students. Honors content noted on transcript. P/NP or letter grading.

  • 89HC. Honors Contracts

    Units: 1

    Tutorial, three hours. Limited to students in College Honors Program. Designed as adjunct to lower division lecture course. Individual study with lecture course instructor to explore topics in greater depth through supplemental readings, papers, or other activities. May be repeated for maximum of 4 units. Individual honors contract required. Honors content noted on transcript. Letter grading.

  • 97. Special Topics in Programming

    Units: 1 to 4

    Lecture, one to three hours; discussion, zero to one hour. Enforced requisite: course 10A. Variable topics in programming not covered in regular program in computing courses. May be repeated for credit with topic change. P/NP or letter grading.

  • 99. Student Research Program

    Units: 1 to 2

    Tutorial (supervised research or other scholarly work), three hours per week per unit. Entry-level research for lower division students under guidance of faculty mentor. Students must be in good academic standing and enrolled in minimum of 12 units (excluding this course). Individual contract required; consult Undergraduate Research Center. May be repeated. P/NP grading.

  • 110. Parallel and Distributed Computing

    Units: 5

    Lecture, three hours; discussion, two hours; laboratory, eight hours. Requisite: course 10B or equivalent familiarity with programming in C or C++ language. Introduction to programming of parallel computers. Shared and distributed memory parallel architectures; currently available parallel machines; parallel algorithms and program development; estimation of algorithmic performance; distributed computing; selected advanced topics. P/NP or letter grading.

  • 130. Cryptography

    Units: 4

    Lecture, three hours; discussion, one hour; laboratory, three hours. Requisites: course 10B, Mathematics 115A. Design and analysis of cryptosystems for confidentiality and authentication. Classical cryptosystems and their security, modern private-key cryptosystems and applications, public-key cryptography and applications; generating prime numbers, factoring integers, discrete logarithms, digital signatures, perfect secrecy. P/NP or letter grading.

  • 187. Advanced Variable Topics in Programming

    Units: 4

    Lecture, three hours; discussion, one hour. Variable topics in programming and mathematics of programming not covered in regular program in computing courses. May be repeated for credit with topic change. P/NP or letter grading.

  • 189. Advanced Honors Seminars

    Units: 1

    Seminar, three hours. Limited to 20 students. Designed as adjunct to undergraduate lecture course. Exploration of topics in greater depth through supplemental readings, papers, or other activities and led by lecture course instructor. May be applied toward honors credit for eligible students. Honors content noted on transcript. P/NP or letter grading.

  • 189HC. Honors Contracts

    Units: 1

    Tutorial, three hours. Limited to students in College Honors Program. Designed as adjunct to upper division lecture course. Individual study with lecture course instructor to explore topics in greater depth through supplemental readings, papers, or other activities. May be repeated for maximum of 4 units. Individual honors contract required. Honors content noted on transcript. Letter grading.

  • 285C. Seminar: Computational Algebra

    Units: 4

    Seminar, three hours. Considered equivalent to Mathematics 285A through 285L for purposes of degree requirements. Topics in various computational fields by means of lectures and informal conferences with staff members. S/U or letter grading.

  • 285D. Seminar: Logic and Theory of Computation

    Units: 4

    Seminar, three hours. Considered equivalent to Mathematics 285A through 285L for purposes of degree requirements. Topics in various computational fields by means of lectures and informal conferences with staff members. S/U or letter grading.

  • 285J. Seminar: Scientific Computation

    Units: 4

    Seminar, three hours. Considered equivalent to Mathematics 285A through 285L for purposes of degree requirements. Topics in various computational fields by means of lectures and informal conferences with staff members. S/U or letter grading.

  • 285K. Seminar: Randomness and Computation

    Units: 4

    Seminar, three hours. Considered equivalent to Mathematics 285A tnrough 285L for purposes of degree requirements. Topics in various computational fields by means of lectures and informal conferences with staff members. S/U or letter grading.

  • 285L. Seminar: Computational Statistics

    Units: 4

    Seminar, three hours. Considered equivalent to Mathematics 285A through 285L for purposes of degree requirements. Topics in various computational fields by means of lectures and informal conferences with staff members. S/U or letter grading.

  • 296. Participating Seminar: Logic and Theory of Computaion

    Units: 1 to 4

    Seminar, to be arranged. Seminar and discussion by staff and students. S/U grading.

  • 375. Teaching Apprentice Practicum

    Units: 1 to 4

    Seminar, to be arranged. Preparation: apprentice personnel employment as teaching assistant, associate, or fellow. Teaching apprenticeship under active guidance and supervision of regular faculty member responsible for curriculum and instruction at UCLA. May be repeated for credit. S/U grading.