· 8 years ago · Dec 13, 2017, 06:04 PM
1# Stepping Into Java - A Beginners Checklist
2So you want to learn Java? There are many guides, tutorial, videos etc. to help you learn it.
3Most of them do only seem to solve a specific problem, while learning a programming language
4is a continuous process of problem solving, getting stuck, *having code-smell* and then cleaning
5the smell out. Ok, drop the last two points, these points are things you might understand
6later in your carreer. This checklist will present you tasks / quests you can solve
7during your learning process. All of the problems you will face here were solved already, most
8software engineers of today worked with these kinds of problems at some point in their carreer as well.
9
10The most significant skill software developers of today have is the skill to break a problem
11into many smaller problem, which can then be solved *(most of the time)* in a easy way, the solution
12will even be obvious in many situations. To develop this skill, you must first develop the skill
13to peroperly google. All my friends who can code learned to correctly google a problem
14they faced at some point. Example: Do not google **How can I solve XYZ using Java**. You will find an answer to this
15question for sure, but you won't learn anything from that. This question is way to broad!
16You need to break your problem down into smaller pieces which is the skill described in the beginning.
17Move over to **StackOverflow**, the solutions will be somewhere in there for sure. But keep in mind: While you are allowed to use
18StackOverflow, do not search for a complete solution. Search the solution for a smaller problem and later
19combine your findings into a program which can solve the problem.
20
21Note: Do not rewrite code you have written already. Iterate over your code to implement
22the features listed in each Task. Do only create a new program each chapter. This will develop your so called `refactor`-skills.
23
24## Chapter 1 - the `main`-method
25- [ ] Write a simple Command Line Program which prints out the numbers from `1-100`
26- [ ] Write a simple Command Line Program which prints out the fibonacci numbers `(x0 = 0, x1 = 1) to x100`
27- [ ] Write a simple Command Line Program which prints out the fibonacci numbers `(x0 = 0, x1 = 1) to x100`. Do not place the fibonacci
28generation code into the `main` method. Create another method which will be invoked from the main method.
29- [ ] Write a simple Command Line Program which prints out the fibonacci numbers `(x0 = 0, x1 = 1) to x100`. Do not place the fibonacci
30generation code into the `main` method. Create another method which will be invoked from the main method. Do
31not call `System.out.println()` or anything equal in the fibonacci generation method. Return the generated
32numbers and print them out back in the `main` method.
33- [ ] Write a simple Command Line Program which prints out the fibonacci numbers `(x0 = 0, x1 = 1)`. Ask the User how many
34numbers he wishes to generate. Do not place the fibonacci
35generation code into the `main` method. Create another method which will be invoked from the main method. Do
36not call `System.out.println()` or anything equal in the fibonacci generation method. Return the generated
37numbers and print them out back in the `main` method.
38- [ ] Write a simple Command Line Program which prints out the fibonacci numbers `(x0 = 0, x1 = 1)`. Read the passed command line
39arguments to identify the total number of numbers to generate. Use a fallback strategy in case no value has been specified.
40Do not place the fibonacci generation code into the `main` method. Create another method which will be invoked from the main method. Do
41not call `System.out.println()` or anything equal in the fibonacci generation method. Return the generated
42numbers and print them out back in the `main` method.
43- [ ] **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
44arguments to identify the total number of numbers to generate. Use a fallback strategy in case no value has been specified.
45Do not place the fibonacci generation code into the `main` method. Create another method which will be invoked from the main method. Do
46not call `System.out.println()` or anything equal in the fibonacci generation method. Return the generated
47numbers and print them out back in the `main` method.
48
49## Chapter 2 - Classes + File IO
50- [ ] Write a Command Line Program which interacts with the user. He can:
51 - Insert usernames into the program (`create user <username>`)
52 - Get a list of the users (`print userlist`)
53- [ ] Write a Command Line Program which interacts with the user. He can:
54 - Insert usernames into the program (`create user <username>`)
55 - Get a list of the users (`print userlist`)
56 - Delete a user (`remove <username>`)
57 - Check if a username is taken already (`exists <username>`)
58- [ ] Write a Command Line Program which interacts with the user. He can:
59 - Insert usernames into the program (`create user <username>`)
60 - Get a list of the users (`print userlist`)
61 - Delete a user (`remove <username>`)
62 - Check if a username is taken already (`exists <username>`)
63 - The program should prevent user-creation with already existing username.
64 - The program should save the users to a `.txt` file to persist the **"state"**.
65 - The program should check if a user file exists and load the users. If not, the program should not load the users but
66 create the file.
67 - The user can save the users (`save`). If the program is closed after saving and then reopended, the users should be
68successfully loaded into the program.
69- [ ] Write a Command Line Program which interacts with the user. He can:
70 - Insert usernames into the program (`create user <username>`)
71 - Get a list of the users (`print userlist`)
72 - Delete a user (`remove <username>`)
73 - Check if a username is taken already (`exists <username>`)
74 - The program should prevent user-creation with already existing username.
75 - The program should save the users to a `.txt` file to persist the **"state"**.
76 - The program should check if a user file exists and load the users. If not, the program should not load the users but
77 create the file.
78 - The user can save the users (`save`). If the program is closed after saving and then reopended, the users should be
79successfully loaded into the program.
80 - The user can add additional information: (`add info <username> email <email>`)
81(`add info <username> address <address>`). Create a class for the User, improve your file-protocol to support the information.