Skip to content

Latest commit

 

History

History
402 lines (227 loc) · 12.9 KB

README.md

File metadata and controls

402 lines (227 loc) · 12.9 KB

Java BootCamp base folders layout

Please, use this repository as a base for you training phase. The idea is to fork this project so everyone use the same folder structure for the exercises.

It's extremelly important to keep the key points easy to be verified by the reviewers, so don't mix the key points with the rest of the exercises

Material

Index

  1. Objective

  2. Who Should Attend

  3. Duration

  4. Technical Assistance

  5. Performance Measurement

  6. Handling advanced Developers

  7. Materials

  8. General Guidelines

  9. Learning Days

  10. Your First Project Starts Now!

Objective

This course teaches the basics of Java development applications.

index

Who Should Attend

The training will start at a low level and does not require in depth knowledge of the platform in question. Desirable participant profile: trainees and outside Globant candidates. A basic knowledge on OOP is desired, though.

index

Duration

Four weeks total.

Three weeks for guided learning and one week for app development.

index

Technical Assistance

You can contact other bootcamp participants or any available tutor if you need technical assistance. We will create one chat for boot camp members only, and another one for boot camp members and tutors when boot camp starts.

Performance Measurement

  1. Code review after each practice.

  2. Checkpoint completion after Learning stage with your assigned tutor

index

Handling Advanced Developers

Developers that move faster than average can go ahead and complete as much exercises as wanted.

index

Materials

  1. Install Java SDK.

  2. The IDE to use is Eclipse for Java Developers. Eclipse IDE for Java EE Developers Recommended.

  3. Slack JavaBootcampTandil account + headset (audio calls)

  4. 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

  5. Fork this repo https://github.com/sebastian-garofalo/java-bootcamp/ to use as a base to host the project code. Read this for instructions.

index

General Guidelines

The boot camp is organized in the following way:

  1. The first three weeks will be used for intensive self learning. Each topic will have reading and practices parts. Tutors will be available to answer technical questions on a given chat room.

  2. The next week will be used to develop an application following a life process.

  3. One boot camp chat will be created for feedback and technical assistance:

    Bootcamp JAVA - ALL Every person participating in the bootcamp is present here (students and tutors). Here is the place to ask for technical assistance!

  4. Team play is encouraged but the work will be evaluated per person.

  5. 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.

  6. All code and documentation must be in English.

  7. Code must adhere to this eclipse code formatter. See importing instructions in this link.

index

Proposed Test Applications

The test application will consist in a REST API for a functional shopping cart. The minimum features to be completed are:

  • User registration and login.
  • List products.
  • Find products by category and name.
  • Save cart before buy.
  • Buy products.

Learning Days

Each day you will grab the fundamentals of the key building blocks for usual Java applications.

On each learning day you will have to:

  1. ####Read:#### We will provide you with documentation related with current sprint content so you can have a background reference, guide and examples to complete the following practice.

  2. ####Practice:#### You will implement the previously gathered knowledge in simple coding activities. Most important task numbers are listed in the "Key Points" section for each day and they should get most of your attention; if you feel you don’t have enough time to complete all tasks, start with these ones when possible.

  3. ####Commit:#### You will commit all your code on a daily basis, when you finish your practice.

Introduction

  • JVM. See: "Java Technology and the JVM" and "Describing Garbage Collection"

Topic 0: Introduction to Object Oriented Programming Concepts (2 days)

Reading:

  1. Beginners: Java Concepts basic tutorial (in case you need it!)

  2. Beginners: Have fun with Introduction to Java Programming. Do as much you can.

  3. Explore Design Patterns. Minimum scope: singleton, factory, abstract factory, strategy, template method, proxy, decorator and builder.

Extra documentation:

Practice:

  1. Create a singleton example for a database connection.
  2. Create a abstract factory example for diferent type of SQL connections. See this example
  3. Create a proxy example for database accesor clases.
  4. Create a builder example for database connection.

Key Points:

3

Commit:

Commit your practice code.

index

Topic 1: Maven (1 day)

Reading:

  1. What is Maven?

  2. Have fun with Maven in 5 minutes.

  3. Maven: best practices

Practice:

(It is assumed that Maven is already installed and working).

  1. Create and build a simple Maven project:
  2. Customize the Maven project by adding new dependencies: log4j, junit.
  3. 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.

Key Points:

1,2,3

Commit:

Commit your practice code.

index

Topic 2: Test Driven Development (2 days)

Reading:

  1. Test Driven Development

Practice:

  1. Use TDD to create the 'Recent file list' behaviour. Some examples of this behaviour is:
  • When the program is run for the first time, the list is empty.
  • When a file is opened, it is added to the recent file list.
  • If an opened file already exists in the recent file list, it is bumped to the top, not duplicated in the list.
  • If the recent file list gets full (typical number of items is 15), the oldest item is removed when a new item is added.
  1. Using TDD techniques such as mocking, faking and stubs, try to develop your own blog software featuring:
  • Post new entry
  • Delete existing entry
  • Show 10 most recent entries

Key Points:

2

Commit:

Commit your practice code.

index

Topic 3: Services (2 days)

Reading:

  1. How to create services in Java

  2. How to design a good API and why it matters

Practice:

  1. Create a shopping cart API spec
  2. Implement the previous shopping cart using TDD.
  3. Document services.
  4. Design a UserService for CRUD operations.
  5. Implement and document previous UserService.

Note: Do not implement JPA or ORM. Services should return in memory data only.

Key Points:

2,4,7

Commit:

Commit your practice code.

index

Topic 4: SQL - MySql (2 days)

Reading:

  1. MySql basis

  2. Jdbc basis

Extra documentation:

  1. Optimizaciones en MySql

Practice:

Do not solve the practice using JDBC, please just send us the sql scripts.

  1. 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.
  2. Insert information for 3 teachers, 3 courses and 10 students per course.

  3. 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)
    
  4. Percentage of students that passed/failed a given course.

  5. 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>
    
  6. Identify and Optimize all queries.

  7. Connect to MySQL using Java JDBC and perform the query you have developed in excercise 5.

Key Points:

1,2,3,5,7

Commit:

Commit your practice code.

index

Topic 5: NoSQL - MongoDB (2 days)

Reading:

  1. SQL vs. NoSQL DB

  2. Installing MongoDB

  3. SQL to MongoDB Mapping Chart

  4. Morphia to Map Java objects in MongoDB

Practice:

  1. Using the same SQL-MySql data model, map it to the corresponding database, collections and documents.
  2. Fetch all students whose notes in a specific course were greater than 4.
  3. Fetch all courses ordered by name for a given teacher.
  4. Create a new project using Maven and Morphia to map the objects created in 1. Create the necessary DAOs to get same result than 2.

Key Points:

1,2,4

Commit:

Commit your practice code.

index

Topic 6: Spring Core & REST (3 days)

Reading:

  1. Introduction to REST

  2. Quick development guide

  3. Spring boot - rest services guide

  4. REST API documentation

Practice:

  1. Expose the shopping cart created in the topic 3.
  2. Write the swagger file for point 1.
  3. Create and document with swagger a REST API to register users. The API must provide: add, delete, update and find by name and find by nickname operations. Note that the username must be unique.

Key Points:

3

Commit:

Commit your practice code.

index

Your First Project Starts Now!

Final Project (2 days)

Create a functional shopping cart (just REST api). The minimum features to be completed are:

  • User registration and login.
  • Find products by category and name.
  • Save Cart.
  • Buy products.

The solution must use MongoDB or MySql as repository as well as Spring Boot and swagger for REST documentation.

Thanks for reading!