Previous Next Up Catalog Contents

Program in Computing Courses

Program in Computing 1 is designed for students who wish a broad, general introduction to the topic of computers and computation. It is strongly recommended for those who wish to take course 3 or 10A, but who have no prior experience in computing.

Students who would like one course in programming should take either course 3 (uses FORTRAN) or 10A (uses C++), depending on the advice of their major department.

The sequence (courses 10A, 10B, 10C, 15, 30, 60) provides an extensive education in basic computer science. It is intended for Letters and Science majors who are completing a specialization in computing and for those planning to take upper division coursework in computer science. These students should take all or part of the sequence, depending on the advice of their major department.

Lower Division Courses

1. Introduction to Computers and Computing. Lecture, three hours; laboratory, one hour; computer assignments, five hours. Fundamentals of computers and computing; editors, spreadsheets, file manager; machine organization and computer hardware; Internet; software applications. P/NP or letter grading.

3. Introductory FORTRAN Programming (5 units). Lecture, three hours; discussion, two hours; laboratory, eight hours. Students with credit for course 10A receive only two units of credit for this course. Basic principles of programming, using FORTRAN as example language. Terminal course intended for physical sciences and engineering majors who need to use the extensive library of existing FORTRAN programs. Students who wish to take more advanced program in computing courses should take course 10A rather than this course.

10A. Introduction to Programming (5 units). Lecture, three hours; discussion, two hours; laboratory, eight hours. Recommended requisite for students with no prior computing experience: course 1. Students with credit for course 3 receive only two units of credit for this course. 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 units). Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10A. Abstract data types and their implementation using the 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.

10C. Advanced Programming (5 units). 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.

15. Introduction to LISP and Symbolic Computation (5 units). 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.

20. Programming for Internet in Java Language (5 units). Lecture, three hours; discussion, two hours; laboratory, eight hours. Enforced requisite: course 10B. 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.

30. Machine Organization and Assembly Language Programming (5 units). 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, I/O processing and interrupts.

60. Data Structures and Algorithms. 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.

97. Special Topics in Programming. Lecture, three hours; discussion, 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.

Upper Division Courses

110. Introduction to Concurrent Computation (5 units). Lecture, three hours; discussion, two hours; laboratory, eight hours. Prerequisite: course 10C or equivalent familiarity with programming in C or C++ language. Introduction to programming of concurrent (parallel) computers. Shared and distributed memory parallel architectures; currently available concurrent machines; parallel algorithms and development of concurrent programs; estimation of algorithmic performance; selected advanced topics.

197. Advanced Topics in Programming. Lecture, three hours; discussion, two hours. Prerequisite: consent of instructor. Variable topics in programming and the mathematics of programming not covered in regular program in computing courses. May be repeated for credit with topic change. P/NP or letter grading.

Graduate Courses

285C-285L. Seminars. Considered equivalent to Mathematics 285A-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:

285C. Computational Algebra.

285D. Logic and Theory of Computation.

285J. Scientific Computation.

285K. Randomness and Computation.

285L. Computational Statistics.

296. Participating Seminar: Logic and Theory of Computation (1 to 4 units). Seminar and discussion by staff and students. S/U grading.

375. Teaching Apprentice Practicum (1 to 4 units). Preparation: apprentice personnel employment as a teaching assistant, associate, or fellow. Teaching apprenticeship under active guidance and supervision of a regular faculty member responsible for curriculum and instruction at the University. May be repeated for credit. S/U grading.


Previous Next Up Catalog Contents