Java Programming: Arrays, Lists, and Structured Data
When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan .
- Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
- Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.
About this course: Build on the software engineering skills you learned in “Java Programming: Solving Problems with Software” by learning new data structures. Use these data structures to build more complex programs that use Java’s object-oriented features. At the end of the course you will write an encryption program and a program to break your encryption algorithm. After completing this course, you will be able to: 1. Read and write data from/to files; 2. Solve problems involving data files; 3. Perform quantitative analyses of data (e.g., finding maximums, minimums, averages); 4. Store and manipulate data in an array or ArrayList; 5. Combine multiple classes to solve larger problems; …

There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.
When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan .
- Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
- Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.
About this course: Build on the software engineering skills you learned in “Java Programming: Solving Problems with Software” by learning new data structures. Use these data structures to build more complex programs that use Java’s object-oriented features. At the end of the course you will write an encryption program and a program to break your encryption algorithm. After completing this course, you will be able to: 1. Read and write data from/to files; 2. Solve problems involving data files; 3. Perform quantitative analyses of data (e.g., finding maximums, minimums, averages); 4. Store and manipulate data in an array or ArrayList; 5. Combine multiple classes to solve larger problems; 6. Use iterables and collections (including maps) in Java.
Who is this class for: This course is for anyone who has taken the first two courses in the Java Programming and Software Engineering Fundamentals Specialization, “Programming Foundations with JavaScript, HTML and CSS” and “Java Programming: Solving Problems with Software.” To succeed in this course, before starting you should have a good understanding of the following: variables, conditionals, for and while loops, methods, Strings, and the edu.duke custom libraries.
Created by: Duke University-
Taught by: Andrew D. Hilton, Assistant Professor of the Practice
Electrical and Computer Engineering -
Taught by: Robert Duvall, Lecturer
Computer Science -
Taught by: Owen Astrachan, Professor of the Practice
Computer Science -
Taught by: Susan H. Rodger, Professor of the Practice
Computer Science
Each course is like an interactive textbook, featuring pre-recorded videos, quizzes and projects.
Help from your peersConnect with thousands of other learners and debate ideas, discuss course material, and get help mastering concepts.
CertificatesEarn official recognition for your work, and share your success with friends, colleagues, and employers.
Duke University 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.Syllabus
WEEK 1
Welcome
Welcome to “Java Programming: Arrays, Lists, and Structured Data”! 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 video, 2 readings expand
- Video: Welcome
- Reading: Programming Resources
- Reading: Feedback surveys
Cryptography: Keeping Information Secret
In this module, you will learn about the basics of cryptography, the science of keeping information private and secure. You will learn about simpler cryptographic systems, which were used from the Roman Empire through the early 1900s. You will learn how to implement these ciphers, as well as how to break them. To solve these problems, you will work more with processing Strings, but also learn about arrays—a way to store an indexable sequence of elements. You will be able to: (1) combine Strings using concatenation; (2) build Strings within a Java program using StringBuilder; (3) use arrays to store and manipulate collections of data; (4) refactor your programs for improved organization using object-oriented principles; (5) and practice effective algorithm design.
21 videos, 5 readings, 3 practice quizzes expand
- Reading: Module Learning Outcomes / Resources
- Video: A Brief History of Cryptography
- Video: Introduction
- Video: Creating and Manipulating Strings
- Video: Counting Loops
- Video: Character Class
- Video: Developing an Algorithm
- Video: Translating into Code
- Video: Testing and Debugging
- Video: Summary
- Reading: Programming Exercise: Implementing the Caesar Cipher
- Practice Quiz: Implementing the Caesar Cipher
- Video: Introduction
- Video: Arrays
- Video: Random Numbers and Arrays
- Video: Counting with Arrays
- Video: Developing an Algorithm
- Video: Summary
- Reading: Programming Exercise: Breaking the Caesar Cipher
- Practice Quiz: Breaking the Caesar Cipher
- Video: Introduction
- Video: Rewriting with Encapsulation
- Video: Fields
- Video: Visibility
- Video: Constructors
- Video: Summary
- Reading: Programming Exercise: Object Oriented Caesar Cipher
- Practice Quiz: Object Oriented Caesar Cipher
- Reading: End of Module Survey
Graded: Cryptography
WEEK 2
GladLibs: Stories from Templates
After completing this module, you will be able (1) to program a word frequency counter to analyze any input text file, (2) to select and substitute words from a list into a document template using both ArrayList and HashMap, (3) to create new lists to use in templates, (4) to recognize brittle code, and (5) to improve code with flexible, object-oriented design. You will gain these skills in the framework of developing a randomly generated story that we call GladLibs. You may discover that bald lions change peoples’ lives, or that fluffy dinosaurs get things done in a jiffy. We hope you have fun developing your Java skills this week!
13 videos, 5 readings, 2 practice quizzes expand
- Reading: Module Learning Outcomes / Resources
- Video: Introduction
- Video: High-level Design Concepts
- Video: ArrayList
- Video: ArrayList for Unique Words
- Video: ArrayList Advantages and Issues
- Video: Summary
- Reading: Programming Exercise: Telling a Random Story
- Practice Quiz: Telling a Random Story
- Video: Introduction
- Video: Brittle Code
- Video: Adding New Labels
- Reading: Programming Exercise: Using GladLibs
- Video: HashMap
- Video: HashMap for Unique Words
- Video: HashMap for Flexible Design
- Video: Summary
- Reading: Programming Exercise: Improving GladLibs
- Practice Quiz: Using and Improving GladLibs
- Reading: End of Module Survey
Graded: GladLibs
WEEK 3
Web Server Logs: From Logs to Visits
In this module, you will learn about how web server logs store information about visitors to a website, and you will write programs to access information like user IP address, date and time of access, and more. Using Java programs you write in this module, you will be able (1) to read information from a web server log, (2) to count the number of unique visitors to your website, and (3) to count the number of times each visitor uses your website.
15 videos, 5 readings, 3 practice quizzes expand
- Reading: Module Learning Outcomes / Resources
- Video: Introduction
- Video: Understanding Log Files
- Video: LogEntry Class with toString
- Video: Parsing Log Files
- Video: Summary
- Reading: Programming Exercise: Reading Log Files
- Practice Quiz: Reading Log Files
- Video: Introduction
- Video: Developing an Algorithm
- Video: Translating to Code
- Video: Equality
- Video: Summary
- Reading: Programming Exercise: Finding Unique IP Addresses
- Practice Quiz: Finding Unique IP Addresses
- Video: Introduction
- Video: Developing an Algorithm
- Video: Translating to Code
- Video: HashMap for Unique IPs
- Video: Summary
- Reading: Programming Exercise: Counting Website Visits
- Practice Quiz: Counting Website Visits
- Reading: End of Module Survey
Graded: Web Server Logs
WEEK 4
MiniProject: Vigenère Cipher
In this module, you will develop a program to break the Vigenère Cipher, a more complex version of the Caesar Cipher. You will improve your program in three stages: first decrypting messages where you know the language and key length, then adding the capability to handle messages with unknown key length, then extending the program to handle messages in a range of possible languages. Through this project, you will be able (1) to effectively use HashSet and HashMap, (2) to expand an algorithm from solving a simpler problem to handle broader, more complex problems, and (3) to design and modify program code involving a more complex collection of classes, methods, and data.
4 videos, 6 readings, 2 practice quizzes expand
- Reading: Module Resources
- Video: Introduction
- Video: Known Language and Key Length
- Reading: Programming Exercise: Known Language and Key Length
- Practice Quiz: Known Language and Key Length
- Video: Unknown Key Length
- Reading: Programming Exercise: Unknown Key Length
- Practice Quiz: Unknown Key Length
- Video: Unknown Language
- Reading: Programming Exercise: Unknown Language, Unknown Key Length
- Reading: Extend Your Program
- Reading: End of Module Survey
Graded: Breaking the Vigenère Cipher
There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.
