Skip to content

Instantly share code, notes, and snippets.

@jakoblorz
Last active December 11, 2017 11:56
Show Gist options
  • Save jakoblorz/7f375219b4b40bca5d3dc576dbfd10c7 to your computer and use it in GitHub Desktop.
Save jakoblorz/7f375219b4b40bca5d3dc576dbfd10c7 to your computer and use it in GitHub Desktop.
Stepping Into Java - A Beginners Checklist

Stepping Into Java - A Beginners Checklist

So you want to learn Java? There are many guides, tutorial, videos etc. to help you learn it. Most of them do only seem to solve a specific problem, while learning a programming language is a continuous process of problem solving, getting stuck, having code-smell and then cleaning the smell out. Ok, drop the last two points, these points are things you might understand later in your carreer. This checklist will present you tasks / quests you can solve during your learning process. All of the problems you will face here were solved already, most software engineers of today worked with these kinds of problems at some point in their carreer as well.

The most significant skill software developers of today have is the skill to break a problem into many smaller problem, which can then be solved (most of the time) in a easy way, the solution will even be obvious in many situations. To develop this skill, you must first develop the skill to peroperly google. All my friends who can code learned to correctly google a problem they faced at some point. Example: Do not google How can I solve XYZ using Java. You will find an answer to this question for sure, but you won't learn anything from that. This question is way to broad! You need to break your problem down into smaller pieces which is the skill described in the beginning. Move over to StackOverflow, the solutions will be somewhere in there for sure. But keep in mind: While you are allowed to use StackOverflow, do not search for a complete solution. Search the solution for a smaller problem and later combine your findings into a program which can solve the problem.

Note: Do not rewrite code you have written already. Iterate over your code to implement the features listed in each Task. Do only create a new program each chapter. This will develop your so called refactor-skills.

Chapter 1 - the main-method

  • Write a simple Command Line Program which prints out the numbers from 1-100
  • Write a simple Command Line Program which prints out the fibonacci numbers (x0 = 0, x1 = 1) to x100
  • Write a simple Command Line Program which prints out the fibonacci numbers (x0 = 0, x1 = 1) to x100. Do not place the fibonacci generation code into the main method. Create another method which will be invoked from the main method.
  • Write a simple Command Line Program which prints out the fibonacci numbers (x0 = 0, x1 = 1) to x100. Do not place the fibonacci generation code into the main method. Create another method which will be invoked from the main method. Do not call System.out.println() or anything equal in the fibonacci generation method. Return the generated numbers and print them out back in the main method.
  • Write a simple Command Line Program which prints out the fibonacci numbers (x0 = 0, x1 = 1). Ask the User how many numbers he wishes to generate. Do not place the fibonacci generation code into the main method. Create another method which will be invoked from the main method. Do not call System.out.println() or anything equal in the fibonacci generation method. Return the generated numbers and print them out back in the main method.
  • Write a simple Command Line Program which prints out the fibonacci numbers (x0 = 0, x1 = 1). Read the passed command line arguments to identify the total number of numbers to generate. Use a fallback strategy in case no value has been specified. Do not place the fibonacci generation code into the main method. Create another method which will be invoked from the main method. Do not call System.out.println() or anything equal in the fibonacci generation method. Return the generated numbers and print them out back in the main method.
  • Special: Think about more features like pretty-printed output (e.g. use a table to show the number index as well). Then write a simple Command Line Program which prints out the fibonacci numbers (x0 = 0, x1 = 1). Read the passed command line arguments to identify the total number of numbers to generate. Use a fallback strategy in case no value has been specified. Do not place the fibonacci generation code into the main method. Create another method which will be invoked from the main method. Do not call System.out.println() or anything equal in the fibonacci generation method. Return the generated numbers and print them out back in the main method.

Chapter 2 - Classes + File IO

  • Write a Command Line Program which interacts with the user. He can:
    • Insert usernames into the program (create user <username>)
    • Get a list of the users (print userlist)
  • Write a Command Line Program which interacts with the user. He can:
    • Insert usernames into the program (create user <username>)
    • Get a list of the users (print userlist)
    • Delete a user (remove <username>)
    • Check if a username is taken already (exists <username>)
  • Write a Command Line Program which interacts with the user. He can:
    • Insert usernames into the program (create user <username>)
    • Get a list of the users (print userlist)
    • Delete a user (remove <username>)
    • Check if a username is taken already (exists <username>)
    • The program should prevent user-creation with already existing username.
    • The program should save the users to a .txt file to persist the "state".
    • The program should check if a user file exists and load the users. If not, the program should not load the users but create the file.
    • The user can save the users (save). If the program is closed after saving and then reopended, the users should be successfully loaded into the program.
  • Write a Command Line Program which interacts with the user. He can:
    • Insert usernames into the program (create user <username>)
    • Get a list of the users (print userlist)
    • Delete a user (remove <username>)
    • Check if a username is taken already (exists <username>)
    • The program should prevent user-creation with already existing username.
    • The program should save the users to a .txt file to persist the "state".
    • The program should check if a user file exists and load the users. If not, the program should not load the users but create the file.
    • The user can save the users (save). If the program is closed after saving and then reopended, the users should be successfully loaded into the program.
    • The user can add additional information: (add info <username> email <email>) (add info <username> address <address>). Create a class for the User, improve your file-protocol to support the information.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment