The UCSB Computer Science Department is pleased to announce exciting new changes to the lower division curriculum for undergraduate students entering UCSB Fall 2009!
- Enhanced focus on problem solving and computational thinking
- Exciting and engaging new pedagogical approaches
- Restructuring across topics we currently teach
- To reduce redundancy and to enable increased depth of understanding by students of the fundamentals of computer science, and of the importance of the topics to computer science and to the world around us
Requirements for Different Degree Programs
The lower division Computer Science course requirements, by degree program are as follows.
- Computer Science (BS Program): CS16*, CS24, CS32, CS40, CS48, CS56, CS64
- Computer Science (BA Program): CS16*, CS24, CS32, CS40
- Computer Engineering: CS16*, CS24, CS32, CS40
- Electrical Engineering: CS16, CS24 (CS16 is required starting the 2010/11 academic year,
and recommended and strongly encouraged in 2009/10)
- Other departments: For students without any programming experience, we recommend CS8 as an introduction to Computer Science; for students with some programming experience, we recommend CS16
- * For students with little to no programming experience, we recommend taking CS8 prior to CS16.
The lower division courses (first two years of study), with prerequisites, are as follows. Each class
is 4 units.
The upper division courses are unchanged.
8. Introduction to Computer Science
Not open for credit to students who have completed Computer Science 5, Computer Science 10, Computer Science 16,
or Engineering 3.
Introduction to computer program development for students with little to no programming experience. Basic programming concepts, variables and expressions, data and control structures, algorithms, debugging, program design, and documentation.
16. Problem Solving with Computers I
Students with no experience with computer programming are encouraged to take Computer Science 5 or 8 before Computer Science 16. Not open for credit to students who have completed Computer Science 10.
Prerequisite: Math 3A.
Fundamental building blocks for solving problems using computers. Topics include basic computer organization and programming constructs: memory CPU, binary arithmetic, variables, expressions, statements, conditionals, iteration, functions, parameters, recursion, primitive and composite data types, and basic operating system and debugging tools.
24. Problem Solving with Computers II
Not open for credit to students who have completed Computer Science 20
Prerequisite: Computer Science 16 or Engineering 3; and Mathematics 3B.
Intermediate building blocks for solving problems using computers. Topics include data structures, algorithms for manipulating these data structures runtime analyses, and object basics. Data structures introduced include objects, stacks, queues, lists, trees, and sets.
32. Object-Oriented Design and Implementation
Prerequisites: Computer Science 24.
Advanced topics in object-oriented computing. Topics include encapsulation, data hiding, inheritance, polymorphism, compilation, linking and loading, memory management, and debugging; recent advances in design and development tools, practices, libraries, and operating system support.
40. Foundations in Computer Science
Prerequisites: Computer Science 10, 12, or 16; and Mathematics 3C.
Introduction to the theoretical underpinnings of computer science. Topics include propositional and predicate logic, sets, functions and relations, counting, mathematical induction, and recurrence relations.
48. Computer Science Project
Prerequisites: Computer Science 32
Team-based project development. Topics include software engineering and professional development practices, interface design, advanced library support; techniques for team-oriented design and development, testing and test-driven development, and software reliability and robustness. Students present and demonstrate their final projects.
56. Advanced Applications Programming
Students are encouraged to complete Computer Science 32 prior to enrolling in Computer Science 56.
Prerequisites: Computer Science 24.
Advanced application programming using a high-level, virtual-machine-based language. Topics include generic programming, exception handling, programming language implementation; automatic memory management, and application development, management, and maintenance tools; event handling, concurrency and threading, and advanced library use.
64. Computer Organization and Logic Design
Not open for credit to students who have completed ECE 15 or ECE 15B or Computer Science 30.
Prerequisite: Engineering 3 or Computer Science 8 or Computer Science 16; and Mathematics 3C.
Assembly language programming and advanced computer organization; Digital logic design topics including gates, combinational circuits, flip-flops, and the design and analysis of sequential circuits.