Online Courses and Tutorials

Onlinecourses.tech provides you with the latest online courses information by assisting over 45,000 courses and 1 million students.

Learn programming, marketing, data science and more.

Get started today

Skip to main content

Теория отраслевых рынков (Industrial Organization)

About this course: Курс посвящен факторам, влияющим на размер компаний и структуру рынка. Почему на одних рынках преобладают малые компании, а на другом крупные? Продавцы принимают решения стратегически, однако их стимулы в свою очередь зависят от структуры рынка и от предшествующих решений. Как разделить между зоной предопределенных и свободных решений? Например, сговор как модель ценового поведения – предопределен структурой рынка или служит результатом свободного волеизъявления? Способны ли укоренившиеся на рынке продавцы препятствовать входу новичков, защищая свою рыночную долю и свою прибыль? Каковы лучшие способы предотвращения ценовых сговоров продавцов? Нужно ли (или по крайней мере желательно) запрещать или ограничивать слияния между крупными продавцами? Есть ли необходимость для государственной политики налагать ограничения на условия договоров между производителем и дистрибьютором? Как в этих условиях должна быть организована государственная политика (применение антимоноп…

Object Oriented Java Programming: Data Structures and Beyond

Object Oriented Java Programming: Data Structures and Beyond

About This Specialization

This Specialization covers intermediate topics in software development. You’ll learn object-oriented programming principles that will allow you to use Java to its full potential, and you’ll implement data structures and algorithms for organizing large amounts of data in a way that is both efficient and easy to work with. You’ll also practice critically evaluating your own code, and you’ll build technical communication skills that will help you prepare for job interviews and collaborative work as a software engineer. In the final Capstone Project, you’ll apply your skills to analyze data collected from a real-world (social) network. Google has contributed real-world projects and the involvement of its engineers as guest lecturers to these courses. A small, select group of top learners who complete the Specialization will be offered practice interviews with Google recruiters. Invitation to a practice interview does not guarantee an actual interview or employment.
Created by:
courses
5 courses
Follow the suggested order or choose your own.
projects
Projects
Designed to help you practice and apply the skills you learn.
certificates
Certificates
Highlight your new skills on your resume or LinkedIn.
Courses
Intermediate Specialization.
Some related experience required.


  1. COURSE 1

    Object Oriented Programming in Java

    Current session: May 15 — Jul 3.
    Commitment
    6 weeks of study, 4-6 hours/week
    Subtitles
    English, Chinese (Simplified)

    About the Course

    Welcome to our course on Object Oriented Programming in Java using data visualization. People come to this course with many different goals -- and we are really excited to work with all of you! Some of you want to be professional software developers, others want to improve your programming skills to implement that cool personal project that you’ve been thinking about, while others of you might not yet know why you’re here and are trying to figure out what this course is all about. This is an intermediate Java course. We recommend this course to learners who have previous experience in software development or a background in computer science. Our goal is that by the end of this course each and every one of you feels empowered to create a Java program that’s more advanced than any you have created in the past and that is personally interesting to you. In achieving this goal you will also learn the fundamentals of Object Oriented Programming, how to leverage the power of existing libraries, how to build graphical user interfaces, and how to use some core algorithms for searching and sorting data. And this course is project-based, so we’ll dive right into the project immediately! We are excited to be offering a unique course structure, designed to support learners of different backgrounds in succeeding at their own pace. The first module explains how this will work and if this course is right for you. We also recommend taking a few minutes to explore the course site. A good place to start is the navigation bar on the left. Click Course Content to see what material we’ll cover each week, as well preview the assignments you’ll need to complete to pass the course. Click Discussions to see forums where you can discuss the course material with fellow students taking the class. Be sure to introduce yourself to everyone in the Meet and Greet forum. This course should take about 6 weeks to complete. You can check out the recommended course schedule below to see a quick overview of the lessons and assignments you’ll complete each week. We’re excited you’re here learning with us. Let’s get started!
    Show or hide details about course Object Oriented Programming in Java

    WEEK 1
    Welcome and Project Overview: Visualizing Data
    Welcome to the first week of our course. In this week, we'll get started by introducing ourselves and the Google engineers who will be making appearances throughout the course. We'll also give you of the unique video series we provide and help you understand how to navigate the course to get the most out of it given your background and learning speed. Finally, we'll jump right into objects and designing classes. This might be a bit of review for some of you who might have learned this in your first programming course. If that's the case, feel free to jump ahead to the Practice Quiz at the end of the week. Let's get started!
    Video · Welcome
    Reading · After completing this course, you will be able to...
    Reading · Big Picture: The role of this course
    Reading · Is this course right for me?
    Practice Quiz · Pre-Course Quiz
    Reading · Additional Resources and Support
    Video · Concept Challenges: what and why?
    Reading · Up Next: A short survey
    Practice Quiz · Survey: Your goals for the course
    Video · In the Real World: Welcome from Google Engineers
    Reading · Project overview
    Video · Project prototype
    Video · Your Path through the Course
    Video · Introduction: Classes and Objects
    Reading · By the end of this week you will be able to...
    Video · Core: Defining Classes and Creating Objects
    Video · When I Struggled: Objects
    Video · Core: Overloading Methods
    Video · Core: Public vs. Private
    Video · In the Real World: Public vs. Private access
    Practice Quiz · Basics of Objects
    Other · What questions do you have about Objects?

    WEEK 2
    Memory Models, Scope, and Starting the Project
    We hope you’re excited about the project that we're starting to build -- we sure are! In this second part of this week, we'll walk you through setting up your system and working through your first assignment so you'll be having fun with it in no time. Before that though, we'll finish going over some of the fundamentals fundamentals of object oriented programming. Specifically, being able to trace code is a key skill in becoming a stronger programmer. Like the end of last week, the first part of this week might be a bit of a review of material you already learned in your first Java programming course. If that’s the case, you are always welcome to skip to the first graded assignment on Objects, Memory Models, and Scope.
    Video · Introduction: Memory Models, Scope, and Project
    Reading · Remember to Choose Your Own Path
    Reading · By the end of this week, you will be able to...
    Video · Core: Drawing Memory Models with Primitive Data
    Video · Support: Memory Models for Primitive Types
    Video · Support: Setting Up and Running Examples in Eclipse
    Practice Quiz · Working with Code
    Video · When I Struggled: Compiling and Running Code
    Video · Core: Drawing Memory Models with Objects
    Video · Concept Challenge: Memory Models 1
    Video · Concept Challenge: Memory Models 2
    Video · Support: Memory Model Drawing Example
    Video · Core: Introduction to Scope
    Video · Concept Challenge: Scope
    Video · Support: Putting it all Together Part 1
    Video · Support: Putting it all Together Part 2
    Quiz · Objects, memory models, and scope
    Reading · Congratulations and quiz answers
    Video · Project: Module 1 Assignment Overview
    Reading · Important note for learners working offline
    Reading · Setting Up Java and Eclipse on Windows (and Linux)
    Reading · Setting Up Java and Eclipse on Mac
    Reading · Setting Up Unfolding Maps
    Video · Project: Setting up the starter code in Eclipse
    Reading · Support: Troubleshooting Common Issues
    Video · Project: Module 1 Assignment Walkthrough
    Reading · Programming Assignment Instructions
    Quiz · Programming Assignment Quiz (Do programming assignment FIRST)
    Reading · Congratulations and quiz answers

    WEEK 3
    Graphical output: Creating GUIs and Displaying Data
    Now that you have the tools to write and trace object oriented code, let’s get back to developing the project! In this first (real) part of the project, you will create an interactive graphical map that will display geospatial data. This is a highly interactive week, so make sure you’ve got Eclipse loaded up! We encourage you to play around as you watch the videos. Some of the code that we use in the videos is in the demos package in the starter code you set up for this course. Open it up and experiment with it while you're watching the videos. We also encourage you to dive right into the programming project, even before watching the videos, if you want. The programming assignment instructions are in the last lesson of this week - you can watch a video walkthrough of the instructions and also read the step-by-step directions in the accompanying reading. There’s lots of room for creativity, too, so have fun!
    Video · Module Introduction: Graphical User Interfaces (GUIs)
    Reading · By the end of this week you will be able to...
    Video · Project: Module 3 Programming Assignment Overview
    Video · Core: Graphical User Interfaces
    Video · Core: Using PApplet
    Video · When I struggled: GUIs
    Video · Core: Resizing Images
    Video · Core: Colors
    Video · When I Struggled: Documentation
    Video · Support: Setting up a Canvas
    Video · Support: Drawing Happy Face
    Video · Support: Loading and Displaying Images
    Video · Core: Why Processing?
    Video · Support: Using Documentation
    Video · In the Real World: Documentation
    Video · Core: Setting up map visualization
    Video · Core: Adding markers
    Video · Core: Using live data
    Reading · Support: Understanding Features and Markers
    Video · Bonus: Visualizing life expectancy
    Video · Bonus: Setting up the map
    Video · Bonus: Representing data
    Video · Bonus: Coloring markers
    Video · Support: ArrayLists and Generics
    Video · Project: Module 3 Programming Assignment Walkthrough
    Reading · Programming Assignment Instructions
    Quiz · Programming Assignment Quiz (Do programming assignment FIRST)
    Reading · Congratulations and quiz answers

    WEEK 4
    Inheritance
    Now that you’re in full swing with the project, let’s take a closer look at some concepts that you have already been using in your code. Specifically, the keyword “extends”. What exactly does it mean that your program “extends PApplet”? To answer this question we’ll need to dive into the details of how Java allows for Class Hierarchies through Inheritance and Polymorphism. These fundamental and powerful concepts will serve you well in the future! We’ll use these ideas to allow for displaying markers differently. If you feel you’re already comfortable with Inheritance and Polymorphism, feel free to dive straight into the project (programming assignment) for this week. As you work with the project, feel free to have some fun and introduce new levels of class hierarchies for improved functionality.
    Video · Module Introduction: Inheritance and Polymorphism
    Reading · By the end of this week, you will be able to...
    Video · Project: Module 4 Programming Assignment Overview
    Video · Core: Why use Inheritance?
    Video · Core: Extends
    Video · In the Real World: Inheritance 1
    Video · Core: Reference vs. Object Type
    Video · When I struggled: the "Is a" relationship
    Video · Concept Challenge: References and Objects
    Video · Core: Visibility Modifiers
    Video · When I Struggled: Inheritance
    Video · Core: Object Creation in Java
    Video · Core: Compiler Rules for Class Construction
    Video · Core: Variable Initialization in a Class Hierarchy
    Video · Concept Challenge: Inheritance Constructors 1
    Video · Concept Challenge: Inheritance Constructors 2
    Video · Core: Method Overriding
    Video · Core: Introduction to Polymorphism
    Video · When I struggled: Polymorphism
    Video · Core: Rules to Follow for Polymorphism
    Video · Core: Casting Objects
    Video · Concept Challenge: Polymorphism Part 1
    Video · Concept Challenge: Polymorphism Part 2
    Video · Core: Abstract Classes and Interfaces
    Video · In the Real World: Inheritance 2
    Video · Project: Module 4 Programming Assignment Walkthrough
    Reading · Programming Assignment Instructions
    Quiz · Programming Assignment Quiz (Do programming assignment FIRST)
    Reading · Congratulations and Quiz Answers

    WEEK 5
    GUIs: Responding to User Events
    You’ve reached an exciting point in the project - in this week you’ll add interactivity to your map! You’ll be learning how to design event-driven programs, using a new and powerful programming paradigm. Your map will now respond to mouse hovers and clicks. As always, make sure you're writing code along with us as you watch the videos and work through the week. Also, feel free to dive into the programming assignment (project) whenever you are ready
    Video · Module Introduction: Responding to User Events
    Reading · By the end of this week, you will be able to...
    Video · Project: Module 5 Programming Assignment Overview
    Video · Core: Introduction to Event-Driven Programming
    Video · In the Real World: Events
    Video · Core: Implementing Events in UnfoldingMaps
    Video · Core: Implementing Buttons in UnfoldingMaps
    Video · When I Struggled: Buttons and GUIs
    Video · Core: Listener Hierarchy
    Practice Quiz · Events
    Video · Project: Module 5 Programming Assignment Walkthrough
    Reading · Programming Assignment Instructions
    Quiz · Programming Assignment Quiz (Do programming assignment FIRST)
    Reading · Congratulations and Quiz Answers

    WEEK 6
    Searching and Sorting: From Code to Algorithms
    You've come a long way in this course, and you've got a great project to show for it. In this last module we'll shift gears a bit to talk about some very exciting and fundamental algorithms for finding and sorting data in an array. Searching and sorting algorithms are not only fundamental to computer science, but also ideal for beginning to explore issues of algorithm efficiency. We will only begin to touch on issues of algorithm efficiency here. We will say much more about it in the next course in this specialization, so we hope you will continue with us. We'll also apply sorting to your project, and you'll wrap things up by finishing your project with an extension of your own choosing.
    Video · Module Introduction: Searching and Sorting
    Reading · By the end of this week, you will be able to...
    Video · Project Overview
    Video · In the Real World: Searching and Sorting
    Video · Core: Linear Search, Part 1
    Video · Core: Linear Search, Part 2
    Video · Core: Binary Search
    Video · Core: Binary Search Example
    Video · When I Struggled: Search
    Practice Quiz · Searching Quiz
    Video · Core: Introduction to Sorting
    Video · Core: Selection Sort Algorithm
    Video · Core: Selection Sort Implementation
    Video · Core: Selection Sort Analysis
    Video · Concept Challenge: Selection Sort
    Video · Core: Mystery Sort
    Video · Core: Java's Built-In Sort
    Video · Core: Comparable Interface, Revisited
    Video · Concept Challenge: Which Sort?
    Video · Project: Module 6 Programming Assignment Walkthrough
    Reading · Programming Assignment Instructions
    Quiz · Programming Assignment Quiz (Do programming assignment FIRST)
    Reading · Congratulations and quiz answers
    Practice Peer Review · Optional: Pre-grading Feedback on Programming Assignment Extension
    Peer Review · Programming Assignment Extension Peer Review
    Video · End of Course Message

  2. COURSE 2

    Data Structures and Performance

    Current session: May 15 — Jul 3.
    Commitment
    6 weeks of study, 6-10 hours/week
    Subtitles
    English

    About the Course

    How do Java programs deal with vast quantities of data? Many of the data structures and algorithms that work with introductory toy examples break when applications process real, large data sets. Efficiency is critical, but how do we achieve it, and how do we even measure it? This is an intermediate Java course. We recommend this course to learners who have previous experience in software development or a background in computer science, and in particular, we recommend that you have taken the first course in this specialization (which also requires some previous experience with Java). In this course, you will use and analyze data structures that are used in industry-level applications, such as linked lists, trees, and hashtables. You will explain how these data structures make programs more efficient and flexible. You will apply asymptotic Big-O analysis to describe the performance of algorithms and evaluate which strategy to use for efficient data retrieval, addition of new data, deletion of elements, and/or memory usage. The program you will build throughout this course allows its user to manage, manipulate and reason about large sets of textual data. This is an intermediate Java course, and we will build on your prior knowledge. This course is designed around the same video series as in our first course in this specialization, including explanations of core content, learner videos, student and engineer testimonials, and support videos -- to better allow you to choose your own path through the course!
    Show or hide details about course Data Structures and Performance

    WEEK 1
    Introduction to the Course
    Welcome to the first module in the second course of our Intermediate Java Programming Specialization. We'll start with introductions again: to ourselves, the Google engineers, and the structure of the course. After the introduction we'll have a short warm up to get you comfortable with the code you will be building on to this class. But don't worry--no graded programming assignments yet. This week is all about getting comfortable and excited to learn.
    Video · Welcome
    Reading · After completing this course, you will be able to...
    Reading · Is this course right for me?
    Practice Quiz · Pre-Course Quiz
    Reading · Up Next: A short survey
    Practice Quiz · Survey: Your goals for the course
    Reading · If you want more practice before you begin...
    Reading · The structure of this course
    Video · Your path through the course
    Video · Concept Challenges
    Video · In the Real World: Welcome from Google Engineers
    Reading · Project Overview
    Video · Project Prototype
    Reading · Setting up Java and Eclipse
    Reading · Getting and Working with the Starter Code
    Quiz · Quiz about the Starter Code and Course Structure

    WEEK 2
    Working with Strings
    This week we're going to dive into the course programming project. In the first lesson you'll learn about Strings and Regular Expressions, and in the programming assignment this week you'll apply that knowledge to adding functionality to your text editor so that it can measure the "readability" of text by calculating something called the "Flesch Readability Score". This course is focused on building code that not only does interesting things, but also finishes them quickly. So, let's get started building some code!
    Video · Introduction
    Reading · A note about week numbers
    Reading · By the end of this week, you will be able to...
    Video · Project Overview
    Video · Core: Introduction to the Flesch Readability Score
    Video · Core: Basics of Strings in Java
    Video · Core: Working with Strings in Java
    Practice Quiz · Where to next?
    Video · Support: For-Each Loops, part 1 of 5
    Video · Support: For-Each Loops, part 2 of 5
    Video · Support: For-Each Loops, part 3 of 5
    Video · Support: For-Each Loops, part 4 of 5
    Video · Support: For-Each Loops, part 5 of 5
    Video · Core: Introduction to Regular Expressions
    Video · When I struggled: Regular expressions
    Video · Concept Challenge: Regular Expressions
    Video · Support: More with Regular Expressions
    Practice Quiz · Strings and Regular Expressions
    Reading · Did you have trouble with any question(s) on the practice quiz?
    Other · What questions do you have about Strings and Regular Expressions?
    Reading · Week 2: Additional Resources
    Video · Project: Programming Assignment Walk Through
    Programming Assignment · How Easy to Read is Your Writing?
    Reading · Programming Assignment FAQ
    Quiz · Module and Programming Assignment Quiz
    Reading · Week 2: Congratulations and quiz answers

    WEEK 3
    Efficiency Analysis and Benchmarking
    Welcome to week 2! The text-editor application you worked with last week does something, but it doesn't do it particularly fast. This week we'll start talking about efficiency. We'll introduce the concept of "Big-O" notation, which sounds a little silly, but is really a powerful (and extremely common) way of analyzing a program's efficiency, independent of the system that it's running on and the exact details of how it's implemented. Then we'll go the other direction and dive into the details, talking about how to measure the actual running time of a piece of code to get an idea of how it really performs in practice.
    Video · Introduction
    Reading · By the end of this week, you will be able to...
    Video · Project Overview
    Video · In the Real World: Efficiency
    Video · Core: Our Motivation for Asymptotic Analysis
    Video · Core: Counting Operations
    Video · Core: Introduction to Asymptotic Analysis, Part 1
    Video · Core: Introduction to Asymptotic Analysis, Part 2
    Video · Core: Computing Big O with Consecutive Operations
    Video · Core: Computing Big O with Nested Operations
    Practice Quiz · Where to next?
    Practice Quiz · Practice Quiz
    Video · Concept Challenge: Classifying Functions using Big O
    Video · Support: Analyzing Selection Sort
    Video · Concept Challenge: Estimating Big O from Code
    Video · Core: Worst, Best, and Average Cases
    Video · In the Real World: Worst Case Analysis
    Video · Core: Analyzing Search Algorithms
    Video · Core: Analyzing Sorting Algorithms
    Video · When I struggled: Algorithm performance
    Video · Core: Merge Sort
    Video · Core: A Summary of Sorting
    Video · Core: Common Pitfalls in Asymptotic Analysis
    Practice Quiz · Asymptotic Notation and Analysis
    Video · Core: Introduction to Benchmarking
    Video · Core: Using Java Time
    Video · Core: Analyzing Timings
    Video · Concept Challenge: Relating Timing Data to Algorithm Analysis
    Reading · Week 3: Additional Resources
    Video · Project: Week 3 Project Walk Through
    Programming Assignment · Making Flesch Score Calculation More Efficient
    Quiz · Module and After Programming Assignment Quiz
    Reading · Week 3: Congratulations and quiz answers

    WEEK 4
    Interfaces, Linked Lists vs. Arrays, and Correctness
    This week we'll start talking about some of the basic concepts that one expects to find in a data structures course: the idea of data abstraction, and a data structure called a Linked List. Even though Linked Lists are not very efficient structures (for the most part), they do hit home the idea of "linking" pieces of data together in your computer's memory, rather than storing the data in one contiguous region. This linking idea will be central to many of the more advanced data structures, namely trees and graphs, that are coming up later in this course and in the next course in this specialization. In this module you'll also learn tools and procedures for unit testing your code, which is a way to make sure that what you've written is correct, and a staple practice of any sophisticated software developer.
    Video · Introduction
    Reading · By the end of this week, you will be able to...
    Video · Project Overview
    Video · Core: Introduction to Abstraction
    Video · In the Real World: Data Abstraction
    Video · Core: Linked Lists vs. Arrays
    Video · In the Real World: Lists vs. Arrays
    Video · Core: Generics and Exceptions
    Video · Core: Java Code for a Linked List
    Video · Concept Challenge: Implementing linked lists, a first attempt
    Video · Concept Challenge: Drawing Linked Lists, second attempt
    Video · Support: Adding to a Linked List
    Video · When I struggled: Data structures
    Video · Core: Testing and Confidence
    Video · In the Real World: How can the compiler help with testing?
    Video · Core: Testing Practices
    Practice Quiz · Where to next?
    Video · In the Real World: How do you test the behavior of code?
    Video · Support: JUnit in Eclipse
    Video · In the Real World: Unit Testing
    Video · Core: Testing Linked List's "Get" Method
    Video · Concept Challenge: Which Tests Should You Run?
    Video · In the Real World: Test-driven development
    Reading · Week 4: Additional Resources
    Video · Project: Linked List Assignment Walk Through
    Programming Assignment · Implement and Test a Linked List
    Video · When I struggled: confidence in code
    Practice Quiz · Where to next?
    Video · Core: Markov Text Generation
    Video · Core: Implementing Markov Text Generation
    Video · Project: Markov Text Generation Walk Through
    Practice Programming Assignment · Markov Text Generation
    Quiz · Week 4 Reflective Programming Assignment Quiz
    Reading · Week 4: Congratulations

    WEEK 5
    Trees! (including Binary Search Trees and Tries)
    Welcome to week 4! We know you've been working hard. We hope you tried that optional Markov Text Generation programming assignment last week, but if not, no worries. You can always go back and do it later (spoiler alert: it's pretty amazing that such a simple algorithm can produce such realistic text). This week there's more fun (and hard work) as we learn about trees. Trees rely on the same linked structure idea as Linked Lists, only they're MUCH faster (usually...). In the project this week you'll add auto-complete to your text editor. Believe us when we say it's so cool when you get it working! You'll see... and we bet you can't wait for the programming assignment now. :)
    Video · Introduction
    Reading · By the end of this week, you will be able to...
    Video · Project Overview
    Video · Core: Trees
    Video · In the Real World: Trees
    Video · Core: Defining Trees
    Video · Core: Binary Trees
    Video · Core: Pre-Order Traversals
    Practice Quiz · Where to next?
    Video · Core: Post-Order, In-Order, and Level-Order Traversals (Breadth-first search)
    Video · When I struggled: Why traverse a tree?
    Video · Core: Introduction to Binary Search Trees
    Video · Core: Searching in a BST
    Video · Support: Code for BST's "Find" Method
    Video · Core: Inserting into a BST
    Video · Support: Code for BST's "Insert" Method
    Video · Core: Deleting from a BST
    Video · Concept Challenge: BST Shape
    Video · Core: Performance of BSTs and Balancing, Part 1
    Video · Core: Performance of BSTs and Balancing, Part 2
    Video · Core: Introduction to Tries
    Video · Core: Performance of Tries
    Video · Core: Implementing a Trie
    Reading · Week 5: Additional Resources
    Video · Project: Week 5 Project Walk Through
    Programming Assignment · Spell Checking and Autocomplete
    Quiz · Week 5 Content and Programming Assignment Quiz
    Reading · Week 5: Congratulations and quiz answers

    WEEK 6
    Hash Maps and Edit Distance
    You made it to the last week! Congratulations on getting this far! In this last week we'll be looking at a fundamental data structure called a Hash Table. If you thought trees were fast, just wait until you see what Hash Tables can do! Your last programming assignment will add spelling correction suggestions to your text editor, and there's an optional assignment that builds on the same ideas as the main assignment too, if you have the time and energy.
    Video · Introduction
    Reading · By the end of this week, you will be able to...
    Video · Project Overview
    Video · Core: Hash Tables
    Video · Core: Collisions in Hash Tables
    Video · When I Struggled: Hash Tables
    Video · Core: Applications of Hash Tables
    Video · Support: Modular Arithmetic
    Video · Concept Challenge: Hash Tables
    Video · Core: Overview
    Video · Core: Algorithm
    Video · Core: Edit Distance
    Reading · Week 6: Additional Resources
    Video · Project: Spelling Suggestions Walk Through
    Programming Assignment · Spelling Suggestions
    Video · Project: Word Path Walk Through
    Practice Programming Assignment · Word Paths (Optional but Recommended)
    Quiz · Week 6: Programming Assignment and Content Quiz
    Reading · Week 6: Congratulations and quiz answers
    Video · Core: Congratulations!

  3. COURSE 3

    Advanced Data Structures in Java

    Current session: May 15 — Jul 3.
    Commitment
    5 weeks of study, 1-3 hours/week
    Subtitles
    English

    About the Course

    How does Google Maps plan the best route for getting around town given current traffic conditions? How does an internet router forward packets of network traffic to minimize delay? How does an aid group allocate resources to its affiliated local partners? To solve such problems, we first represent the key pieces of data in a complex data structure. In this course, you’ll learn about data structures, like graphs, that are fundamental for working with structured real world data. You will develop, implement, and analyze algorithms for working with this data to solve real world problems. In addition, as the programs you develop in this course become more complex, we’ll examine what makes for good code and class hierarchy design so that you can not only write correct code, but also share it with other people and maintain it in the future. The backbone project in this course will be a route planning application. You will apply the concepts from each Module directly to building an application that allows an autonomous agent (or a human driver!) to navigate its environment. And as usual we have our different video series to help tie the content back to its importance in the real world and to provide tiered levels of support to meet your personal needs.
    Show or hide details about course Advanced Data Structures in Java

    WEEK 1
    Introduction to the Course
    Welcome to the first week in the third course of our Intermediate Java Programming Specialization. Once again start with introductions, and in particular introduce the unique structure of this course. Also, if you're not sure if this course is right for you, we've got an optional pre-course quiz coming right up that can help you figure out if you're in the right place. If you decide to stay with us (and we really hope you will!) we've got a great backbone project for you: your very own mapping application, inspired by Google Maps! The core data structure throughout this course is graphs, which may very well be the most fundamental data structure in all of computer science. Ready to begin? So are we!
    Video · Welcome
    Reading · After completing this course, you will be able to ...
    Reading · Is this course right for me?
    Practice Quiz · Pre-course quiz
    Reading · Up Next: A short survey
    Practice Quiz · Survey: Your goals for the course
    Reading · If you want more practice before you begin...
    Reading · The structure of this course
    Video · Your path through this course
    Video · Concept challenges
    Reading · Welcome from the Google engineers
    Other · Introduce Yourself!
    Reading · Project Overview
    Video · Project Prototype
    Reading · Setting up Java and Eclipse
    Reading · Getting and Setting up the Starter Code
    Reading · Project: Orientation to the Starter Code, Data Files and Front-end
    Quiz · Course Structure and Starter Code Quiz (make sure you can run the starter code first)

    WEEK 2
    Introduction to Graphs
    This week we'll start getting technical, introducing you to the central data structure in the course: Graphs. You'll learn the basics and then have a chance to dive in a little deeper into the code, getting ready to start building that Google Maps-like application.
    Video · Introduction
    Reading · A note about week numbers
    Reading · By the end of this week, you will be able to...
    Video · Project: Introduction to Graphs Project Overview
    Video · Core: What's a graph?
    Video · Core: Graph definitions
    Video · In the real world: Graphs at Google
    Video · In the real world: More graphs at Google
    Practice Quiz · Graphs
    Reading · (Read only AFTER finishing Graphs Quiz)
    Video · Core: Implementing graphs in Java
    Video · Core: Adjacency matrix
    Video · Core: Adjacency list
    Practice Quiz · Where to next?
    Video · Concept Challenge: Comparing implementations of graphs
    Video · In the real world: Performance considerations
    Video · When I struggled: Analyzing implementations
    Video · Core: Neighbors
    Video · Support: Coding getNeighbors
    Video · Support: Coding 2-Hop Neighbors
    Video · Support: Multiplying Adjacency Matrices
    Reading · Graph definitions and implementation: a glossary
    Reading · Week 2: Additional Resources
    Video · Project: Programming Assignment Walkthrough
    Programming Assignment · Project: Implementing Graphs
    Reading · Programming Assignment FAQ
    Quiz · Graph definitions and implementation
    Reading · Graph definitions and implementations Quiz Answer explanations (Read ONLY after you pass the quiz)

    WEEK 3
    Class design and simple graph search
    This week you'll get the backbone of your map search engine up and running. In previous courses, including the previous courses in this specialization, you've probably been given most of the classes you needed to complete the assignments. But learning how to design classes from scratch is a key skill that you will need as you become a more sophisticated Java programmer. This week we'll give you the tools you need to create a robust and elegant class design for your map search engine. We'll introduce a similar problem and show you how it can be represented as a graph. Then we'll introduce two core search algorithms: depth-first search and breadth-first search. Finally, we'll turn our graph problem into a set of Java classes. Your task on the programming assignment this week will be to do the same thing, but in the context on the map search engine!
    Video · Introduction
    Reading · By the end of this week, you will be able to ...
    Video · Project: Route Finding Project Overview
    Video · Core: Intro to Class Design
    Video · When I struggled: Building useful classes
    Video · In the Real World: Design patterns
    Video · Core: DFS, Part 1
    Video · Core: DFS, Part 2
    Video · Core: BFS
    Video · Support: Developing Small Examples to Test Your Code
    Practice Quiz · Where to next?
    Video · When I struggled: Data structures jargon
    Video · When I struggled: The right data structure for the job
    Video · Concept Challenge: Performance of DFS and BFS
    Video · Core: Class Design
    Video · When I struggled: If you fail to plan ...
    Video · When I struggled: ... but don't forget to start!
    Video · In the real world: Planning ahead with design
    Video · Core: Refactoring
    Video · Support: Where to start the project design?
    Video · In the Real World: Why is code refactored?
    Reading · Week 3: Additional Resources
    Video · Project: Programming Assignment Walk-through
    Programming Assignment · Project: Class Design and Graph Search
    Peer Review · Code Design Peer Review
    Quiz · End of Week Quiz (complete project and peer review first)
    Reading · End of Week Quiz Answers

    WEEK 4
    Finding shortest paths in weighted graphs
    In the past two weeks, you've developed a strong understanding of how to design classes to represent a graph and how to use a graph to represent a map. In this week, you'll add a key feature of map data to our graph representation -- distances -- by adding weights to your edges to produce a "weighted graph". Although this might seem like a small change, the algorithms that work for unweighted graphs may prove ineffective for weighted graphs. To address this problem, you'll explore more advanced shortest path algorithms. First, you'll see how to find the shortest path on a weighted graph, then you'll see how to find it more quickly. In the project, you'll apply these ideas to create the core of any good mapping application: finding the shortest route from one location to another.
    Video · Introduction
    Reading · By the end of this week, you will be able to ...
    Video · Project: Shortest Path Overview
    Video · Core: Shortest Path with BFS
    Video · Core: Geographic Maps
    Video · Core: Dijkstra's Algorithm
    Video · Concept Challenge: Performance of Dijkstra's Algorithm
    Video · Core: A* Search Algorithm
    Video · When I struggled: Tackling large programming projects
    Video · When I Struggled: Remembering classical algorithms
    Reading · Week 4: Additional Resources
    Video · Project: Shortest Path Programming Assignment Walkthrough
    Programming Assignment · Project: Shortest Path
    Reading · Test cases and debugging guide for the quiz
    Quiz · End of Week Quiz (very short, do programming assignment first)
    Reading · End of Week Quiz Answers

    WEEK 5
    Route planning and NP-hard graph problems
    In this week, we'll go beyond the problem of finding a path between two points, and focus on problems requiring overall path planning. For example, if you wanted to go on errands and visit 6 different locations before returning home, what is the optimal route? This problem is actually a really well known problem in computer science known as the Travelling Salesperson Problem (TSP). Attempting to solve the problem will lead us to explore complexity theory, what it means to be NP-Hard, and how to solve "hard" problems using heuristics and approximation algorithms. We'll end the week by showing how reformulating a problem can have a huge impact: making something which was effectively unsolvable before, now solvable!
    Video · Introduction
    Reading · By the end of this week, you will be able to ...
    Video · Core: Traveling Salesperson Problem (TSP)
    Video · Concept Challenge: An algorithm for TSP
    Video · Core: TSP Brute-Force Algorithm
    Video · Core: TSP Algorithm Running Time
    Video · Core: NP Hard
    Video · Core: Approximations and Heuristics
    Video · Core: Hamiltonian Graphs
    Video · Core: Eulerian graphs
    Video · Core: Eulerian graphs, an algorithm
    Video · Core: An application in bioinformatics
    Reading · Week 5: Additional Resources
    Quiz · End of Week Quiz
    Reading · End of Week Quiz Answers

    WEEK 6
    End of Course Project Extension
    You made it to the last week of our course! We're glad you're still with us. As a reward, there's no new content to learn this week. Instead you'll get the opportunity to extend your project in a direction of your own choosing. We hope you've got some neat ideas for personalizing your map application, and we look forward to seeing them in the peer review gallery. Submitting to the peer review gallery is optional (though the extension is required), but we hope you'll choose to participate.
    Reading · Week 6 Introduction
    Reading · Project: Week 6 Description -- REQUIRED EXTENSION
    Quiz · Week 6 Project Quiz (Complete your project extension first)
    Practice Peer Review · Project Extension Feedback
    Video · End of course message

  4. COURSE 4

    Mastering the Software Engineering Interview

    Current session: May 15 — Jun 19.
    Commitment
    4 weeks of study, 2-4 hours/week
    Subtitles
    English

    About the Course

    You’ve hit a major milestone as a computer scientist and are becoming a capable programmer. You now know how to solve problems, write algorithms, and analyze solutions; and you have a wealth of tools (like data structures) at your disposal. You may now be ready for an internship or (possibly) an entry-level software engineering job. But can you land the internship/job? It depends in part on how well you can solve new technical problems and communicate during interviews. How can you get better at this? Practice! With the support of Google’s recruiting and engineering teams we’ve provided tips, examples, and practice opportunities in this course that may help you with a number of tech companies. We’ll assist you to organize into teams to practice. Lastly, we’ll give you basic job search advice, and tips for succeeding once you’re on the job.
    Show or hide details about course Mastering the Software Engineering Interview

    WEEK 1
    Welcome & What is a Software Engineering Interview?
    Welcome to our course on effectively communicating your technical abilities. This course focuses on landing a technical job and excelling in a technical role. To succeed in job interviews, you’ll need to be able to confidently articulate your ability to solve challenging problems and come up with new solutions under potentially stressful conditions. After getting a technical job, the role of communication increases even more. You’ll need to work with other members of the team, communicate technical challenges and successes, and potentially sell the value of your work to those outside the company. Our goal is that by the end of this course each and every one of you understands the importance of technical communication, and has received constructive feedback on areas of potential improvement. In achieving this goal you will also learn about algorithmic thinking on the fly, how to evaluate a good interview answer to a difficult technical problem, and how “soft” skills impact interview outcomes. In this module, we’ll begin to see what a technical interview looks like, from the perspective of a major tech company. We’ll then focus on how to best get the interview in the first place. If you're not in the job market right now, you might want to skim the videos in this module and skip ahead to the Resume Critique (for insights about how to present yourself in writing) or the Introductions assignment (on effectively presenting yourself in person).
    Video · Course Introduction
    Reading · Prerequisites and how to get the most out of this course
    Video · Course Goals
    Video · Why Soft Skills?
    Video · Google engineers share their stories
    Reading · After completing this course, you will be able to...
    Reading · By the end of this week, you will be able to...
    Other · Introduction
    Practice Quiz · Where do you want to start?
    Video · The Application Process
    Video · Preparing for the Interview
    Reading · Interview prep resources
    Other · Recommended resources
    Video · Researching the Company
    Practice Quiz · Preparing for the interview
    Video · Effective Resumes
    Quiz · Resume critique
    Reading · Congratulations and quiz answers
    Video · Resume critique recap
    Video · People Involved
    Video · What is a technical phone screen or interview?
    Video · What Is an In-Person Interview?
    Video · When I struggled: Overcoming a tough interview experience
    Practice Quiz · Your experience
    Practice Quiz · Where do you want to go next?
    Video · The value of your introduction
    Video · Good and bad example introductions
    Other · Your recommendations
    Reading · Screen and video recording tips
    Peer Review · Introductions
    Quiz · Introductions (self-assessment)
    Quiz · End of Week Quiz

    WEEK 2
    Live coding: the technical phone interview and beyond
    Now that you’ve gotten warmed up, it’s time to practice your coding skills. One of the things you’ll almost certainly be asked to do during a technical phone interview is to code up a solution to a problem in a shared text document (e.g. Google doc) while you are on the phone with the interviewer. This experience can be intimidating, unfamiliar and humbling if you are not prepared, so this week we will give you lots of practice and tips for getting through this part of the interview with flying colors.
    Video · Welcome and Introduction to Live Coding
    Reading · By the end of this week, you will be able to...
    Video · Cold Live Coding Assignment Walkthrough
    Quiz · Cold Live Coding Assignment
    Practice Quiz · Your evaluation criteria
    Video · Sample demonstrating key pitfalls
    Video · Talking Through Processes
    Video · Getting Started
    Video · Getting Stuck and Recovering from Mistakes
    Video · Correctness and Testing
    Video · A Very Good Phone Interview
    Quiz · Self-assessment
    Video · When I struggled: a first technical phone interview
    Reading · Resources for finding problems to practice with
    Video · Imposter Syndrome and Stereotype Threat
    Video · Growth mindset
    Video · Imposter Syndrome Gallery
    Practice Quiz · Imposter syndrome and growth mindset
    Reading · Growth Mindset and Stereotype Threat: Additional Information and Resources
    Practice Quiz · Live coding assignment, take 2
    Quiz · Live coding take 2, self assessment

    WEEK 3
    Explaining what you've already done
    This week, we’re going to focus on how to speak about your experiences working on projects and how to speak about the technical problems you’ve experienced and how you’ve solved those problems. We’ll introduce the STAR (Situation, Task, Action, Results) model for presenting your work, and discuss how to and how not to present the problem you worked on and the solution you developed. We’ll also discuss the communication skills that are critical to this task. It’s a fun week with lots of examples (both good and bad), which ends with an assignment where you will present your own work on video and submit this video for peer review.
    Video · Welcome and Introduction to Personal Narrative
    Video · Sample Pitch, Broadly Technical
    Video · Sample Pitch, Non-Technical
    Video · Sample Pitch, Technical
    Video · Personal Narrative: Key Aspects
    Reading · By the end of this week, you will be able to...
    Practice Quiz · Planning your narrative
    Video · Making the Problem Compelling
    Video · Common Pitfall: Mixing Problem and Solution
    Video · Common Pitfall: Assuming Too Much
    Video · Presenting Your Solution
    Video · Common Pitfall: In the Weeds
    Video · Common Pitfall: Chronology
    Video · Visual Aids
    Video · Eye Contact, Speaking, and Projecting Excitement
    Video · When I struggled: A surprising discovery
    Video · Responding to Your Audience
    Video · Describing a group project
    Video · Assignment Overview
    Peer Review · Describe Your Work
    Other · What project should you talk about?
    Quiz · Describe your work

    WEEK 4
    Algorithmic thinking on the fly
    As we saw in week 2, coding on the fly can be a difficult task! In this final week of the course we’ll revisit the skill of live problem solving by looking at how to solve more challenging algorithmic problems (and write the code associated with the solution) on the whiteboard. You’ll recognize these problems as “classic” interview problems you’ve probably heard a lot about, designed to test your problem solving skills as well as your analysis and coding abilities. Don’t worry, we’ll teach you how to approach them with confidence through a 6-step process to addressing technical questions (hint: you don’t have to produce the perfect solution on the first try!). We’ll show you how to use this process in a number of examples. But of course, there is no substitute for practice, so we’ll set you up with how to train and evaluate yourself.
    Video · Welcome to algorithmic problem solving
    Reading · By the end of this week, you will be able to...
    Practice Quiz · Your experience
    Video · Algorithmic problem solving and interviews
    Video · Case study: introduction
    Video · Case study: a first solution
    Video · Case study: working at the whiteboard
    Video · Case study: going deeper
    Video · Case study: next steps
    Reading · Study notes
    Video · When I struggled: dealing with nerves
    Video · In the real world: career advice
    Video · Evaluation criteria
    Video · Highlights from a good mock interview
    Video · Pitfalls in a bad mock interview
    Practice Quiz · Evaluating the mock interviews
    Video · What's next?
    Reading · Evaluation questions
    Quiz · Solving algorithmic problems on the fly: Part 1
    Practice Quiz · Record your live problem-solving session
    Reading · Interview Question Solutions--DON'T PEEK
    Quiz · Solving Algorithmic Problems on the Fly: Part 2 (self-assessment)
    Reading · Additional Resources
    Video · End of course message
    Video · Appendix: full-length mock phone interview
    Video · Appendix: full-length mock bad in-person interview
    Video · Appendix: full-length mock good in-person interview

  5. COURSE 5

    Capstone: Analyzing (Social) Network Data

    Upcoming session: May 22 — Jul 10.
    Commitment
    6 weeks of study, 3-5 hours/week
    Subtitles
    English

    About the Capstone Project

    In this capstone project we’ll combine all of the skills from all four specialization courses to do something really fun: analyze social networks! The opportunities for learning are practically endless in a social network. Who are the “influential” members of the network? What are the sub-communities in the network? Who is connected to whom, and by how many links? These are just some of the questions you can explore in this project. We will provide you with a real-world data set and some infrastructure for getting started, as well as some warm up tasks and basic project requirements, but then it’ll be up to you where you want to take the project. If you’re running short on ideas, we’ll have several suggested directions that can help get your creativity and imagination going. Finally, to integrate the skills you acquired in course 4 (and to show off your project!) you will be asked to create a video showcase of your final product.
    Show or hide details about course Capstone: Analyzing (Social) Network Data

    WEEK 1
    Introduction and Warm up
    Welcome to our capstone project! In the last four courses in this specialization you've learned many core data structures and algorithms, and applied them to three different real-world projects. In this capstone project you'll be doing a project very much like the projects from these other courses, only it will be almost entirely directed by you! In this first week you'll get warmed up by playing around with the data that will form the backbone of this project: social network data. Then you'll get back into writing code by implementing a couple of graph algorithms to answer questions about this data.
    Video · Welcome and Course Introduction
    Reading · By the end of this capstone, you will be able to ...
    Reading · Specialization Completion Rewards
    Reading · Capstone Project Overview
    Video · Capstone Project Exemplar
    Video · Project overview and timeline
    Video · Introduction to (some) social network data
    Video · Representing social network data as a graph
    Video · Warm up algorithm 1: Extracting egonets
    Video · Warm up algorithm 2: Strongly Connected Components
    Video · Warm up algorithm 2: Strongly connected components, part 2
    Programming Assignment · Capstone warm up
    Reading · Capstone Warmup Assignment: Where to get help
    Quiz · Warm-up Feedback
    Other · What questions do you have about the project?

    WEEK 2
    Project Definition and Scope
    Now that you're warmed up, it's time to get started planning for the bulk of your capstone project. This week you will identify several questions you'd like to answer about the social network data. For each of these questions, you'll research and evaluate data structures and algorithms that would be useful in implementing a solution. Defining the scope of your project and anticipating bottlenecks and tricky spots is tough but extremely valuable. You'll use asymptotic analysis to guide and refine your design.
    Video · Week 2 introduction
    Reading · Preparing to watch the "Project ideas" videos
    Video · Project idea: information flow in a social network
    Video · Project idea: broadcasting to a Twitter network, part 1
    Video · Project idea: broadcasting to a Twitter network, part 2
    Video · Project idea: detecting communities
    Video · Analyzing algorithms before implementing
    Peer Review · Scope and Problem Definition
    Reading · Example Report: Scope and Problem Definition
    Quiz · End of Week Feedback

    WEEK 3
    Capstone Implementation: Mini-project
    Now that you've identified the two problems you want to solve, this week you'll work to solve the easier of the two. This week you are predominately on your own to work independently. To solve the problem, you'll likely create small datasets for testing, research existing solutions to related problems, implement a solution, test your solution, and analyze the algorithmic runtime of the solution. You can optionally write-up a report of your work for peer-review feedback.
    Video · Week 3 introduction
    Video · Overview of report
    Reading · Sample Project Reports
    Practice Peer Review · Optional mini-project report
    Quiz · End of Week Feedback

    WEEK 4
    Capstone Implementation: Full project checkpoint
    This week, you will work on your own on the larger problem you aim to solve. You'll have two weeks (this and the next) to solve the larger problem and submit a report for peer feedback. For this week, you should aim to create small test datasets, research exist solutions, and analyze the runtime of your potential solutions. You should also research datasets which might be particularly interesting for your problem.
    Video · Week 4 introduction
    Reading · Content Links to Prevous Courses
    Practice Peer Review · Optional progress report

    WEEK 5
    Capstone Implementation: Full project final deadline
    Now you get to finalize your project! This week, you will finish your solution to the larger problem and submit a report for peer feedback. This is also an opportunity for reflection about what went well and what went poorly in the process of completing the project. It is also an opportunity to reflect on how far your technical skills have advanced since the beginning of this specialization.
    Video · Week 5 introduction
    Video · Peer review best practices
    Peer Review · Capstone Project Written Report and Code
    Quiz · End of Week Feedback

    WEEK 6
    Capstone oral report
    In this week, you get to present your project to the learner community! This will combine all the skills you've learned in the specialization: algorithm analysis, object oriented programming, design and use of data structures, and presenting your work with confidence. We look forward to seeing what you've created!
    Video · Week 6 introduction
    Video · Demo presentation
    Peer Review · Capstone Oral Report
    Quiz · End of Capstone Feedback
    Video · End of Specialization message
    Quiz · End of Specialization Feedback

Creators

The UC San Diego Department of Computer Science and Engineering (CSE) embodies the university's tradition of excellence as a world-class leader in computer science and engineering education and research.
UC San Diego is an academic powerhouse and economic engine, recognized as one of the top 10 public universities by U.S. News and World Report. Innovation is central to who we are and what we do. Here, students learn that knowledge isn't just acquired in the classroom—life is their laboratory.

Learn more about this course

Comments

Popular posts from this blog

An Introduction to Interactive Programming in Python (Part 1)

About this course: This two-part course is designed to help students with very little or no computing background learn the basics of building simple interactive applications. Our language of choice, Python, is an easy-to learn, high-level computer language that is used in many of the computational courses offered on Coursera. To make learning Python easy, we have developed a new browser-based programming environment that makes developing interactive applications in Python simple. These applications will involve windows whose contents are graphical and respond to buttons, the keyboard and the mouse. In part 1 of this course, we will introduce the basic elements of programming (such as expressions, conditionals, and functions) and then use these elements to create simple interactive applications such as a digital stopwatch. Part 1 of this class will culminate in building a version of the classic arcade game "Pong".
Who is this class for: Recommended Background - A knowledge o…

Introduction to Data Science in Python

About this course: This course will introduce the learner to the basics of the python programming environment, including how to download and install python, expected fundamental python programming techniques, and how to find help with python programming questions. The course will also introduce data manipulation and cleaning techniques using the popular python pandas data science library and introduce the abstraction of the DataFrame as the central data structure for data analysis. The course will end with a statistics primer, showing how various statistical measures can be applied to pandas DataFrames. By the end of the course, students will be able to take tabular data, clean it,  manipulate it, and run basic inferential statistical analyses. This course should be taken before any of the other Applied Data Science with Python courses: Applied Plotting, Charting & Data Representation in Python, Applied Machine Learning in Python, Applied Text Mining in Python, Applied Social Ne…

Learn to Program and Analyze Data with Python

About This Specialization This Specialization builds on the success of the Python for Everybody course and will introduce fundamental programming concepts including data structures, networked application program interfaces, and databases, using the Python programming language. In the Capstone Project, you’ll use the technologies learned throughout the Specialization to design and create your own applications for data retrieval, processing, and visualization. Created by: 5 courses Follow the suggested order or choose your own. Projects Designed to help you practice and apply the skills you learn. Certificates Highlight your new skills on your resume or LinkedIn. Courses

Archive