We may earn an affiliate commission when you visit our partners.
Course image
Andrew D. Hilton, Robert Duvall, Owen Astrachan, and Susan H. Rodger

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);

Read more

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.

Enroll now

What's inside

Syllabus

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.
Read more
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.
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!
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.
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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops core skills in file reading and writing, data analysis, and array manipulation, making it a valuable resource for students pursuing careers in software engineering
Provides instruction from experienced educators like Susan H. Rodger and Andrew D. Hilton, ensuring a high-quality learning experience
Covers practical applications of data structures, cryptography, and file handling, making it relevant to industry trends
Teaches object-oriented programming concepts, enhancing students' understanding of software design
Includes hands-on exercises and a project-based approach, fostering students' practical implementation skills
Provides a solid foundation in Java programming, suitable for beginners or those seeking to enhance their skills

Save this course

Save Java Programming: Arrays, Lists, and Structured Data to your list so you can find it easily later:
Save

Reviews summary

Structured java data manipulation

Learners say this course is largely positive and effective for intermediate learners looking to enhance their Java programming skills through the implementation of real-world problems. Students will practice using Arrays, Lists, and HashMaps through engaging assignments that can be difficult at times. The course covers cryptography, data structures, and provides learners with an opportunity to write code almost without thinking.
The course content is good, but some students find it outdated.
"This course has a high level of quality in its content and effectiveness in its methodology"
"The course offers a good introduction to object oriented programming methodology and to map data structures."
"The course challenges your brain to use the Data Structures in different possible ways."
"As usual, very interesting and practical tasks to complete, which immediately gives an indication, how and where it can be implemented or used."
Students say the instructors are amazing.
"Instructors are amazing, concepts are clear."
"This course is truly outstanding! I'm thoroughly impressed by its brilliance."
Students enjoy working though the engaging assignments.
"The programming assignments, it requires a through understanding of all the concepts thought in the lectures"
"Programming exercises were fun"
"It helps in learning different data structure and the best part is using them in those assignments to answer the quiz."
"I enjoyed the Duke portion of this specialisation very much."
"The programming exercises were fun, and with a level of hand-holding appropriate (in my case) to my level of skill."
Many students find this course to be well received.
"A very informative course for Java."
"I really enjoyed learning through this course."
"I am confident in Java Programming."
"The courses in this specialization are not easy, at all."
"you will get a great sense of achievement after you finish any of them."
"Excellent course!!! Well explained and the concepts introduced are very useful"
"That was a pleasure to have the opportunity of taking this course and acquiring all this knowledge."
Some students experience issues with the quizzes or exams.
"The worded of questions in tests is sometimes misleading."
"But you get through these, the course is very straight forward in week 3&4"
"the amount of programming assignment and number of Qs to complete the module (especially week2) was absurdly large."
"The mini-project was good."
Some students find this course or certain aspects of it to be difficult.
"This course is challenging with quite heavy projects and exercises."
"The cracking of Vigenere cipher requires some serious DFS and pruning."
"The final project was good."
"This programming contents of the course was quite easy, but the final quiz was awful & harder to understand."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Java Programming: Arrays, Lists, and Structured Data with these activities:
Explore Java Documentation
Familiarizing yourself with Java documentation will help you better understand the language's syntax, libraries, and APIs.
Show steps
  • Navigate to the official Java documentation website (https://docs.oracle.com/javase/8/).
  • Explore the documentation for different Java classes, methods, and packages.
  • Use the documentation to clarify concepts and find solutions to coding problems.
Review 'Effective Java'
Reading 'Effective Java' will provide you with insights and best practices for writing clean, maintainable, and efficient Java code.
Show steps
Organize and Review Course Materials
Keeping your course materials organized and up-to-date will enhance your ability to find and review information effectively.
Show steps
  • Create a dedicated folder or notebook for course materials.
  • Regularly file and organize notes, assignments, and other materials.
  • Review your organized materials periodically to reinforce your understanding.
Nine other activities
Expand to see all activities and additional details
Show all 12 activities
Follow Online Java Tutorials
Following guided tutorials will provide you with step-by-step instructions and examples, helping you grasp complex concepts more easily.
Show steps
  • Search for online tutorials on specific Java topics you need to strengthen.
  • Select tutorials from reputable sources (e.g., Coursera, edX, Udemy).
  • Complete the tutorials and practice the exercises provided.
Practice using ArrayLists and HashMaps
Improve your understanding of data structures and their applications.
Browse courses on ArrayList
Show steps
  • Write code to demonstrate the storage and retrieval of data in an ArrayList
  • Implement a HashMap to store key-value pairs
Practice Coding Problems
Regularly solving coding problems will help you refine your coding skills and develop a deeper understanding of the concepts.
Show steps
  • Identify a coding problem platform (e.g., LeetCode, HackerRank, CodeChef).
  • Choose a problem that aligns with the topic you are currently studying.
  • Solve the problem on your own.
  • Review the optimal solution and compare it to your own approach.
Create a Java program to read data from a web server log
Enhance your understanding of Java and data analysis by working with real-world data.
Show steps
  • Find an online tutorial on Java web server log analysis
  • Follow the tutorial to write a program that reads data from a web server log file
  • Analyze the data and summarize the results
Participate in Online Study Groups
Engaging with peers in study groups will foster collaboration, knowledge sharing, and a deeper understanding of the course material.
Show steps
  • Join or create an online study group.
  • Discuss course topics, share resources, and work on problems together.
Build a Simple Java Program
Creating a Java program from scratch will allow you to apply your knowledge and develop hands-on experience.
Show steps
  • Identify a simple problem or task that you want to solve.
  • Design the program's structure and logic.
  • Write the Java code to implement the solution.
  • Test and debug your program to ensure it works correctly.
Review 'Java Concurrency in Practice'
Reading 'Java Concurrency in Practice' will provide you with in-depth knowledge and techniques for writing concurrent and scalable Java applications.
Show steps
Build a graphical user interface (GUI) for an encryption program
Combine your knowledge of Java, cryptography, and GUI programming to create a practical and visually appealing application.
Browse courses on GUI Programming
Show steps
  • Design the layout and functionality of the GUI
  • Implement the GUI using Java Swing or another GUI library
  • Connect the GUI to the encryption algorithm you developed in the course
Contribute to Open-Source Java Projects
Contributing to open-source projects will allow you to gain practical experience, collaborate with others, and enhance your understanding of Java best practices.
Show steps
  • Identify open-source Java projects that align with your interests or skill level.
  • Review the project's documentation and codebase.
  • Identify a bug or feature you can contribute to.
  • Submit a pull request with your proposed changes.

Career center

Learners who complete Java Programming: Arrays, Lists, and Structured Data will develop knowledge and skills that may be useful to these careers:
Data Scientist
Data Scientists use programming, mathematics, and statistics to extract knowledge and insights from data for use in making better decisions. This course could help aspiring Data Scientists, as it covers core data structures, such as arrays and ArrayLists, that will be used regularly in their day-to-day work. Additionally, the course covers topics such as quantitative data analysis and using multiple classes to solve problems, which are essential skills for Data Scientists.
Software Engineer
Software Engineers design, develop, and maintain software systems. This course could help aspiring Software Engineers, as it covers core programming concepts, such as data structures and object-oriented design, that are essential for success in this role. Additionally, the course covers topics such as file reading and writing, which are commonly used in software development.
Data Analyst
Data Analysts use data to solve business problems and make informed decisions. This course could help aspiring Data Analysts, as it covers core data structures and quantitative data analysis techniques that are essential for success in this role. Additionally, the course covers topics such as file reading and writing, which are commonly used in data analysis.
Business Analyst
Business Analysts use data and technology to help businesses improve their operations. This course could help aspiring Business Analysts, as it covers core data structures, quantitative data analysis techniques, and object-oriented design concepts that are essential for success in this role. Additionally, the course covers topics such as file reading and writing, which are commonly used in business analysis.
Operations Research Analyst
Operations Research Analysts use mathematical and analytical techniques to solve complex business problems. This course could help aspiring Operations Research Analysts, as it covers core data structures, quantitative data analysis techniques, and object-oriented design concepts that are essential for success in this role. Additionally, the course covers topics such as file reading and writing, which are commonly used in operations research.
Statistician
Statisticians collect, analyze, and interpret data to help businesses and organizations make informed decisions. This course could help aspiring Statisticians, as it covers core data structures, quantitative data analysis techniques, and object-oriented design concepts that are essential for success in this role. Additionally, the course covers topics such as file reading and writing, which are commonly used in statistical analysis.
Financial Analyst
Financial Analysts use data to make investment decisions and provide financial advice. This course could help aspiring Financial Analysts, as it covers core data structures, quantitative data analysis techniques, and object-oriented design concepts that are essential for success in this role. Additionally, the course covers topics such as file reading and writing, which are commonly used in financial analysis.
Market Researcher
Market Researchers use data to understand consumer behavior and trends. This course could help aspiring Market Researchers, as it covers core data structures, quantitative data analysis techniques, and object-oriented design concepts that are essential for success in this role. Additionally, the course covers topics such as file reading and writing, which are commonly used in market research.
Product Manager
Product Managers are responsible for the development and marketing of products. This course could help aspiring Product Managers, as it covers core data structures, quantitative data analysis techniques, and object-oriented design concepts that are essential for success in this role. Additionally, the course covers topics such as file reading and writing, which are commonly used in product management.
Web Developer
Web Developers design and develop websites. This course could help aspiring Web Developers, as it covers core data structures, object-oriented design concepts, and file reading and writing, which are essential for success in this role.
Database Administrator
Database Administrators are responsible for the maintenance and administration of databases. This course could help aspiring Database Administrators, as it covers core data structures, object-oriented design concepts, and file reading and writing, which are essential for success in this role.
Network Administrator
Network Administrators are responsible for the maintenance and administration of computer networks. This course could help aspiring Network Administrators, as it covers core data structures, object-oriented design concepts, and file reading and writing, which are essential for success in this role.
Systems Analyst
Systems Analysts design and implement computer systems. This course could help aspiring Systems Analysts, as it covers core data structures, object-oriented design concepts, and file reading and writing, which are essential for success in this role.
Information Security Analyst
Information Security Analysts are responsible for protecting computer systems and data from unauthorized access. This course could be helpful for aspiring Information Security Analysts, as it covers core data structures, object-oriented design concepts, and file reading and writing, which are essential for success in this role.
Computer Programmer
Computer Programmers design, develop, and maintain computer programs. This course could help aspiring Computer Programmers, as it covers core data structures, object-oriented design concepts, and file reading and writing, which are essential for success in this role.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Java Programming: Arrays, Lists, and Structured Data.
The Java Programming Language is the official Java language specification. It comprehensive reference for the Java language, and it is essential reading for anyone who wants to learn Java in-depth.
Effective Java popular book among experienced Java programmers. It provides a collection of 78 best practices for writing high-quality Java code. It covers topics such as object-oriented programming, concurrency, generics, and collections.
Java in a Nutshell concise reference to the Java language. It covers all the basics of Java, as well as advanced topics such as generics, annotations, and concurrency.
Java: The Complete Reference comprehensive guide to the Java language. It covers all the basics of Java, as well as advanced topics such as generics, annotations, and concurrency.
Java Programming: A Modular Approach comprehensive guide to the Java language. It covers all the basics of Java, as well as advanced topics such as generics, annotations, and concurrency.
Thinking in Java comprehensive guide to the Java language. It covers all the basics of Java, as well as advanced topics such as generics, annotations, and concurrency.
Clean Code book that teaches how to write clean and maintainable code. It covers topics such as naming conventions, code formatting, and refactoring.
Head First Design Patterns book that teaches design patterns in a fun and engaging way. It covers 23 of the most common design patterns, such as the Singleton pattern, the Factory Method pattern, and the Observer pattern.
Java Concurrency in Practice book that teaches how to write concurrent and multithreaded Java programs. It covers topics such as thread synchronization, concurrency patterns, and performance tuning.
Head First Java popular introductory book to Java programming language. It covers the basics of Java, such as data types, variables, operators, control flow, and object-oriented programming concepts, in an engaging and easy-to-understand manner. It also includes numerous exercises and examples to help readers practice what they have learned.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Java Programming: Arrays, Lists, and Structured Data.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser