Mathematics

Program in Computing Lower-Division Courses

1. Introduction to Computers and Computing. (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. (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. (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. (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. (5) Lecture, three hours; discussion, two hours; laboratory, eight hours. Requisite: course 10A or Computer Science 31. 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. (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. (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. (5) Lecture, three hours; discussion, two hours; laboratory, eight hours. Requisites: course 10A, and 20A, 40A, or Computer Science 31, or Computer Science 31, and 32 or course 10B, each with C− or better. 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. (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. (5) Lecture, three hours; discussion, two hours; laboratory, eight hours. Requisite: course 10A or Computer Science 31. 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. (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. (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. (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. (5) Lecture, three hours; discussion, two hours; laboratory, eight hours. Requisite: course 10A or Computer Science 31. 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. (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. (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. (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. (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. (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. (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.