Online Master of Science in Computer Science (OMSCS)
Georgia Institute of Technology via Independent
-
78
-
Master Finance Tools - 35% Off CFI (Code CFI35)
PowerBI Data Analyst - Create visualizations and dashboards from scratch
Overview
Syllabus
- Computational Perception & Robotics
- Computing Systems
- Interactive Intelligence
- Machine Learning
Courses
-
Learn how to program all the major systems of a robotic car from the leader of Google and Stanford's autonomous driving teams. This class will teach you basic methods in Artificial Intelligence, including: probabilistic inference, planning and search, localization, tracking and control, all with a focus on robotics. Extensive programming examples and assignments will apply these methods in the context of building self-driving cars.This course is offered as part of the Georgia Tech Masters in Computer Science. The updated course includes a final project, where you must chase a runaway robot that is trying to escape!
-
In this course, we will see all the advances that have led to the state-of-the-art operating system that we know today, covering variety of platforms -- cell phones, multi-core, parallel systems, distributed systems, and cloud computing.
-
This class is offered as CS6290 at Georgia Tech where it is a part of the Online Masters Degree (OMS). Taking this course here will not earn credit towards the OMS degree.
The course begins with a lesson on performance measurement, which leads to a discussion on the necessity of performance improvement.
Pipelining, the first level of performance refinement, is reviewed. The weaknesses of pipelining will be exposed and explored, and various solutions to these issues will be studied. The student will learn hardware, software, and compiler based solutions to these issues.
-
In this course, you'll learn how to apply Supervised, Unsupervised and Reinforcement Learning techniques for solving a range of data science problems.
-
This course provides an introduction to computer vision including fundamentals, methods for application and machine learning classification.
-
This class explores how computation impacts the entire workflow of photography, which is traditionally aimed at capturing light from a 3D scene to form a 2D image. A detailed study of the perceptual, technical and computational aspects of forming pictures, and more precisely the capture and depiction of reality on a (mostly 2D) medium of images is undertaken over the entire term. The scientific, perceptual, and artistic principles behind image-making will be emphasized, especially as impacted and changed by computation.
Topics include the relationship between pictorial techniques and the human visual system; intrinsic limitations of 2D representations and their possible compensations; and technical issues involving capturing light to form images. Technical aspects of image capture and rendering, and exploration of how such a medium can be used to its maximum potential, will be examined. New forms of cameras and imaging paradigms will be introduced.
-
Learn tools and techniques that will help you recognize when problems you encounter are intractable and when there an efficient solution.
-
The twin goals of knowledge-based artificial intelligence (AI) are to build AI agents capable of human-level intelligence and gain insights into human cognition.
-
Implement machine learning based strategies to make trading decisions using real-world data.
-
In this course, we introduce the characteristics of medical data and associated data mining challenges on dealing with such data. We cover various algorithms and systems.
-
The goal of this course is to give you solid foundations for developing, analyzing, and implementing parallel and locality-efficient algorithms. This course focuses on theoretical underpinnings. To give a practical feeling for how algorithms map to and behave on real systems, we will supplement algorithmic theory with hands-on exercises on modern HPC systems, such as Cilk Plus or OpenMP on shared memory nodes, CUDA for graphics co-processors (GPUs), and MPI and PGAS models for distributed memory systems.
This course is a graduate-level introduction to scalable parallel algorithms. "Scale" really refers to two things: efficient as the problem size grows, and efficient as the system size (measured in numbers of cores or compute nodes) grows. To really scale your algorithm in both of these senses, you need to be smart about reducing asymptotic complexity the way you’ve done for sequential algorithms since CS 101; but you also need to think about reducing communication and data movement. This course is about the basic algorithmic techniques you’ll need to do so.
The techniques you’ll encounter covers the main algorithm design and analysis ideas for three major classes of machines: for multicore and many core shared memory machines, via the work-span model; for distributed memory machines like clusters and supercomputers, via network models; and for sequential or parallel machines with deep memory hierarchies (e.g., caches). You will see these techniques applied to fundamental problems, like sorting, search on trees and graphs, and linear algebra, among others. The practical aspect of this course is implementing the algorithms and techniques you’ll learn to run on real parallel and distributed systems, so you can check whether what appears to work well in theory also translates into practice. (Programming models you’ll use include Cilk Plus, OpenMP, and MPI, and possibly others.)
-
Ever wonder how Netflix can predict what movies you'll like? Or how Amazon knows what you want to buy before you do? The answer can be found in Unsupervised Learning!
-
Study machine learning at a deeper level and become a participant in the reinforcement learning research community.
-
Software Development Processes explores requirements engineering, architecture and design, testing, and software quality in general.
-
This is an advanced Computer Networking course that delves into the latest concepts and tools used by the CN industry.
-
Software Architecture and Design teaches the principles and concepts involved in the analysis and design of large software systems.
-
Introduction to Operating Systems is a graduate-level introductory course in operating systems. This course teaches the basic operating system abstractions, mechanisms, and their implementations. The core of the course contains concurrent programming (threads and synchronization), inter process communication, and an introduction to distributed operating systems. The course is split into four sections: (1) Introduction, (2) Process and Thread Management, (3) Resource Management and Communication, and (4) Distributed Systems.
-
This course provides a one-semester overview of information security. It is designed to help students with
prior computer and programming knowledge — both undergraduate and graduate — understand this important
priority in society today. The technical content of the course gives a broad overview of essential concepts and
methods for providing and evaluating security in information processing systems (operating systems and
applications, networks, protocols, and so on).In addition to its technical content, the course touches on the
importance of management and administration, the place information security holds in overall business risk,
social issues such as individual privacy, and the role of public policy. -
This class is offered as CS6460 at Georgia Tech where it is a part of the Online Masters Degree (OMS). Credit for taking this course is conferred only on those that enroll in the degree. The text in the following sections comes from the syllabus for CS6460, located here.
This class is simultaneously an introductory course about educational technology and an advanced, project-oriented class on designing or researching technology's intersection with education. As such, the course provides information about a large number of topics within educational technology, including pedagogical strategies, research methodologies, current tools, open problems, and broader issues. The scope of the material provided goes beyond what any one person could reasonably learn in a semester. Instead, you will select those areas that appeal to you or that support your ultimate project ideas. For example, if you're interested in research, you may focus on the applicable research methodologies to your chosen area of investigation, relevant pedagogical strategies or theories, and the current state-of-the-art within that community. If you're interested in design, you may focus on the relevant pedagogical strategies or theories for your chosen domain, the current popular tools within that domain, and open problems that need to be addressed.
-
Learn about the fundamentals of Artificial Intelligence in this introductory graduate-level course. It provides a survey of various topics in the field along with in-depth discussion of foundational concepts such as classical search, probability, machine learning, logic and planning.
-
This course introduces you to data analysis and visualization techniques using the statistical programming language R.
-
In Human-Computer Interaction, you'll learn the principles and methods that govern the design and improvement of user interfaces.
-
This course covers the theory and practice of software analysis, which lies at the heart of many software development processes such as diagnosing bugs, testing, debugging, and more. It presents diverse techniques, each with their own strengths and limitations, for automating tasks such as testing, debugging, and finding bugs in complex real-world programs. These techniques include dataflow analysis, constraint-based analysis, type systems, model checking, symbolic execution, and more. The course teaches the principles underlying these techniques as well as imparts hands-on experience with using and implementing tools based on these techniques.
-
This course provides an introduction to security issues relating to various cyber-physical systems including industrial control systems and those considered critical infrastructure systems.
-
The summary for this course comes from the course web site at Georgia Tech. Note that watching this course on Udacity does not count for Georgia Tech credit unless you are enrolled in the Georgia Tech OMSCS program.
This course provides an introduction to computer and network security. Students successfully completing this class will be able to evaluate works in academic and commercial security, and will have rudimentary skills in security research. The course begins with a tutorial of the basic elements of cryptography, cryptanalysis, and systems security, and continues by covering a number of seminal papers and monographs in a wide range of security areas.
Topics covered include network security, authentication, security protocol design and analysis, security modeling, trusted computing, key management, program safety, intrusion detection, DDOS detection and mitigation, architecture/operating systems security, security policy, group systems, biometrics, web security, and other emerging topics.
Most of the course readings will come from seminal papers in the field. Links to these papers will be provided on the course pages. In addition, links to critical reference materials will also be provided.
-
In the 21st century, embedded systems are the systems of future with cellular phones, smart-phones, tablets becoming the dominant platforms for computing and communication. The ubiquity of information and the associated need for the computation that accompanies it is driving this revolution only to be accelerated by the new paradigms such as the Internet-of-Things (IoT). These platforms are clearly very different in terms of their processing requirements which are very unique: real-time needs, high performance but at low energy, compact-code and data segments, and most importantly ever changing software stack. Such unique requirements have led to a complete redesign and reinvention of the both hardware and the software stack from ground up, for example, brand new processors such as ARM, DSPs, network processors were invented all the way up to new virtual machines such as Dalvik, new operating systems such as Android and new programming models and compiler optimizations.
-
The objective of this course is to learn the theory and practice behind building automatic translators (compilers) for higher level programming languages and to engineer and build key phases of a compiler in Java or C++ for a small language.
-
This course presents an example of applying a database application development methodology to a major real-world project.
-
This is a graduate-level course in the design and analysis of algorithms. We study techniques for the design of algorithms (such as dynamic programming) and algorithms for fundamental problems (such as fast Fourier transform or FFT).
In addition, we study computational intractability, specifically, the theory of NP-completeness. The main topics covered in the course include: dynamic programming; divide and conquer, including FFT; randomized algorithms, including RSA cryptosystem and hashing using Bloom filters; graph algorithms; max-flow algorithms; linear programming; and NP-completeness.