Freshman | Sophomore | Junior | Senior |
---|---|---|---|

CPSC 201a | CPSC 202a | Two electives | CPSC 490a |

CPSC 323a | |||

CPSC 223b | CPSC 365b | Two electives | One elective |

One elective | |||

and | Sophomore | Junior | Senior |

CPSC 201a | CPSC 323a | CPSC 490a | |

CPSC 202a | One elective | Two electives | |

CPSC 223b | CPSC 365b | Two electives | |

One elective |

CPSC 201a | Introduction to Computer Science | MWF 10.30-11.20 | Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problem-solving methods. |
---|---|---|---|

CPSC 202a | Mathematical Tools for Computer Science | TTh 1.00-2.15 | Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination. |

CPSC 223b | Data Structures and Programming Techniques | TTh 1.00-2.15 | Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs. |

CPSC 323a | Introduction to Systems Programming and Computer Organization | MW 1.00-2.15 | Machine architecture and computer organization, systems programming in a high-level language, assembly language, issues in operating systems, software engineering, prototyping in nonprogramming languages. After CPSC 223b. |

CPSC 365b | Design and Analysis of Algorithms | TTh 2.30-3.45 | Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science. After CPSC 202a and 223b. |

Options | |||

CPSC 421a | Compilers and Interpreters | MW 1.00-2.15 | Compiler organization and implementation: lexical analysis, formal syntax specification, parsing techniques, execution environment, storage management, code generation and optimization, procedure linkage and address binding. The effect of language-design decisions on compiler construction. After CPSC 323a. |

CPSC 422b | Operating Systems | MW 1.00-2.15 | The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking. After CPSC 323a. |

CPSC 426a | Building Decentralized Systems | MW 2.30-3.45 | Challenges and techniques for building decentralized computing systems, in which many networked computers need to cooperate reliably despite failures and without assuming centralized management. Topics include decentralized storage systems, mobile and remote execution, hosting untrusted code, fault tolerance, naming, capabilities, information flow control, distributed shared memory, distributed hash tables, content distribution, and practical uses of cryptography. After CPSC 323a. |

CPSC 427a | Object-Oriented Programming | TTh 1.00-2.15 | Object-oriented programming as a means to efficient, reliable, modular, reusable code. Use of classes, derivation, templates, name-hiding, exceptions, polymorphic functions, and other features of C++. After CPSC 223b. |

CPSC 428b | Language-Based Security | TTh 2.30-3.45 | Basic design and implementation of language-based approaches for increasing the security and reliability of systems software. Topics include proof-carrying code, certifying compilation, typed assembly languages, runtime checking and monitoring, high-confidence embedded systems and drivers, and language support for verification of safety and liveness properties. After CPSC 202a, 323a, and MATH 222a or b, or equivalents. |

CPSC 431a | Computer Music: Algorithmic and Heuristic Composition | MW 2.30-3.45 | Study of the theoretical and practical fundamentals of computer-generated music, with a focus on high-level representations of music, algorithmic and heuristic composition, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a high-level programming language. Ability to read music is assumed. After CPSC 202a and 223b. |

CPSC 434b | Mobile Computing and Wireless Networking | MW 2.30-3.45 | Introduction to the principles of mobile computing and its enabling technologies. Topics include wireless systems; information management; location-independent and location-dependent computing models; disconnected and weakly-connected operation models; human-computer interactions; mobile applications and services; security; power management; and sensor networks. After CPSC 202a and 323a. |

CPSC 437b | Introduction to Databases | TTh 1.00-2.15 | Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Object-oriented databases. Database data structures: files, B-trees, hash indexes. After CPSC 202a and 223b. |

CPSC 440b | Numerical Computation | TTh 2.30-3.45 | Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization. After CPSC 112a or b or an equivalent introductory programming course; MATH 120a or b; and MATH 222a or b or 225a or b or CPSC 202a. |

CPSC 445a | Introduction to Data Mining | MW 1.00-2.15 | A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data. After CPSC 202a, 223b, and MATH 222a or b, or equivalents. |

CPSC 462a | Graphs and Networks | TTh 2.30-3.45 | A mathematical examination of graphs and their applications in the sciences. Families of graphs include social networks, small-world graphs, Internet graphs, planar graphs, well-shaped meshes, power-law graphs, and classic random graphs. Phenomena include connectivity, clustering, communication, ranking, and iterative processes. Prerequisites: linear algebra and discrete mathematics; a course in probability is recommended. |

CPSC 463b | Machine Learning | MW 2.30-3.45 | Paradigms and algorithms for learning classification rules and more complex behaviors from examples and other kinds of data. Topics may include version spaces, decision trees, artificial neural networks, Bayesian networks, instance-based learning, genetic algorithms, reinforcement learning, inductive logic programming, the MDL principle, the PAC model, VC dimension, sample bounds, boosting, support vector machines, queries, grammatical inference, and transductive and inductive inference. After CPSC 202a and 223b, or with permission of instructor. CPSC 365b is recommended. |

CPSC 468a | Computational Complexity | TTh 1.00-2.15 | Introduction to the theory of computational complexity. Basic complexity classes, including polynomial time, nondeterministic polynomial time, probabilistic polynomial time, polynomial space, logarithmic space, and nondeterministic logarithmic space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation. After CPSC 365b or with permission of instructor. |

CPSC 469b | Randomized Algorithms | TTh 1.00-2.15 | A study of randomized algorithms from several areas: graph algorithms, algorithms in algebra, approximate counting, probabilistically checkable proofs, and matrix algorithms. Topics include an introduction to tools from probability theory, including some inequalities such as Chernoff bounds. After CPSC 365b; a solid background in probability is desirable. |

CPSC 470a | Artificial Intelligence | MWF 10.30-11.20 | Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning. After CPSC 201a or b and 202a. |

CPSC 473b | Intelligent Robotics | MWF 10.30-11.20 | Introduction to the construction of intelligent, autonomous systems. Sensory-motor coordination and task-based perception. Implementation techniques for behavior selection and arbitration, including behavior-based design, evolutionary design, dynamical systems, and hybrid deliberative-reactive systems. Situated learning and adaptive behavior. After CPSC 202a; after or concurrently with CPSC 223b. |

CPSC 475b | Computational Vision and Biological Perception | MW 1.00-2.15 | An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students. After MATH 120a or b and CPSC 112a or b, or with permission of instructor. |

CPSC 479a | Advanced Topics in Computer Graphics | TTh 2.30-3.45 | An in-depth study of advanced algorithms and systems for rendering, modeling, and animation in computer graphics. Topics vary and may include reflectance modeling, global illumination, subdivision surfaces, NURBS, physically-based fluids systems, and character animation. After CPSC 202a and 223b. |