Machine learning is the process of automatically inferring a function from a set of data. In essence, machine learning techniques seek to automate the inductive learning process that humans do so well.


This introductory cybersecurity course includes topics relevant to core components of cybersecurity technologies, processes, and practices designed to protect networks, computers, and data from attack, damage, and unauthorized access. Specifically how to identify, protect, detect, respond, and recover. Topics include threat landscape, cryptography, malware, network security, and cloud security.


This course is an introduction to relational and other (NoSQL) database systems, SQL programming, and database design. This course will teach students how to understand trade-offs in database design, to create well-designed databases, and to develop proficiency in effectively managing data in a database.


This course covers important concepts of programming languages that are critical to understanding and constructing software artifacts. These concepts will be studied in the context of multiple programming paradigms, including functional and object-oriented programming

Parallel, Concurrent, and Distributed Programming in Java Specialization

Boost your programming expertise with parallelism and learn the fundamentals of parallel, concurrent, and distributed programming.

COMP 140: Computational Thinking

Develop core computer science skills and learn about problem solving in a way that utilizes computation.

Parallel Programming in Java

Learn to use popular parallel Java frameworks to write parallel programs for a wide range of multicore platforms , while also learning about their theoretical foundations.

Concurrent Programming in Java

Learn to use basic concurrency constructs in Java such as threads, locks, accumulators, concurrent collections, and actors, as well as their theoretical foundations.