À propos de ce cours
25,911 consultations récentes

100 % en ligne

Commencez dès maintenant et apprenez aux horaires qui vous conviennent.

Dates limites flexibles

Réinitialisez les dates limites selon votre disponibilité.

Niveau débutant

Approx. 21 heures pour terminer

Recommandé : 4 weeks of study, 4-8 hours/week...


Sous-titres : Anglais, Coréen

Compétences que vous acquerrez

Programming PrinciplesInterfacesSoftware DesignJava Programming

100 % en ligne

Commencez dès maintenant et apprenez aux horaires qui vous conviennent.

Dates limites flexibles

Réinitialisez les dates limites selon votre disponibilité.

Niveau débutant

Approx. 21 heures pour terminer

Recommandé : 4 weeks of study, 4-8 hours/week...


Sous-titres : Anglais, Coréen

Programme du cours : ce que vous apprendrez dans ce cours

14 minutes pour terminer

Welcome to the Course

Welcome to “Java Programming: Principles of Software Design”! We are excited that you are starting our course to learn how to write programs in Java, one of the most popular programming languages in the world. In this introductory module, you will hear an overview of this course and be introduced to the supporting resources available.

1 vidéo (Total 4 min), 1 lecture
1 vidéo
1 lecture
Programming Resources10 min
2 heures pour terminer

Earthquakes: Programming and Interfaces

In this module, we will introduce a data set containing details about earthquakes around the world. You will learn how to pull this data into a program, search through the data, and filter the data based on desired criteria. By the end of this module, you will be able to (1) write programs that include multiple classes and ArrayLists of class types, (2) find the maximum value in an ArrayList, (3) use a Filter interface to search through data, (4) implement interfaces with method signatures, and (5) combine several filters together.

11 vidéos (Total 57 min), 4 lectures, 3 quiz
11 vidéos
Relationships Between Classes4 min
Licensing and APIs3 min
Coding a Magnitude Filter10 min
Coding the Closest Quakes12 min
Summary2 min
Introduction1 min
Interfaces to Avoid Duplication6 min
Interfaces in More Depth3 min
MatchAll4 min
Summary1 min
4 lectures
Module Learning Outcomes / Resources10 min
Location class documentation and license resources10 min
Programming Exercise: Searching Earthquake Data10 min
Programming Exercise: Filtering Data10 min
3 exercices pour s'entraîner
Searching Earthquake Data12 min
Filtering Data10 min
Earthquakes: Programming and Interfaces24 min
2 heures pour terminer

Earthquakes: Sorting Algorithms

In this module, you will continue using real earthquake data to explore several sorting algorithms. You will learn how to implement a selection sort and a bubble sort, then be introduced to a Java method Collections.sort, which sorts with much greater efficiency. By the end of this module, you will be able to (1) implement several sorting algorithms from scratch, (2) use efficient pre-existing sorting classes, (3) modify a class’s compareTo method to choose the criteria by which objects of that type are ordered, and (4) write classes that implement the Comparator interface to create interchangeable sorting criteria.

12 vidéos (Total 52 min), 3 lectures, 3 quiz
12 vidéos
Developing an Algorithm4 min
Translating to Code3 min
In Place8 min
Efficiency4 min
Introduction5 min
Comparable4 min
Ordering Quakes by Magnitude7 min
Comparator5 min
Comparator for Distance from a Location5 min
3 lectures
Module Learning Outcomes / Resources10 min
Programming Exercise: Implementing Selection Sort10 min
Programming Exercise: Sorting at Scale10 min
3 exercices pour s'entraîner
Implementing Selection Sort10 min
Sorting at Scale6 min
Earthquakes: Sorting Algorithms16 min
3 heures pour terminer

N-Grams: Predictive Text

In this module, you will explore some of the underlying concepts of predictive text. The first lesson will introduce random character generation and then how to train the character selection based on an input text. The second lesson will extend this concept to complete words. By the end of this module, you will be able to: (1) base random text generation on the frequency of characters in a training text, (2) collect a set of characters that occur in a text after randomly chosen initial character(s) to create a semi-random text, (3) extend the predictive text generation to use whole words, and (4) implement your own .equals method to compare complex data types.

15 vidéos (Total 95 min), 5 lectures, 5 quiz
15 vidéos
Order-Zero, Order-One6 min
Finding Follow Set7 min
Implementing Order-Two9 min
Testing and Debugging7 min
Interfaces and Abstract Classes9 min
Summary2 min
Introduction3 min
Order-One Concepts6 min
Order-One Helper Functions8 min
WordGram Class4 min
WordGram Class Implementation4 min
Equals and HashCode Methods5 min
Equals Method Implementation10 min
Summary3 min
5 lectures
Module Learning Outcomes / Resources10 min
Programming Exercise: Generating Random Text10 min
Programming Exercise: Interface and Abstract Class10 min
Programming Exercise: Word N-Grams10 min
Programming Exercise: WordGram Class10 min
5 exercices pour s'entraîner
Generating Random Text14 min
Interface and Abstract Class8 min
Word N-Grams6 min
WordGram Class10 min
N-Grams: Predictive Text20 min
1 heure pour terminer

Java: Tools and Libraries for Everyone

As you reach the end of this series, you may wish to extend your Java experience to tools beyond those provided here. This module will cover some of the Java basic information that is needed to program without BlueJ or the edu.duke library. After completing this module, you will be able to: (1) write a main method to start a Java program in any programming environment, (2) use the “static” keyword to modify fields, (3) find alternative editors to use with Java, (4) use exceptions to debug your program and make it more robust, and (5) reference Java libraries that are necessary to read files without the edu.duke library.

13 vidéos (Total 42 min), 2 lectures, 1 quiz
13 vidéos
Main Method3 min
Static4 min
Editors8 min
Introduction1 min
Understanding Exceptions4 min
Handling Exceptions2 min
Declaring Exceptions1 min
Throwing Exceptions1 min
Reading Files with Java.nio6 min
Hello Around the World with Eclipse4 min
2 lectures
Module Learning Outcomes / Resources10 min
Where To Go From Here10 min
1 exercice pour s'entraîner
Java: Tools and Libraries for Everyone18 min
123 avisChevron Right


a commencé une nouvelle carrière après avoir terminé ces cours


a bénéficié d'un avantage concret dans sa carrière grâce à ce cours


a obtenu une augmentation de salaire ou une promotion

Principaux examens pour Java Programming: Principles of Software Design

par NSJun 16th 2016

Like all the modules of this Java specialization, the teachers are very good and the course reaches the objective of teaching the fundamentals of software design with an excellent didactic.

par MNFeb 26th 2017

This nicely packaged course is learner centered. It engages the learner by enforcing practice through interesting exercises and quizzes. Kudos and Thumbs up to the team of great instructors



Robert Duvall

Computer Science

Owen Astrachan

Professor of the Practice
Computer Science

Andrew D. Hilton

Associate Professor of the Practice
Electrical and Computer Engineering

Susan H. Rodger

Professor of the Practice
Computer Science

À propos de Université Duke

Duke University has about 13,000 undergraduate and graduate students and a world-class faculty helping to expand the frontiers of knowledge. The university has a strong commitment to applying knowledge in service to society, both near its North Carolina campus and around the world....

À propos de la Spécialisation Java Programming and Software Engineering Fundamentals

Take your first step towards a career in software development with this introduction to Java—one of the most in-demand programming languages and the foundation of the Android operating system. Designed for beginners, this Specialization will teach you core programming concepts and equip you to write programs to solve complex problems. In addition, you will gain the foundational skills a software engineer needs to solve real-world problems, from designing algorithms to testing and debugging your programs....
Java Programming and Software Engineering Fundamentals

Foire Aux Questions

  • Une fois que vous êtes inscrit(e) pour un Certificat, vous pouvez accéder à toutes les vidéos de cours, et à tous les quiz et exercices de programmation (le cas échéant). Vous pouvez soumettre des devoirs à examiner par vos pairs et en examiner vous-même uniquement après le début de votre session. Si vous préférez explorer le cours sans l'acheter, vous ne serez peut-être pas en mesure d'accéder à certains devoirs.

  • Lorsque vous vous inscrivez au cours, vous bénéficiez d'un accès à tous les cours de la Spécialisation, et vous obtenez un Certificat lorsque vous avez réussi. Votre Certificat électronique est alors ajouté à votre page Accomplissements. À partir de cette page, vous pouvez imprimer votre Certificat ou l'ajouter à votre profil LinkedIn. Si vous souhaitez seulement lire et visualiser le contenu du cours, vous pouvez accéder gratuitement au cours en tant qu'auditeur libre.

  • No. Completion of a Coursera course does not earn you academic credit from Duke; therefore, Duke is not able to provide you with a university transcript. However, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.

D'autres questions ? Visitez le Centre d'Aide pour les Etudiants.