Please, use this repository as a base for your training. The idea is to fork this project so everyone use the same folder structure for the exercises.
This course teaches the basics of Java development and the tools and frameworks that surround it.
→ index
The training will start at a low level and does not require in depth knowledge of the platform in question. Desirable participant profile: outside Globant candidates with a basic knowledge on OOP and a lot of energy!
→ index
Four weeks total, where we are going to mix reading, coding practice, chat discussions and on-site talks. The target is, after 4 weeks of all this, each candidate would have a final project up and running.
→ index
You can contact other bootcamp participants or any available tutor if you need technical assistance. We will have a chat room to discuss all together.
→ index
When you feel like you are good to go with a practice code, let tutors know and ask for review. This is to avoid getting to the very end of the training with no feedback. The idea is to keep things going dinamically, and being constantly in contact.
→ index
-
Install Java SDK.
-
The IDE to use is Eclipse for Java Developers. Eclipse IDE for Java EE Developers Recommended.
-
Slack java-bootcamp-globers account
-
Create your own GitHub account. Follow this guideline to setup your account. Also you can read further about Git in Try Git or Learn Git Branching
-
Fork this repo https://github.com/marcelorosas/java-bootcamp/ to use as a base to host the project code. Read this for instructions.
→ index
The bootcamp is organized in the following way:
each bootcamper needs to read about the topics and jump into the coding excercises. Slack channel will be used to discuss with tutors and co-bootcampers about both theory and practice, and each on-site talk we are going to go through the outcome of Slack channel discussions, emphasizing about those topics that are causing more pain for all.
This slack account would be used for technical assistance: https://java-bootcamp-globers.slack.com
Bootcamp Java Globant Uruguay - #general
Every person participating in the bootcamp is present here (students and tutors). Here is the place to ask for technical assistance!
Team play is encouraged but the work will be evaluated per person.
The instructions will be vague as they generally are in real life projects. You must look for support and guidance from your tutor and teammates.
All code and documentation must be in English.
Code needs to be clear and indented properly. You can adhere to this eclipse code formatter. See importing instructions in this link.
→ index
The test application will consist in a REST API for a functional shopping cart. It should include as much as you can on this feature list:
- List products.
- Find products by category and name.
- Save cart before buy.
- Buy products.
Each day you will grab the fundamentals of the key building blocks for usual Java applications.
On each learning day you will have to:
-
####Read:#### We will provide you with documentation so you can have a background reference, guide and examples to complete the following practice.
-
####Practice:#### You will implement the previously gathered knowledge in simple coding activities. You will do the effort to have the best results and be ready to apply this knowledge in the final project. Each of this steps are not going to be evaluated though, it's the learning mechanism to get the bests results at the end of the training.
-
####Commit:#### You will commit all your code as soon as you finish your practice. No rush, but ideally enough commits to have questions to discuss through slack and for the next talk.
- JVM. See: "Java Technology and the JVM"
-
Java Concepts basic tutorial
-
Have fun with Introduction to Java Programming. Do as much as you want.
-
Explore Design Patterns. Don't go crazy on this reading, the idea is to know they exist, and when we discuss about them, we'll see why they exist. Examples are singleton, factory, abstract factory, strategy, template method, proxy, decorator and builder, but there are zillions, so take it easy.
- Create a singleton example for a database connection.
- Create a abstract factory example for diferent type of SQL connections. See this example
- Create a proxy example for database accesor clases.
- Create a builder example for database connection.
Commit your practice code, whatever you have accomplished.
→ index
-
Have fun with Maven in 5 minutes.
-
Maven: best practices
(It is assumed that Maven is already installed and working).
- Create and build a simple Maven project.
- Customize the Maven project by adding new dependencies: log4j, junit.
- Create a simple unit test under src/test/java and run it. Then skip the unit test by property or by adding the skipping test configuration to your pom.xml file.
Commit your practice code, whatever you have accomplished.
→ index
- Using GET, POST, PUT and DELETE HTTP methods
- Defining the URL for each request
- Defining the corresponding headers
- Defining the corresponding payload for each request and response
Commit your practice results (just a single text file with the design)
→ index
- Benefits of Unit Testing
- JUnit
- Mockito
- Difference Between Mocks and Stubs
- [Optional, good to know its existence though] Test Driven Development
- Implements all unit test cases in JUnit for the services methods implemented in the previous topic.
Commit your practice code, whatever you have accomplished.
→ index
Do not solve the practice using JDBC, please just send us the sql scripts.
-
Create a database named 'high-school' and modelate:
- Student: first name, last name, registration number, date of birth)
- Teacher: first name, last name, date of birth)
- Course: name, assigned teacher, hours by week, schedule time (they can be dictated several times during the week)
Notes:
- An student can assist several courses during the same year.
- A teacher can be assigned to several courses.
- For each course, each student has 3 partial notes and a final note.
- Create all relationship that you think they are required.
-
Insert information for 3 teachers, 3 courses and 10 students per course.
-
List students and teachers for a given course. The output format should be:
Course: <course-name> Teacher: <last-name>, <first-name> Students: <last-name>, <first-name> (ordered by alphabetically by last name)
-
Percentage of students that passed/failed a given course.
-
For a given teacher, list the timeline for each course that he is assigned to (ordered by date), and the course name. The format should be:
Teacher: <last-name>, <first-name> Schedule: Monday 09:00 - 11:00: <course-name> Monday 15:00 - 17:30: <course-name> Friday 08:45 - 10:40: <course-name>
-
Identify and Optimize all queries.
-
Connect to MySQL using Java JDBC and perform the query you have developed in excercise 5.
Commit your practice code, whatever you have accomplished.
→ index
- Expose the shopping cart created in the topic 3.
- Write the swagger file.
- Create and document with swagger a REST API to register users. The API must provide: add, delete, update, find by name and find by nickname operations. Note that the username must be unique.
Commit your practice code, whatever you have accomplished.
→ index
Create a functional shopping cart (just REST api). Ideally, features completed are:
- Find products by category and name.
- Save Cart.
- Buy products.
The solution must use MySql as repository as well as Spring Boot and swagger for REST documentation.
Optional: Implement an endpoint that returns products recomendation taking into accuont previous orders.
Thanks for reading!
→ index