Skip to content

JuanManuelAbate/java-bootcamp-2016

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

#JAVA Boot Camp

###Are you ready for it?

####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. JEE version Recommended.

  3. Skype 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/juanpablopizarro/java-bootcamp-2016 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 2016 - 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!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 72.2%
  • Shell 16.0%
  • Batchfile 11.4%
  • PLpgSQL 0.4%