What Have I Taken?

UC Davis Courses

A chronological list of completed courses. Hover to see the UC Davis Course Catalog description.





Programming Courses

Media Computation
  • Java
  • Programming fundamentals
  • Media representation
  • Data transmission
Introduction to key computational ideas necessary to understand and produce digital media. Fundamentals of programming are covered as well as analysis of how media are represented and transmitted in digital form.
Programming and Problem Solving
  • C
  • Algorithm design
  • Debugging
  • Coding style
  • UNIX tools
Introduction to computers and computer programming, algorithm design, and debugging. Elements of good programming style. Programming in the C language. Use of basic UNIX tools.
Software and Object-Oriented Programming
  • C++
  • Program design
  • Efficiency
  • OS tools
  • Data structures
Elements of program design, style, documentation, efficiency. Methods for debugging and verification. Operating system tools. Principles and use of object-oriented programming in C++. Basic data structures and their use.
Machine-Dependent Programming
  • Assembly
  • Hardware architecture
  • Caches
  • I/O devices
  • Hardware interrupts
  • OS calls
Comparative study of different hardware architectures via programming in the assembly languages of various machines. Role of system software in producing an abstract machine. Introduction to I/O devices and programming.
Data Structures and Programming
  • C++
  • Storage
  • Sorting
  • Searching
  • Real applications
Design and analysis of data structures for a variety of applications. Trees, heaps, searching, sorting, hashing, graphs. Extensive programming.
Algorithm Design A
  • C++
  • Time and space complexity
  • Analysis methods
  • Design techniques
  • Approximation
  • P, NP, NP-complete, and NP-hard
Complexity of algorithms, bounds on complexity, analysis methods. Searching, sorting, pattern matching, graph algorithms. Algorithm design techniques: divide-conquer, greedy, dynamic programming. Approximation methods. NP-complete problems.
Probability and Statistical Models for CS
  • R
  • Distributions
  • Estimation and modeling
  • Real Applications
Univariate and multivariate distributions. Estimation and model building. Markov/Hidden Markov models. Applications to data mining, networks, security, software engineering and bioinformatics.
Computer Architecture
  • C++
  • Circuits
  • I/O interfacing
  • Memory management
  • Hardware interupts
  • Caches
Introduction to digital design. Interfacing of devices for I/O, memory and memory management. Input/output programming, via wait loops, hardware interrupts and calls to operating system services. Hardware support for operating systems software.
Operating Systems
  • C
  • Processes
  • Virtual Memory
  • Loading and linking
  • Subsystems
  • Utility programs
  • Study of real OS
Basic concepts of operating systems and system programming. Processes and interprocess communication/synchronization; virtual memory, program loading and linking; file and I/O subsystems; utility programs. Study of a real operating system.
Programming Languages
  • C++, Java, Lisp, Prolog
  • Syntactic definitions
  • Semantic definitions
  • Language features
  • Comparative analysis of different programming paradigms
  • Nonimperative languages
Syntactic definition of programming languages. Intro to programming language features including variables, data types, data abstraction, object-orientedness, scoping, parameter disciplines, exception handling. Nonimperative programming languages. Comparative study of several high-level programming languages.
Computer Vision
  • MATLAB
  • Seam carving
  • Feature detection
  • Grouping and segmentation
  • Recognition
Computer vision is the study of enabling machines to “see” the visual world (e.g., understand images and videos). Explores several fundamental topics in the area, including feature detection, grouping and segmentation, and recognition.
Computer Networks
  • C++
  • Protocols
  • OSI model
  • LAN and wireless networks
  • Data transmission
  • Medium access control
  • Network performance
Overview of computer networks, TCP/IP protocol suite, computer network applications and protocols, transport-layer protocols, network architectures, Internet Protocol(IP), routing, link-layer protocols, LANs and wireless networks, medium access control, physical aspects of data transmission, and network-performance analysis.
Algorithm Design B
  • C++
  • NP-completeness
  • NP-hard problems
  • Randomization
  • Approximation
  • Dynamic programming
  • Branch and bound
  • Theoretical analysis
Theory and practice of hard problems, and problems with complex algorithm solutions. NP-completeness, approximation and randomized algorithms, dynamic programming, and branch and bound. Theoretical analysis, implementation and practical evaluations. Examples from parallel, string, graph, and geometric algorithms.
Database Systems
  • SQL
  • E/R model
  • Relational algebra
  • Query processing
Database modeling and design (E/R model, relational model), relational algebra, query languages (SQL), file and index structures, query processing, transaction management.
Computer Graphics
  • C++
  • 2D/3D operations
  • Geometric transformations
  • Camera models
  • OpenGL graphics pipeline
  • Standard graphics APIs
Principles of computer graphics, with a focus on interactive systems. Current graphics hardware, elementary operations in two and three dimensional space, geometric transformations, camera models and interaction, graphics system design, standard graphics APIs, individual projects.
Computational Linguistics
  • Prolog
  • Language modeling
  • Human cognition
  • Computer representation of languages
Understanding the nature of language through computer modeling of linguistic abilities. Relationships between human cognition and computer representations of cognitive processing.
Software Engineering
  • Java
  • Design patterns
  • Architectural styles
  • Software methodologies
Requirements, specification, design, implementation, testing, and verification of large software systems. Study and use of software engineering methodologies. Team programming.

Related Courses

Calculus A (engineering series)
  • Functions, and Limits
  • Slope and derviative
  • L'Hopital's rule
  • Real applications
Functions, limits, continuity. Slope and derivative. Differentiation of algebraic and transcendental functions. Applications to motion, natural growth, graphing, extrema of a function. Differentials. L'Hopital's rule.
Calculus B (engineering series)
  • Fundamental theorem of calculus
  • Integration
  • Real applications
Definition of definite integral, fundamental theorem of calculus, techniques of integration. Application to area, volume, arc length, average of a function, improper integral, surface of revolution.
Calculus C (engineering series)
  • Sequences, and series
  • Taylor expansions
  • Vectors
  • Partial and total derivitives
  • Real applications
Sequences, series, tests for convergence, Taylor expansions. Vector algebra, vector calculus, scalar and vector fields. Partial derivatives, total differentials. Applications to maximum and minimum problems in two or more variables. Applications to physical systems.
Discrete Math for Comp Sci
  • Proof by induction
  • Propositional and first-order logic
  • Set theory
  • Recursion
  • Big-O and big-θ notation
  • Graph theory
Discrete mathematics of particular utility to computer science. Proofs by induction. Propositional and first-order logic. Sets, functions, and relations. Big-O and related notations. Recursion and solutions of recurrence relations. Combinatorics. Probability on finite probability spaces. Graph theory.
Linear Algebra
  • Matrices and transformations
  • Eigenvalues and vectors
  • Spaces
Matrices and linear transformations, determinants, eigenvalues, eigenvectors, diagonalization, factorization.
Theory Computation
  • Formal languages
  • Computability and complexity
  • Reducibility
Fundamental ideas in the theory of computation, including formal languages, computability and complexity. Reducibility among computational problems.
Probability Theory A (Probability, Single/Joint Distributions)
  • Random variables
  • Standard distributions
  • Moments and functions
  • Law of large numbers
  • Central limit theorem
Fundamental concepts of probability theory, discrete and continuous random variables, standard distributions, moments and moment-generating functions, law of large numbers and the central limit theorem.
Ethics in an Age of Technology
  • Foundations of ethics
  • Pros and cons of technology
  • Technology and human values
  • Social context of technology
Foundations of ethics. Views of technology. Technology and human values. Costs and benefits of technology. Character of technological change. Social context of work in computer science and engineering.
Minds, Brains, and Computers
  • Minds vs computer processes
  • Machine intelligence
  • Consciousness
  • Free will
Computational theories of the nature of the mind. The mind as a computer process. The possibility of machine intelligence, consciousness, and mentality.