0% found this document useful (0 votes)
88 views

Decagon Java Curriculum

Here are the key steps to implement a book library system using Java collections: 1. Define classes for Book, Student, Teacher, and Library. Book would contain title, author etc. Student/Teacher contain name, id etc. 2. Library class would maintain collections like Map<String, List<Book>> to store books title mapped to available copies. It would also have lists for students and teachers. 3. Add methods in Library like addBook(), issueBook(), returnBook() etc. IssueBook would check availability and return book/message based on priority rules. 4. Maintain priority using enums like PRIORITY.TEACHER > PRIORITY.SENIOR_ST

Uploaded by

jaiyeade akeem
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
88 views

Decagon Java Curriculum

Here are the key steps to implement a book library system using Java collections: 1. Define classes for Book, Student, Teacher, and Library. Book would contain title, author etc. Student/Teacher contain name, id etc. 2. Library class would maintain collections like Map<String, List<Book>> to store books title mapped to available copies. It would also have lists for students and teachers. 3. Add methods in Library like addBook(), issueBook(), returnBook() etc. IssueBook would check availability and return book/message based on priority rules. 4. Maintain priority using enums like PRIORITY.TEACHER > PRIORITY.SENIOR_ST

Uploaded by

jaiyeade akeem
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

DECAGON JAVA CURRICULUM

TABLE OF CONTENT

WEEK1: INTRO TO OOP -------------------------------------------------------------------- 2

WEEK2: FILE I/O --------------------------------------------------------------------- 4

WEEK3: COLLECTIONS -------------------------------------------------------------------- 6

WEEK4: LAMBDA/FUNCTIONAL INTERFACES ------------------------------------- 8

WEEK5: THREADS AND CONCURRENCY --------------------------------------------- 9

WEEK6: SQL, JDBC, SERVLETS --------------------------------------------------------- 11

WEEK7: INTRO TO SPRING --------------------------------------------------------------- 14

WEEK8: SPRING BOOT, H2 DATABASE, LOGGING -------------------------------- 15

WEEK9: JDBC TEMPLATE, RESTTEMPLATE/WEBCLIENT -------------------- 16

WEEK10: SPRING SECURITY -------------------------------------------------------- 18

WEEK11: DOCKER, CI/CD –---------------------------------------------------------------- 21

WEEK12: INTRO TO REACT --------------------------------------------------------------- 22

WEEK13: ROUTING IN REACT. CONSUMING APIS. TESTING -------------------- 22

1
WEEK 1
INTRO TO OOP
TOPICS / MODULES
1. Introduction to OOP
2. Pillars of OOP
3. SOLID
4. Access Modifiers
5. this and super keyword
6. final and static
7. Interface and Abstract Classes
8. String Class
9. Unit Testing
10. Intro to Exception handling

OUTCOMES
1. Understand Basic OOP concepts
2. Differentiate use cases for Interfaces and Abstract Classes
3. Understand how to create classes, interfaces, abstract classes where they are to be used respectively
4. Using how String, String Buffer and String Builder classes work and their differences.

LEARNING MATERIALS
https://www.udemy.com/course/java-the-complete-java-developer-course/
https://www.guru99.com/interface-vs-abstract-class-java.html
https://www.baeldung.com/java-method-overload-override
https://javapapers.com/core-java/abstract-and-interface-core-java-2/difference-between-a-java-interface
-and-a-java-abstract-class/
https://www.baeldung.com/java-method-overload-override
https://www.javatpoint.com/access-modifiers
https://medium.com/heuristics/interface-vs-abstract-class-vs-concrete-class-196f20c3af9a
https://www.javatpoint.com/this-keyword
https://www.javatpoint.com/final-keyword
https://www.javatpoint.com/java-inner-class
https://www.baeldung.com/java-oop
https://www.javatpoint.com/super-keyword
https://www.javatpoint.com/static-keyword-in-java
https://junit.org/junit5/docs/current/user-guide/

TASK

SCHOOL MODEL

Problem Description

2
You are to model a school using an object-oriented programming (OOP) paradigm. A basic school is
made up of the following.

· Principal
· Teachers
· Staff
· Non-Academic Staff
· Students
· Courses
· Classes
· Applicants

Each of these players have various functions/actions which they can perform

· A teacher can teach a course.


· A student can take a course.
· The principal can expel a student etc.
· A principal can admit applicants based on age.

How will I complete this project?

1. Organise the folders for your module (application), to house both your code base and the tests.

2. Write tests to cover all the methods to be written, before development begins (TDD).

3. Make logical assumptions where necessary.


Steps to evaluate.

4. Code
a. At Minimum

i.The right visibility modifiers should be used.


ii.The following concepts/constructs should be used as much as possible

· Encapsulation
· Inheritance
· Polymorphism
· Interfaces/Abstract classes
· Single Responsibility for classes.
· Abstraction
· Aggregation
· Composition

5. Test Coverage
b. At Minimum
iii.The tests should cover the methods as well as the conditions/procedures that the methods employed.

3
WEEK 2
FILE I/O

TOPICS / MODULES

1. Java Files and I/O:


2. Reading and Writing to Files (txt/json files)
3. Input and Output Stream
4. Manipulating input data
5. Reading Lines
6. Opening & Closing Streams
7. Predefined Streams
8. File handling Classes & Methods
9. Using Reader & Writer classes
10. Exception Handling

OUTCOMES
1. Read from a file.
2. Write to a file.
3. Manipulate text while reading a file

LEARNING MATERIALS
http://tutorials.jenkov.com/java-io/index.html
https://zetcode.com/java/readtext/

WEEKLY ALGORITHM VIDEO


Logarithm

Microsoft Stream

TASK
READING FROM FILES

In an application, different configuration files could be used depending on


the level of development.

This project would primarily test your knowledge of file handling, string manipulation and basic
programming construct in Java.
You are to create a Java application that would parse and read values from
config files. The data in configuration file should be accessed with the
following syntax.
ConfigParser config = new ConfigParser(“name_of_file”);
4
Once your applications start, the config file(s) should be read and values
based on the environment (production, development, staging) should be
stored in a Map.
Command Line arguments should be used to specify the environment in
which the code would be executed in. Below is an illustration
Production java Main.java
Staging java Main.java staging
Development java Main.java development
The environment should specify the file to read from.
For example, if the environment passed to it is “production” the file to read
would be filename + environment;
There should be a default name if a name of the file is not passed to the
constructor.
Here is a format of an example config file:
dbname=sq04_db
host=127.0.0.1
port=8080
[application]
name=fintek
port=8081
context-url=/api/v1
mode=dev
theme=yellow
pipeline=fast
[application]
name=fintrack
For each of these values it should be able to use the values by calling the
get methods and passing the keys e.g
String dbName = config.get(‘dbname’);
String stagingDbname = config.get(‘application.name’);
Where there are multiple values for a key, the first one that appears in the
config file should be used. For example
• If the get method for the key ‘application.name’ is called, based on the
example file provided above, it should return the value fintek.
• If the get method for the key ‘dbname’ is called, it should return
‘sq04_db’.
All values should be returned as a string.
Use this boilerplate for the task
https://github.com/decadevs/Task-Two.git

5
WEEK3
COLLECTIONS

1. Collections
2 Sorting Algorithms
3. Searching Algorithms

OUTCOMES
1. Understand various types of collections.
2. Understand when to use the various collections
3. Understand the importance of Generics
4. Learn how to sort and search through various collections

LEARNING MATERIALS
1. https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html
2. https://howtodoinjava.com/java-collections/
3. https://howtodoinjava.com/java-collections/
4. https://www.javatpoint.com/generics-in-java
5. https://howtodoinjava.com/sort
6. https://howtodoinjava.com/java-algorithms-implementations/
7.https://www.codejava.net/java-core/collections/java-collections-utility-examples-for-searching-in-a-c
ollection
8. https://www.javatpoint.com/java-collections-binarysearch-method
9. https://www.baeldung.com/java-generics
Design Pattern

https://refactoring.guru/design-patterns/iterator/java/example
ALGORITHM VIDEO
Microsoft Stream

TASK
BOOK LIBRARY

Problem Description

A book library where a student or teacher borrows books. When the copy of the book is no longer in
the library. The library should return ‘book taken’. They can be multiple copies of the same book in the
library.

Implementation 1:

The books are given by the Librarian on a first come first serve basis, however, when a teacher is
requesting for the same book a student is asking for, the teacher comes first, When a junior student is
asking for the same book a senior student is asking for, the senior student comes first.

6
Implementation 2:

The books are given by the Librarian on a first come first serve basis, whether you are a teacher, a
junior or a senior student.

How will I complete this project?

1. Write automated test

2. Organise the folders for your module (application), to house both your code base and the tests.

3. Write tests to cover all the methods to be written, before development begins (TDD).

4. Make logical assumptions where necessary.

Steps to evaluate.

5. Classes

a. At Minimum

i. UML should be used.

ii. The right visibility modifiers should be used.

iii. The following concepts/constructs should be used as much as possible

· Encapsulation

· Inheritance

· Polymorphism

· Interfaces/Abstract classes

· Single Responsibility for classes.

· Abstraction

· Aggregation

· Composition

· Generics

· Collections

· Exception Handling

iv. Use/Implement a PriorityQueue class where applicable.

6. Test Coverage

b. At Minimum

v. The tests should cover the methods as well as the conditions/procedures that the methods employed.
7
WEEK 4
LAMBDA/FUNCTIONAL INTERFACES

TOPICS / MODULES
1. Lambda/Functional Interfaces
2. What is Streams API?

OUTCOMES

1. Understand how to code in a functional way using Lambda


2. Understand All about Functional Interface: Java Predicate, Consumer, Supplier, Functional
3. Understand the types of exceptions
4. Know why Exceptions are handled and how they are handled

LEARNING MATERIALS
1. Java Functional Programming | Full Course
2. https://howtodoinjava.com/java-8-tutorial/
3. https://www.educative.io/courses/java-8-lambdas-stream-api-beyond
4. https://www.javatpoint.com/exception-handling-in-java

DESIGN PATTERN:

Mediator

TASK
OPTIMIZATION AND CODE CLEANUP

In the previous project, exceptions were not handled and an imperative style of programming was used.
You are to use declarative programming as much as possible and handle exceptions effectively.

Tips:

Convert all loops to its equivalent using lambda functions.

8
WEEK 5
THREADS AND CONCURRENCY
TOPICS / MODULES

1. Threads and Concurrency


2. Scheduling Task
3. I/O(Networking and Sockets)

OUTCOMES
1. Understand what a thread and process is.
2. Understand how to spin up a thread
3. Understand when you should use multithreading
4. Know how to schedule tasks.

LEARNING MATERIALS
1. https://www.javatpoint.com/multithreading-in-java
2. http://tutorials.jenkov.com/java-concurrency/index.html
3. https://blog.knoldus.com/future-vs-completablefuture-1/
4. Head-First-Java(Chapter 15 - Networking and Threads)
5. https://www.baeldung.com/java-thread-safety
6.
https://www.topcoder.com/thrive/articles/Concurrency%20Patterns%20-%20Active%20Object%20and
%20Monitor%20Object
7. Udemy Course: Java Multithreading-Concurrency
8. https://www.vogella.com/tutorials/JavaConcurrency/article.html
9. https://howtodoinjava.com/java-concurrency-tutorial/
10. https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
11. https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html
12. Java Socket

DESIGN PATTERN: COMMAND PATTERN

● https://refactoring.guru/design-patterns/command/java/example

● https://javarevisited.blogspot.com/2016/05/command-design-pattern-in-java-example-code.html

ALGORITHM VIDEO

TASK

WEBSERVER

9
Create an http server using raw java socket. The http server would have 2 two or more endpoints which
are,

1. '/' path: This endpoint should handle GET requests. Requests to this path should return a HTML
content parsable by the browser

2. '/json' path: This endpoint should handle GET requests to the '/json' path and should return a JSON
object recognized by the browser as a JSON object.

The html page and json object returned should be read from the file system.

How will I complete this project?

3. Organise the folders for your module (application), to house both your code base and the tests.

4. Write tests to cover all the methods to be written, before development begins (TDD).

5. Make logical assumptions where necessary.

Steps to evaluate.

6. Code

a. At Minimum

i. The right visibility modifiers should be used.

ii. The following concepts/constructs should be used as much as possible

· Clean code

· Use thread to handle multiple request

· Response with correct headers eg.

· Content-type

· Status code etc

7. Test Coverage

b. At Minimum

iii. The tests should cover the methods as well as the conditions/procedures that the methods employed

10
WEEK 6
SQL, JDBC, SERVLETS

TOPICS / MODULES

1. SQL
2. JDBC
3. Servlets (Introduction)

OUTCOMES
1. Understand how various parts of SQL(DDL, DCL, DML, TCL, DQL)
2. Understand how to write SQL scripts
3. Knowledge of how to model data
3. Understand SQL joins, views and triggers
4. Understand how to execute SQL scripts in MYSQL Database
5. Understand how to connect to a database using JDBC
6. Understand transaction management and session using JDBC.
7. Know how to handle SQL injection.
8. Know to how to perform CRUD operations using servlet

LEARNING MATERIALS
1. https://www.mysqltutorial.org/basic-mysql-tutorial.aspx
2. SQL Tutorial - Full Database Course for Beginners
3. Java Basics - Introduction to JDBC
4. https://www.baeldung.com/intro-to-servlets
5. https://www.tutorialspoint.com/servlets/index.htm
6. https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html
7. https://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html
8. https://howtodoinjava.com/servlets/complete-java-servlets-tutorial/
9.
https://www.thymeleaf.org/documentation.htmlhttps://www.youtube.com/watchv=E8lZD3O2a68
10. https://www.udemy.com/course/full-stack-java-developer-java/
11. https://blog.zestmoney.in/handling-concurrent-updates-with-optimistic-and-pessimistic-locking-
in-jpa-c26d0b6855e7
12. https://www.baeldung.com/jpa-optimistic-locking
13. https://www.baeldung.com/jpa-pessimistic-locking
ALGORITHM: Stacks and Queues
Microsoft Stream

TASK

FACEBOOK MINI CLONE

11
Create a clone of Facebook that would mimic the its basic features such as

· User signup

· CRUD on post

· CRUD on comment

· Like/Unlike a post/comment

Tools

· Java Servlet

· Thyme leaf/JSP

· Git

· JUnit/Mockito

· SQL

· JDBC

User Stories

As a user I should be able to

· signup

· create a post, comment.

· Like a post or comment

· Unlike a post or comment

· View a post and its comment

· View a user’s posts

· View all comments of a post.

· Edit a post/comment.

· Delete a post/comment

Expectations

· Ensure your code is DRY.

· Basic OOP should be used.

· Apply various optimizations where necessary(e.g pagination).

· Efficient SQL custom queries should be used where needed.

12
o Joins

o Views

· Exception Handling

· Custom response structure both on success and failure

· All parts of your code should be tested

· Database design should be normalized and entities should have the necessary relationship mapping

· Add timestamp to your tables where necessary

Assessment Criteria

1. Codebase is fully tested.

2. All SQL queries are efficient

3. Efficient table mappings

4. Defined response format

5. Codebase is clean and 100% DRY.

13
WEEK 7
INTRO TO SPRING
TOPICS / MODULES
1. Introduction to Spring Framework
2. Why Spring, Spring MVC and Spring Boot
3. Auto Configuration/ Overriding Auto-Configuration

1. Hibernate
2. SOLID
3. Web Services

OUTCOMES
1. Understand the roles of Spring, Spring boot and Spring MVC
2. Understand various Spring annotations.
3. Understands Dependency Injection and Spring IOC container

4. Understand SOLID principles


5. Understand Web Services
6. Know the various forms of transport used in web services
7. Understand why Hibernate is used
8. Know how to use Hibernate as an ORM
9. Understand various types of relationship mapping

LEARNING MATERIALS
1. https://www.udemy.com/course/spring-data-jpa-using-hibernate/
https://www.udemy.com/course/hibernate-from-scratch/
2. https://www.tutorialspoint.com/jpa/jpa_advanced_mappings.htm
3. https://www.tutorialspoint.com/jpa/jpa_entity_relationships.htm
4. https://www.baeldung.com/spring-data-jpa-query
5. Udemy: Spring Framework Master Class – Beginner to Expert
6. https://www.cleo.com/blog/knowledge-base-web-services
7. https://howtodoinjava.com/best-practices/5-class-design-principles-solid-in-java/
8. https://www.baeldung.com/solid-principles
9. https://www.callicoder.com/hibernate-spring-boot-jpa-many-to-many-mapping-example/
10. https://www.callicoder.com/hibernate-spring-boot-jpa-one-to-many-mapping-example/
11. https://www.callicoder.com/hibernate-spring-boot-jpa-one-to-one-mapping-example/

ALGORITHM:
Strings
TASK

FACEBOOK MINI CLONE WITH HIBERNATE

Refactor the project on week 6 to use hibernate ORM. Refactor the codebase to follow SOLID
principles where necessary.

14
WEEK 8
SPRING BOOT, H2 DATABASE, LOGGING

TOPICS / MODULES
1. Dependency Injection/IoC
2. Annotations
3. Spring boot properties
4. H2 database
5. Thymeleaf
6. Exception Handling 2
7. Logging
OUTCOMES
1. Understand how to configure a spring project
2. Understand how to use H2 in memory database
3. Know how to use Thymeleaf as a template engineer
4. Understand how to handle exceptions in spring boot
5. Understand logging using Log4

LEARNING MATERIALS
1. https://amigoscode.teachable.com/courses/267273/lectures/4499745
2. https://howtodoinjava.com/spring-boot-tutorials/
3. Spring Bean Lifecycle - Creation
4. https://www.toptal.com/java/spring-boot-rest-api-error-handling
5. https://mkyong.com/spring-boot/spring-rest-error-handling-example/ 7
6. https://www.baeldung.com/spring-boot-h2-database
7. https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
8. https://www.marcobehler.com/guides/java-logging

WEEKLY ALGORITHM
Graphs

15
WEEK 9
JDBC TEMPLATE, RESTTEMPLATE/WEBCLIENT

TOPICS / MODULES

1. JDBCTemplate
2. RestTemplate/Web Client
3. Packaging(WAR/JAR)
4. Application Server
5. Mockito/JUnit
6. Integration Testing
7. Scheduling Task in Spring

LEARNING OBJECTIVES (MUST-KNOW)

DECADEVS MUST-KNOW;

1. How to implement the JDBC Template


a. Create a Model using JDBC Template
b. Create a data initialization SQL
c. Extend JDBCDaoSupport to implement service interface methods
d. By understanding terms, concepts, and operations such as;
i. Create insert, update, select and delete methods

Resources
https://www.javainuse.com/spring/bootjdbc
https://spring.io/guides/gs/accessing-data-jpa/
https://zetcode.com/db/jdbctemplate/
https://www.vogella.com/tutorials/SpringJDBC/article.html

2. How to implement both RestTemplate and WebClient and understand the difference
a. Create beans for RestTemplate and WebClient
b. Create models that match the ones they intend to consume
c. Consume an application using both RestTemplate and WebClient

Resources
https://ordina-jworks.github.io/rest/2020/10/12/RestTemplate-vs-WebClient.html
https://www.baeldung.com/rest-template
https://www.baeldung.com/spring-webclient-resttemplate
https://rapidapi.com/blog/how-to-use-an-api-with-spring-resttemplate/
https://howtodoinjava.com/spring-boot2/resttemplate/spring-restful-client-resttemplate-example/

3. How to package a Spring boot application as a JAR or WAR file using maven and pom.xml file.

16
Resources
https://howtodoinjava.com/spring-boot2/war-packaging-example/
https://www.baeldung.com/java-jar-war-packaging
https://www.javatpoint.com/spring-boot-packaging
How to create Deployable WAR and JAR file by Spring Boot | Convert JAR to WAR and WAR to JAR

4. How to handle task scheduling in Spring Boot


a. Enable scheduling
b. Scheduling a task with a Fixed Rate
c. Scheduling a task with a Fixed Delay
d. Scheduling a task using Cron Expression

Resources
https://www.callicoder.com/spring-boot-task-scheduling-with-scheduled-annotation/

5. Mockito/JUnit
a. How to Identify and use the right dependencies for unit and integration testing
b. How to test a module/component of an application
c. How to use Test Runners e.g @RunWith(SpringRunner.class),
@RunWith(MockitoJUnitRunner.class), @ExtendWith(SpringExtension.class),
@ExtendWith(MockitoExtension.class)
d. Identifying various Classes and Methods
e. Mocking with @Mock and @MockBean annotations

Resources
https://junit.org/junit5/docs/current/user-guide/
https://rieckpil.de/guide-to-testing-with-spring-boot-starter-test/?utm_source=RIECKPIL+Newsletter&
utm_campaign=cdec4317fe-RIECKPIL_Newsletter_Automation_18&utm_medium=email&utm_term
=0_d60be7e492-cdec4317fe-446164890&mc_cid=cdec4317fe&mc_eid=0406540e8d
https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html
https://www.baeldung.com/mockito-series
https:/ /howtodoinjava.com/spring-boot2/testing/testing-support

OTHER LEARNING RESOURCES


1. What is Rest API
2. Best Practices For A Pragmatic Restful API
3. API vs Webservice
4. https://spring.io/guides/gs/rest-service
5. https://www.mulesoft.com/resources/api/what-is-rest-api-design
6. https://www.smashingmagazine.com/2018/01/understanding-using-rest-api
7. https://www.codecademy.com/articles/what-is-rest
8. https://www.baeldung.com/tomcat-deploy-war
9. https://www.baeldung.com/java-servers

ALGORITHM: Trees

17
WEEK 10
SPRING SECURITY

TOPICS / MODULES
1. Hashing/Hashing Functions
2. Salting
3. Authentication and Authorization
4. JWT
5. Spring Security
6. OAuth
7.
LEARNING OBJECTIVES (MUST-KNOW)

DECADEVS MUST-KNOW;

1. Hashing and how it works


Resources
https://www.baeldung.com/java-password-hashing
https://searchsqlserver.techtarget.com/definition/hashing#:~:text=Hashing%20is%20the%20process%2
0of,the%20implementation%20of%20hash%20tables

2. Salting
Resources
https://www.thesslstore.com/blog/difference-encryption-hashing-salting/

3. Differentiate between Authentication and Authorization.


Resources
http://www.differencebetween.net/technology/difference-between-authentication-and-authorizatio
n/

4. Understand what JWT is and its parts


Resources
What is JWT ? JSON Web Token Explained

5. Understand how Spring Security works


a. Configuring the WebSecurityConfigurer
b. Creating filter class and implementing the once per request filter
b. Adding the JWT dependency and creating the JWTUtil class(creating the methods to generate
JWT, verify token, user and time
c. Creating a Authentication controller for login and UserDetails verification

Resources
18
https://www.netjstech.com/2021/02/spring-boot-spring-security-jwt-authentication.html (Spring
Security with JWT Role-based)
Spring Security | FULL COURSE
Spring Security Basics
https://www.javainuse.com/spring/boot-jwt

OTHER LEARNING RESOURCES

https://www.marcobehler.com/guides/spring-security
https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol
https://www.geeksforgeeks.org/lightweight-directory-access-protocol-ldap/
https://howtodoinjava.com/spring5/webmvc/spring-mvc-cors-configuration/
https://howtodoinjava.com/servlets/java-cors-filter-example/

ALGORITHM: Trees
TASK

Blog(REST API)

Create a blog platform where users can register, login and can post their thoughts and comments. Users
can also like and dislike posts and comments. Users should be able to add posts to favorites and create a
connection with other users. As a user, I should be able to view the posts of everyone on the platform
and also view the posts of all my connections only.

Users should also be able to deactivate/delete their accounts, the deactivation should not happen
immediately but should be scheduled to run a certain time after the user deactivates. This allows the
user to cancel the deactivation before its due date.

Tools

· Spring Boot

· PostgreSQL

· Git

· JDBC Template

· JUnit/Mockito

Expectations

· Ensure your code is DRY.

· Make sure your endpoints follow correct REST api patterns.

· Basic OOP should be used.

· Apply various optimizations where necessary(e.g pagination).


19
· Efficient SQL custom queries should be used where needed.

· Exception Handling

· Custom response structure both on success and failure

· Implement searching for blog post title and comment.

· All part of your code should be tested

· Database design should be normalised and entities should have necessary relationship mapping

· Add timestamp to your tables where necessary

Assessment Criteria

1. Codebase is fully tested.

2. All SQL queries are efficient

3. Efficient table mappings

4. Defined response format

5. Codebase is clean and 100% DRY.

20
WEEK 11
DOCKER, CI/CD

1. Docker
2. CI/CD
LEARNING OBJECTIVES (MUST-KNOW)

DECADEVS MUST-KNOW;

1. Know how to containerize Java/Spring application

Resources
https://docs.docker.com/get-started/
https://www.javatpoint.com/docker-tutorial
https://docker-curriculum.com/
https://hackernoon.com/practical-introduction-to-docker-compose-d34e79c4c2b6
https://gabrieltanner.org/blog/docker-compose
https://www.udemy.com/course/docker-course-with-java-and-spring-boot-for-beginners/learn/lecture/1
6381836?start=0#overview

2. Understand the reasons behind CI/CD and How to implement Circle CI/Github Action

Resources
https://www.redhat.com/en/topics/devops/what-is-ci-cd
https://circleci.com/docs/2.0/getting-started/
https://github.blog/2022-02-02-build-ci-cd-pipeline-github-actions-four-steps/

OTHER LEARNING RESOURCES

3. https://www.redhat.com/en/topics/api/what-is-a-rest-api
4. https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
5. https://www.nginx.com/blog/introduction-to-microservices/

21
WEEK 12
INTRO TO REACT

1. Understand the component model.


2. Understands how to think in React.
3. Understand the useState and useEffect hooks
4. Write tests with React Testing Library
Resources
https://codewithmosh.com/p/mastering-react
https://www.javatpoint.com/reactjs-tutorial
https://epicreact.dev/

WEEK13
ROUTING IN REACT. CONSUMING APIS. TESTING

1. Knows how to use React Router and link to pages in React.


2. Understands how to use restful-react and fetch to consume apis in react.
3. Can write tests for react apps that consume apis

Resources
https://codewithmosh.com/p/mastering-react
https://www.javatpoint.com/reactjs-tutorial
https://epicreact.dev/

22

You might also like