Advice on CSE Graduate Studies Preparation

This document is intended to help students proactively prepare themselves for the UCSD CSE department’s fast-paced master’s degree in Computer Science or Computer Engineering. Before commencing the UCSD CSE MS Program, it is highly recommended that you ensure you possess the foundational knowledge and skill sets necessary for you to be successful in our graduate-level courses. Note that specific information about courses being offered each quarter, including prepartory work, is available on other web pages.

The competency recommendations will include high-level descriptions of expected knowledge, as well as references to online courses that can help you obtain that knowledge if needed. Since our undergraduate courses are highly impacted, there are very few opportunities for graduate students to enroll in undergraduate classes at UCSD. It is recommended that you acquire the necessary preparatory knowledge via online courses or from other external course offerings prior to enrolling in graduate courses.

These competency recommendations are broken down into two categories: a baseline competency that is common across all depth areas, and additional recommended background specific to individual depth areas (including links to the graduate course descriptions), which are listed below:

Minimum Baseline Competency Requirements (applicable to all depth areas):

Programming Language Competency

  1. Competency in both C++ and Java
  2. Online courses: 

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-096-introduction-to-c-january-iap-2011/  http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/

Data Structures and Algorithms (e.g. CSE 202)

  1. Use and implementation of data structures like (un)balanced trees, graphs, priority queues, stacks, and hash tables
  2. Memory management, pointers, and recursion
  3. Design and analysis of efficient algorithms with emphasis of nonnumerical algorithms such as sorting, searching, pattern matching, and graph and network algorithms
  4. Measuring complexity of algorithms (Big O and Omega notation), time and storage, NP-complete problems, solving recurrences
  5. Basic graph search (DFS and BFS) and Dijkstra’s algorithm for shortest paths
  6. Online courses:

 https://www.coursera.org/course/algo  

https://www.edx.org/course/introduction-computer-science-harvardx-cs50x

Artificial Intelligence (e.g. CSE 250A):

  1. Multi-Variable Calculus: Derivatives, integrals, vector functions, gradients and Hessians.

Online Course:http://ocw.mit.edu/courses/mathematics/18-02-multivariable-calculus-fall-2007/index.htm

    2. Linear Algebra: Vectors, matrices, dot-products and norms, eigenvalues and eigenvectors, singular value decomposition.

Online Course:http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/

 

Probability and Statistics:

Discrete and continuous distributions, independence, expectation, conditional expectation, mean, variance, distributions over Rn, covariance matrix

Online courses: (One of the following)

http://ocw.mit.edu/courses/mathematics/18-05-introduction-to-probability-and-statistics-spring-2014/index.htm

https://www.coursera.org/course/datan

https://www.khanacademy.org/math/probability

Bioinformatics:

Molecular Sequence Analysis and Biological Databases (e.g. CSE 280A)

  1. Analysis of nucleic acid and protein sequences, with an emphasis on the application of algorithms to biological problems
  2. Sequence alignments, database searching, comparative genomics, and phylogenetic and clustering analyses
  3. Pairwise alignment, multiple alignment, DNA sequencing, scoring functions, fast database search, comparative genomics, clustering, phylogenetic trees, gene finding/DNA statistics
  4. Relational databases, object-oriented databases, ontologies, data modeling and description, survey of current biological databases
  5. Online courses:

http://www.coursera.org/course/bioinformatics

http://www.algorithm.cs.sunysb.edu/computationalbiology

Computer Engineering:

Digital System Design and VLSI/CAD Techniques (e.g. CSE 241A,CSE 243A,CSE 244A)

  1. Design of Boolean logic and finite state machines, two-level/multi-level combinational logic design, combinational modules and modular networks, Mealy and Moore machines, analysis and synthesis of canonical forms, sequential modules
  2. Online courses: https://www.coursera.org/course/nand2tetris1   and  https://www.coursera.org/course/vlsicad

Principles of Computer Architecture (e.g. CSE 240A)

  1. Hardware architectures, computer system design, processor design principles, control/datapath design, memory systems
  2. Online courses:https://www.coursera.org/course/comparch

Embedded Systems (e.g. CSE 237A)

  1. Strong C programming experience, as well as possibly C++ or Java
  2. General background in processor architecture and memory management, interrupt handling, interprocess communication, and system interfacing basics
  3. Knowledge of sensors/actuators, mobile/wireless technology, and networking is a plus
  4. Online courses: https://www.coursera.org/course/comparch  and https://learn.saylor.org/course/cs401

 

Computer Systems:

Probability and Statistics

Distribution over the real line, independence, expectation, conditional expectation, mean, variance, hypothesis testing, learning classifiers, distributions over Rn, covariance matrix, binomial, Poisson distributions, Chernoff bound, entropy, compression, arithmetics coding, maximal likelihood estimation, and Bayesian estimation

Operating Systems (e.g. CSE 221)

  1. Basic concepts used to structure computer operating systems
  2. Batch processing, multiprogramming, input/output, pooling, interrupt handling, processes, descriptors, process synchronization, interprocess communication, memory management, virtual memory, caching, buffers, naming, files, interactive command interpreters, and processor scheduling
  3. Online courses: https://learn.saylor.org/course/cs401 (intro) and  https://www.udacity.com/course/ud189 (advanced)

Networks (e.g. CSE 222A)

  1. Concepts, principles, and practice of computer communication networks with examples from existing architectures, protocols, and standards
  2. Layering and the OSI model, switching, local/metropolitan/wide area networks, datagrams and virtual circuits, routing and congestion control, internetworking
  3. Online courses: https://www.coursera.org/course/comnetworks

Computer Security (e.g. CSE 227)

  1. Basic cryptography, security/threat analysis, access control, auditing, security models, distributed systems security, and theory behind common attack and defense techniques
  2. Formal models as well as the bits and bytes of security exploits
  3. Online courses: https://www.coursera.org/course/security

High-Performance Parallel Computing (e.g. CSE 260)

  1. Memory hierarchies: cache and virtual memory
  2. Shared memory address organization: cache coherence, false sharing
  3. Multithreading: fork-join parallelism, data races, synchronization, mutual exclusion
  4. Online courses:https://www.coursera.org/course/hetero

Database Systems:

Databases Principles and Applications (e.g. CSE 232)

  1. Basic concepts of databases, including data modeling, relational databases, query languages, optimization, dependencies, schema design, and concurrency control
  2. Exposure to one or several commercial database systems
  3. Advanced topics such as deductive and object-oriented databases
  4. Online courses/books:

Graphics and Vision:

  • Multivariable Calculus and Linear Algebra

Computer Graphics (e.g. CSE 272)

  1. Representation and manipulation of pictorial data, two-dimensional and three-dimensional transformations, curves, surfaces
  2. Projection, illumination and shading models, raster and vector graphic I/O devices, retained-mode and immediate-mode graphics software systems and applications
  3. Online courses: https://www.edx.org/course/foundations-computer-graphics-uc-berkeleyx-cs184-1x

Computer Vision (e.g. CSE 252A)

  1. Compute properties of the three-dimensional world from images and video, identify the 3D shape of a scene, determining how things are moving, and recognizing familiar people and objects
  2. Feature detection, image segmentation, motion estimation, object recognition, and 3D shape reconstruction through stereo, photometric stereo, and structure from motion
  3. Online courses: https://www.coursera.org/course/digital

Human-Computer Interaction:

Human-Computer Interaction Design (e.g. CSE 216 or COGS 230)

  1. Moderate computer science background a plus, and undergraduate majors other than computer science are also welcome
  2. No prior Human-Computer Interface knowledge required
  3. MS students should start the HCI depth area by taking CSE 170 or COGS 120, or having an equivalent course from another institution
  4. Online courses:https://www.coursera.org/course/hciucsd

Programming Languages, Compilers, and Software Engineering:

  • Principles and Paradigms of Programming Languages (e.g. CSE 230)

  1. Understanding of programming languages and paradigms, the components that comprise them, and the principles of language design, all through the analysis and comparison of a variety of languages (e.g., Java, C++, PROLOG, ML)
  2. Online courses:

https://www.coursera.org/course/proglang

https://www.udacity.com/course/cs212

Compilers (e.g. CSE 231)

  1. Basic undergraduate degree in Computer Science
  2. Prior knowledge of compilers, for example, lexical and syntactic analysis, symbol tables, syntax-directed translation, type checking, and code generation, can be helpful but is not required
  3. Prior knowledge of Computer Architecture can be helpful, but is not required
  4. Online courses:https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about

Software Engineering (e.g. CSE 210)

  1. Software development and engineering methods, including specification, design, implementation, testing, and process
  2. Understanding of team development, agile methods, and use of tools such as IDE's, version control, and test harnesses
  3. Online courses:http://ocw.mit.edu/courses/civil-and-environmental-engineering/1-124j-foundations-of-software-engineering-fall-2000/

Ubiquitous Computing (e.g. CSE 218)

  1. Understanding of emerging opportunities enabled by cheap sensors and networked computing devices
  2. Design of databases, transactions, use of trigger facilities and datablades, performance measuring, organization of index structures
  3. Team-based research projects including presentation of research methods, software engineering, teamwork, and project management

Theoretical Computer Science:

Theory and Complexity (e.g. CSE 200)

  1. Theory of computability, Turing machines, the halting problem
  2. Discrete mathematics
  3. Online courses:https://www.coursera.org/course/automata

Cryptography (e.g. CSE 207)

  1. Theory of computation (automata, Turing machines, computability, undecidability), NP completeness
  2. Probability theory (probability spaces, distributions, random variables, expectations)
  3. Online courses:

Intro to theory of computation: https://www.coursera.org/course/automata

Intro to probability and statistics: https://www.khanacademy.org/math/probability