# Official Course Prereqs for OMSCS

The following information was taken from the Course Pages of the OMSCS Website on 2018/03/05. The courses are organized in the rough order I’d prefer to complete them. That order is discussed in my course planning post.

### ML4T - CS 7646 Machine Learning for Trading

- Working knowledge of basic statistics
- Probability distributions (normal and uniform)
- Differences between mean, median, and mode
- Difference between geometric and arithmetic mean

- General, strong programming skills
- Complete this assessment

### ML - CS 7641 Machine Learning

- Introductory course in artificial intelligence
- Stats and information theory
- Eigenvectors, eigenvalues
- Matrix decomposition using SVD (Singular Value Decomposition)
- Bayes Rule
- Calculate the expectation of a random variable
- Calculate covariance/correlation between two random variables
- Search algorithms: breadth first search, depth first search, and A*
- Explain the properties of the above search algorithms using Asymptotic analysis (big O notation)
- Working knowledge of Python, R, Matlab, or JAVA

- Reading List
- Linear Algebra
- “Numerical Linear Algebra” by Trefethen (Section 1 Fundamental to Chapter 5)
- “Intro to Linear Algebra”, Fourth Edition by Strang

- “All of Statistics” by Wasserman (Section 1, Probability)
- “Artificial Intelligence: A Modern Approach” by Russel and Norvig (Optional)

- Linear Algebra

### RL - CS 7642 Reinforcement Learning

- Successful completion of CS 7641: Machine Learning
- Familiarity with object-oriented programming, preferably in Java

### KBAI - CSE 7637 Knowledge-Based AI, Cognitive Systems

- Good course on computer programming such as CS 1332 or Udacity’s CS 101
- Introductory course on AI, such as Georgia Tech’s CS 3600 or CS 6601
- Data structures and object-oriented programming, such as inheritance and polymorphism
- Algorithms, such as sorting and searching algorithms
- Confidence with either Java or Python

### AI - CS 6601 Artificial Intelligence

- College-level mathematical concepts (calculus, analytic geometry, linear algebra, and probability)
- College-level computer science concepts (algorithms, O notation, data structures)
- Working knowledge of Python and computer programming
- IPython notebooks
- Classes involving intensive programming
- Algorithms and data structures courses

### IOS - CS 8803-O02 Intro to Operating Systems

- Undergraduate level course on basic hardware and software aspects of computer systems organization
- Computer architecture topics, computer system basics
- Conceptual understanding of key OS mechanisms and abstractions:
- process, thread, address space, page table, device driver, scheduling, virtual memory management, file system

- Prior programming experience with C
- Linux command line basics
- Complete this readiness survey

### HPCA - CS 6290 High-Performance Computer Architecture

- Undergraduate computer architecture course that covers basic computer organization
- Working knowledge of topics such as instruction sets, pipelining, etc
- Computer organization course
- Familiarity with a RISC instruction set
- Level of comfort reading and writing small assembler programs
- Familiarity with basic computer architecture concepts, such as pipelines and caches
- Familiarity with C/C++

### IHPC - CSE 6220 Intro to High-Performance Computing

- A “second course” in algorithms and data structures (Georgia Tech’s CS 3510-B or Udacity’s Intro to Algorithms)
- Programming experience in a “low- level” “high-level” language like C or C++
- Command line interface experience

### GA - CS 8803-GA Graduate Algorithms

- Undergraduate course on the design and analysis of algorithms
- Familiar with basic graph algorithms, including DFS, BFS, and Dijkstra’s shortest path algorithm, and basic dynamic programming and divide and conquer algorithms (including solving recurrences)
- Undergraduate course in discrete mathematics
- Comfort analyzing asymptotic running time of algorithms

### BD4H - CSE 6250 Big Data for Health

- Basic machine learning and data mining concepts like classification and clustering (such as you would find in the OMS Machine Learning class)
- Proficiency programming in Python, Java, C++, and/or Scala
- Proficiency dealing with data in SQL and NoSQL

### CV - CS 6476 Computer Vision

- Linear algebra, vector calculus, probability
- How a Gaussian distribution looks, and its parametric form
- Compute the derivative of a 2D array of numbers in the x-direction, and find the magnitude of the “gradient”
- Should be able to draw a line on an image without libraries
- Ability to compute a color image into a monochrome version

**Update 2018/08/05**: information for DVA, below, is taken from Dr. Polo Chau’s Spring 2018 class website.

### DVA - CSE 6242 Data and Visual Analytics

- Students are expected to complete significant programming assignments (homework, project) that may involve higher-level languages or scripting (e.g., Java, R, Matlab, Python, C++, etc.).
- Some assignments may involve web programming and D3 (e.g., Javascript, CSS).
- You are expected to quickly learn many new things. For example, an assignment on Hadoop programming may require you to learn some basic Java and Scala quickly, which should not be too challenging if you already know another high-level language like Python or C++. Please make sure you are comfortable with this.
- Please take a look at the assignments (homework and project) of the previous offerings of this course, which will give you some idea about the difficulty level of the assignments.
- Basic linear algebra, probability knowledge is expected.