We may earn an affiliate commission when you visit our partners.
Course image
Carlos Delgado Kloos, Iria Estévez-Ayres, Florina Almenares Mendoza, Jorge Blasco, Julio Villena Román, Carlos Alario-Hoyos, and María Blanca Ibáñez

This is an introductory course to learn programming with Java designed to teach how to code good programs in Java, understanding “good” as both correct and efficient. Basic principles of software engineering will be introduced to make it easier for our future self and others to reuse code. Ethical issues and the intellectual property of our programs will also be addressed in the last part of this course. Examples and case studies will be provided, so that learners can implement simple but increasingly complex programs in Java.

Read more

This is an introductory course to learn programming with Java designed to teach how to code good programs in Java, understanding “good” as both correct and efficient. Basic principles of software engineering will be introduced to make it easier for our future self and others to reuse code. Ethical issues and the intellectual property of our programs will also be addressed in the last part of this course. Examples and case studies will be provided, so that learners can implement simple but increasingly complex programs in Java.

Emphasis is put on immediate feedback and on having a fun experience. Programming knowledge is not only useful to be able to program today’s devices such as computers and smartphones. It also opens the door to computational thinking, i.e. the application of computing techniques to every-day processes.

This course is designed taking into account the subset and recommendations of the College Board in order to prepare learners for the Advanced Placement (AP) Computer Science A exam..

What you'll learn

  • Detect and correct common programming errors at compile time
  • Detect and correct common programming errors at run time using debugging tools
  • Check that the program does what it has to using unit testing processes
  • Compare the efficiency of two programs in terms of the resources used
  • Model simple programs using basic software engineering techniques
  • Determine if a program has been developed respecting ethical considerations

What's inside

Learning objectives

  • Detect and correct common programming errors at compile time
  • Detect and correct common programming errors at run time using debugging tools
  • Check that the program does what it has to using unit testing processes
  • Compare the efficiency of two programs in terms of the resources used
  • Model simple programs using basic software engineering techniques
  • Determine if a program has been developed respecting ethical considerations

Syllabus

1. Debugging The first week starts from basic errors that occur at compile time and at run time when developing programs, and introduces debugging as a powerful and flexible strategy to detect and correct errors. The Eclipse IDE Debugger will be used to illustrate the debugging process with practical examples. 2. Reasoning & Testing The second week addresses formal mechanisms to test that programs do what is expected of them, introducing unit testing processes, particularized in the JUnit framework for testing programs written in the Java language. 3. Complexity The third week analyzes programs from the point of view of efficiency in the use of resources, such as computation time and storage, and presents simple mechanisms to improve the efficiency of Java programs. 4. Software Engineering The fourth week introduces basic principles of software engineering with the aim to improve robustness, modularity, reusability and maintainability of programs. 5. Ethics The last week studies ethical issues related to software development, including privacy, legal issues, intellectual property rights, and social ramifications.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Ideal for those with an interest in computer science
Taught by instructors who are recognized for their work in Computer Science
Develops essential computer science skills and tools
Covers the basics of software engineering in a concise and clear manner
Hands-on exercises and practical examples provide a comprehensive learning experience
Uses Eclipse IDE Debugger, which is industry-standard
Emphasizes best practices in debugging and testing, which is valuable for professional software development
Students can progress at their own pace

Save this course

Save Introduction to Java Programming: Writing Good Code to your list so you can find it easily later:
Save

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 Introduction to Java Programming: Writing Good Code with these activities:
Review Head First Java, 2nd Edition
Gain a comprehensive understanding of Java programming concepts through guided explanations and engaging examples.
View Melania on Amazon
Show steps
Follow Tutorials on Java Error Handling
Enhance programming skills by learning how to handle errors effectively in Java.
Browse courses on Java
Show steps
  • Find tutorials on Java error handling
  • Follow the steps to implement error handling techniques
  • Review examples to understand how errors are caught and resolved
Debug Practice
Practice debugging techniques to improve understanding of common programming errors.
Show steps
  • Set breakpoints in code to debug step-by-step
  • Use print statements to output intermediate values
  • Inspect variables in the debugger to identify errors
Three other activities
Expand to see all activities and additional details
Show all six activities
Unit Testing Practice
Strengthen testing skills by writing unit tests for Java programs.
Show steps
  • Create test cases to cover various scenarios
  • Write assertions to verify expected outcomes
  • Run tests to identify and fix bugs
Write a Blog Post on Software Engineering Principles
Reinforce understanding and improve communication skills by writing a blog post on software engineering.
Browse courses on Software Engineering
Show steps
  • Research and gather information on software engineering principles
  • Organize thoughts and outline the post
  • Write a clear and concise blog post
Java Project: Implement a Simple Game
Apply principles of programming with Java to create a functional game, enhancing coding skills.
Browse courses on Programming
Show steps
  • Design the game's rules and logic
  • Implement the game using Java code
  • Test and debug the game

Career center

Learners who complete Introduction to Java Programming: Writing Good Code will develop knowledge and skills that may be useful to these careers:
Computer Programmer
A Computer Programmer takes user requirements and designs, codes, debugs, implements, and maintains a wide variety of computer software programs. According to the U.S. Bureau of Labor Statistics, employment of computer programmers is projected to grow 11 percent from 2019 to 2029. There is a growing demand for skilled programmers due to the increasing use of computers and software applications in various industries. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Software Engineer
Software Engineers apply engineering principles to the design, development, maintenance, testing, and evaluation of computer software. They use their knowledge of programming languages, software engineering principles, and computer hardware to create efficient and reliable software applications. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Web Developer
Web Developers design, develop, and maintain websites. They may also be involved in web design, web programming, and web server administration. Employment of web developers is projected to grow 13 percent from 2019 to 2029. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Game Developer
Game Developers design, develop, and maintain video games. They may also be involved in game design, game programming, and game testing. Employment of game developers is projected to grow 13 percent from 2019 to 2029. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Artificial Intelligence Engineer
Artificial Intelligence Engineers design, develop, and maintain artificial intelligence systems. They may also be involved in artificial intelligence research and development. Employment of artificial intelligence engineers is projected to grow 26 percent from 2019 to 2029, much faster than the average for all occupations. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Data Scientist
Data Scientists use data to extract insights and make predictions. They may also be involved in data analysis, data mining, and machine learning. Employment of data scientists is projected to grow 15 percent from 2019 to 2029, much faster than the average for all occupations. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Software Developer
Software Developers design, develop, test, and maintain software applications. They use programming languages to create instructions that computers can follow to perform specific tasks. Employment of software developers is projected to grow 22 percent from 2019 to 2029, much faster than the average for all occupations. This course can help learners build a foundation in the principles of software development, including debugging, testing, and software engineering.
Mobile Application Developer
Mobile Application Developers design, develop, and maintain mobile applications. They may also be involved in mobile app design, mobile app programming, and mobile app testing. Employment of mobile application developers is projected to grow 27 percent from 2019 to 2029. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Computer Systems Analyst
Computer Systems Analysts study an organization's current computer systems and procedures, and design, implement, and maintain new systems or enhancements to existing ones. They may also be involved in training users on new systems and procedures. Employment of computer systems analysts is projected to grow 9 percent from 2019 to 2029. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Database Administrator
Database Administrators are responsible for the design, implementation, maintenance, and security of an organization's databases. They may also be involved in developing and implementing data backup and recovery plans. Employment of database administrators is projected to grow 10 percent from 2019 to 2029. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
User Experience Designer
User Experience Designers design and evaluate user interfaces for websites, software applications, and other products. They may also be involved in user research, prototyping, and usability testing. Employment of user experience designers is projected to grow 23 percent from 2019 to 2029. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Robotics Engineer
Robotics Engineers design, develop, and maintain robots. They may also be involved in robotics research and development. Employment of robotics engineers is projected to grow 2 percent from 2019 to 2029. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Information Security Analyst
Information Security Analysts plan and implement security measures to protect an organization's computer networks and systems. They may also be involved in investigating security breaches. Employment of information security analysts is projected to grow 31 percent from 2019 to 2029, much faster than the average for all occupations. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals, technical reports, and white papers. They may also be involved in technical communication, content development, and product documentation. Employment of technical writers is projected to grow 10 percent from 2019 to 2029. This course can help learners develop the skills and knowledge necessary to succeed in this field, including debugging, testing, and software engineering principles.
College Professor
College Professors teach and conduct research in their field of expertise. They may also be involved in curriculum development, student advising, and course instruction. Employment of college professors is projected to grow 9 percent from 2019 to 2029. This course may be useful to those who wish to pursue a career in academia, as it can help them develop the skills and knowledge necessary to teach computer programming.

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 Introduction to Java Programming: Writing Good Code.
A practical guide to writing clean, maintainable, and readable code. Emphasizes best practices, refactoring techniques, and code organization. Beneficial for all Java developers.
A classic guide to writing high-quality Java code, covering best practices, design patterns, and performance optimization. Valuable for intermediate and advanced Java programmers.
A classic work on software engineering, providing insights into the challenges and complexities of developing large-scale software systems. Valuable for all software engineers, regardless of experience level.
A classic textbook on algorithms, covering a wide range of topics from basic data structures to advanced algorithms. Provides a solid foundation for understanding algorithmic complexity and problem-solving techniques.
A foundational work on domain-driven design, a software development approach that focuses on modeling the core domain of a system. Useful for developers working on complex software systems.
An in-depth exploration of concurrency in Java, covering multithreading, synchronization, and performance optimization. Useful for developers working on multithreaded applications.
A collection of case studies and lessons learned from software engineering practices at Google. Provides insights into how a large-scale organization approaches software development.
Provides a comprehensive introduction to Java programming, covering basic concepts, data types, operators, control flow, and object-oriented programming. Useful as a foundational text for beginners.
A comprehensive guide to the Java programming language, covering both core concepts and advanced topics. Useful as a reference for Java developers of all levels.
A comprehensive encyclopedia of the Java programming language, covering all aspects from basic syntax to advanced topics. Useful as a reference for Java developers of all levels.
A popular introductory Java textbook that uses a visual, interactive approach to teaching programming concepts. Helpful for visual learners and those new to programming.
A comprehensive guide to Java performance optimization, covering profiling, performance analysis, and techniques for improving code efficiency. Useful for developers working on performance-critical applications.
A comprehensive guide to Scrum, an agile software development framework. Provides insights into Scrum principles, practices, and how to implement it effectively. Useful for developers and project managers in agile teams.

Share

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

Similar courses

Here are nine courses similar to Introduction to Java Programming: Writing Good Code.
QA in Java: Check for Bugs and Errors
Most relevant
Introduction to Java Programming: Starting to code in Java
Most relevant
LAFF – On Programming for Correctness
Most relevant
Java for Beginners: Getting Started
Most relevant
Java Programming Essentials: AP Computer Science A
Most relevant
Java Programming: Solving Problems with Software
Most relevant
Java Object-Oriented Programming: AP Computer Science B
Java Programming: Principles of Software Design
Java Programming Fundamentals
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