Citi and Udacity are working together to provide 100 scholarships to help increase education and professional opportunities in technology careers for underrepresented communities. Apply to this ...
This mini-course is intended for students who would like a refresher on the basics of linear algebra. The course attempts to provide the motivation for "why" linear algebra is important in addition to "what" linear algebra is. Students will learn concepts in linear algebra by applying them in computer programs. At the end of the course, you will have coded your own personal library of linear algebra functions that you can use to solve real-world problem
Explore the fundamental building blocks of cybersecurity. Learn how networks handle routing, DNS, load-balancing, and more. Learn the Linux operating system, and review programming and APIs. Start building cloud infrastructure.
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 teaches you how to add a range of advanced features to your app, starting with best practices for using Android's notification system. You'll learn how to create and clip custom views, draw directly to a canvas, and add animations to your apps. You'll also add maps to your apps and learn to style them. Testing an app is as important as building it, so you'll learn to test your app to catch and fix bugs so that users never see them. Finally, you'll learn how to let users login to your app with their existing accountsÑyou'll be surprised how little code it takes.
Learn to architect and develop Android apps in the Kotlin programming language using industry-proven tools and libraries. With these techniques you'll create apps in less time, writing less code, and with fewer errors. The course gives you hands on experience as you build real Android apps using industry best practices, with modern app architecture. You'll learn to use Android Jetpack components such as Room for databases, Work Manager for background processing, the new Navigation component, and more. You'll use key Kotlin features to write your app code more quickly and concisely.
In this course, you'll learn how to use Flutter to quickly develop high-quality, interactive mobile applications for iOS and Android devices. Whether youÕre just getting started with mobile app development, or experienced with other mobile app frameworks, youÕll enjoy the high-velocity development and quality apps that Flutter enables. Work with Google instructors step-by-step to build an app in one codebase that compiles down to native ARM code and has high performance on both iOS and Android. Learn how to develop fast by making use of Flutter's reactive framework, stateful Hot Reload, and integrated tooling. Customize your app with rich, composable widgets, built-in animations, and a layered, extensible architecture.
Ready to level-up your skills as an Android developer? In this course, you will learn how to make your app production-ready by developing a variety of different sample apps, each designed to showcase advanced capabilities of the Android platform, including fragments, widgets, media playback, and testing. YouÕll learn how to create UI tests using the Espresso framework, to leverage third-party libraries and services like ExoPlayer and Firebase Cloud Messaging, and use Google APIs to make your app aware of its location. By the end of the course, youÕll know how to publish your own app to the Google Play Store, where you can reach and engage users across the globe.
Learn the essentials of the Kotlin programming language from Kotlin experts at Google. Kotlin is a modern and concise JVM language that supports functional programming paradigms. Whether youÕre a Java developer or a programmer in another object-oriented language, this course will teach you the essential language features that has made Kotlin so popular with developers. By the end of this course, youÕll gain the skills you need to build your next project in Kotlin.
Android apps are everywhere and learning to build them can be a fantastic career move. Continue on your Android app development education and learn to build multi-screen apps! By the end of the course, youÕll build an app that gets you up to date earthquake information!
As the first course in the Android Developer Nanodegree, Developing Android Apps is the foundation of Udacity's advanced Android curriculum. This course blends theory and practice to help you build great apps the right way. In this course, you'll work with instructors step-by-step to build a cloud-connected Android app, and learn best practices of mobile development, and Android development in particular.
Android apps are everywhere and learning to build them can be a fantastic career move. Continue on your Android app development education and learn to build multi-screen apps! By the end of the course, youÕll build a language-learning app that you can share with your friends.
Learn the basics of Android and Java programming, and take the first step on your journey to becoming an Android developer! This course is designed for students who are new to programming, and want to learn how to build Android apps. By the end of this course, you will have learned how to make your app interactive using buttons and changing text. You will have practiced those skills by making a basketball scores app, and you will have built a full coffee-ordering app.
Software Architecture and Design teaches the principles and concepts involved in the analysis and design of large software systems. This course is split into four sections: (1) Introduction, (2) UML and Analysis, (3) Software Architecture, and (4) Software Design.
Statistics is an important field of math that is used to analyze, interpret, and predict outcomes from data. Descriptive statistics will teach you the basic concepts used to describe data. This is a great beginner course for those interested in Data Science, Economics, Psychology, Machine Learning, Sports analytics and just about any other field.
This course provides an introduction to computer vision including fundamentals of image formation, camera imaging geometry, feature detection and matching, multiview geometry including stereo, motion estimation and tracking, and classification. WeÕll develop basic methods for applications that include finding known models in images, depth recovery from stereo, camera calibration, image stabilization, automated alignment (e.g. panoramas), tracking, and action recognition.Ê
This course is for beginners who have no experience with the Linux system and the command-line interface. In this course, you'll learn the basics of the command line interface of a Linux server: the terminal and shell (GNU Bash). This course includes an introduction to files and directories in the Linux filesystem.
There is nothing more powerful than an idea whose time has come. This course is designed to help you materialize your game-changing idea and transform it into a product that you can build a business around. Product Design blends theory and practice to teach you product validation, UI/UX practices, GoogleÕs Design Sprint and the process for setting and tracking actionable metrics.
Technical interviews follow a pattern. If you know the pattern, youÕll be a step ahead of the competition. This course will introduce you to common data structures and algorithms in Python. You'll review frequently-asked technical interview questions and learn how to structure your responses.You will answer practice problems and quizzes to test your abilities. Then you'll practice mock interviews to get specific recommendations for improvement. Be ready for anything the technical interviewer throws at you.
The Introduction to Data Science class will survey the foundational topics in data science, namely Data Manipulation, Data Analysis with Statistics and Machine Learning, Data Communication with Information Visualization, and Data at Scale -- Working with Big Data. The class will focus on breadth and present the topics briefly instead of focusing on a single topic in depth. This will give you the opportunity to sample and apply the basic techniques of data science.
This course introduces students to the real world challenges of implementing machine learning based trading strategies including the algorithmic steps from information gathering to market orders. The focus is on how to apply probabilistic machine learning approaches to trading decisions. We consider statistical approaches like linear regression, KNN and regression trees and how to apply them to actual stock trading situations.
Taking this course will provide you with a basic foundation in Java syntax, which is the first step towards becoming a successful Java developer. YouÕll learn how computers make decisions and how Java keeps track of information through variables and data types. YouÕll learn to create conditional statements, functions, and loops to process information and solve problems. YouÕll even learn to use IntelliJ, a Java IDE (Integrated Development Environment) that professional developers use, to build, compile, and debug your code. These are foundational programming skills, and mastering them is a must for all aspiring programmers.
This course will introduce you to some of the most powerful programming concepts in Java, including: objects, inheritance and collections. You will learn how to use these object-oriented programming concepts in code examples, discover how these concepts are used in applications that require user input, and understand the benefits of mastering these concepts in Java.By the end of the course, you will create your own game, understand how and when to apply foundational Java concepts, and will gain a deeper understanding of the tools and logic that professional Java developers use everyday.
This course will cover the design and analysis of A/B tests, also known as split tests, which are online experiments used to test potential improvements to a website or mobile application. Two versions of the website are shown to different users - usually the existing website and a potential change. Then, the results are analyzed to determine whether the change is an improvement worth launching. This course will cover how to choose and characterize metrics to evaluate your experiments, how to design an experiment with enough statistical power, how to analyze the results and draw valid conclusions, and how to ensure that the the participants of your experiments are adequately protected.
Machine Learning is a graduate-level course covering the area of Artificial Intelligence concerned with computer programs that modify and improve their performance through experiences. The first part of the course covers Supervised Learning, a machine learning task that makes it possible for your phone to recognize your voice, your email to filter spam, and for computers to learn a bunch of other cool stuff. In part two, you will learn about Unsupervised Learning. Ever wonder how Netflix can predict what movies you'll like? Or how Amazon knows what you want to buy before you do? Such answers can be found in this section! Finally, can we program machines to learn like humans? This Reinforcement Learning section will teach you the algorithms for designing self-learning agents like us!
Inferential statistics allows us to draw conclusions from data that might not be immediately obvious. This course focuses on enhancing your ability to develop hypotheses and use common tests such as t-tests, ANOVA tests, and regression to validate your claims.
This course focuses on 'how' as opposed to 'what'. For example, in the lesson on functions, we do not teach what a function is, but rather how to create a function in C++. The lessons are taught by several different instructors who have used C++ in their professional careers, so students get to experience different perspectives.
This course is a quick, fun introduction to using a relational database from your code, using examples in Python. You'll learn the basics of SQL (the Structured Query Language) and database design, as well as the Python API for connecting Python code to a database. You'll also learn a bit about protecting your database-backed web apps from common security problems. After taking this course, you'll be able to write code using a database as a backend to store application data reliably and safely.