Top Background

Resources

All about Therap Javafest Screening Test

The Therap Javafest Screening Test is the first hurdle that every candidate needs to overcome. It might sound intimidating at first but we can assure you that there is nothing to worry about. In this post, we will breakdown the screening test in detail and provide a few technical resources to make your journey a bit easier.

What is the Screening Test?

The Screening Test is an online exam that every Therap Javafest candidate must participate in order to move to the next round. The exam will be for around 45 min to 1 hour. There will be around 20 to 25 MCQ questions.

You can start the test at any time between 8 pm to 11 pm on the day of Screening Test. So, we suggest that you start the test as early as possible so you will have enough time to avoid unanticipated situations like unexpected power failure or internet connectivity problems.

The Therap Javafest Screening Test must be conducted by each contestant individually. No help from fellow people or the Internet should be sought. It is a serious violation of the contest rules if any such means is utilized to score better in the screening test.

What topics will be covered in the Screening Test?

Programming:

  • Array manipulation
  • Control flow
  • Iterative programming
  • Method call

Java:

  • Data types
  • Knowledge of String, I/O, java.util.*, Math API
  • Parsing with StringTokenizer/Scanner API
  • Collection Framework

Data Structure:

  • Composite data structure
  • LinkedList manipulation
  • Stack/Queue operations
  • Traversing Tree data structure
  • Basic Search/Sorting algorithm
  • Recursion

Object Oriented Programming:

  • Basic concept of OOP
  • Class design

Puzzle:

  • Simple puzzle
  • Math Puzzle

Technical Resources:

Web Application Development : Choosing the right technology

Therap Javafest is a nationwide application development competition for undergrad students to create web applications to demonstrate their skills. We are aware that with so many options available, choosing the best technological stack can be difficult. To ensure fairness and streamline the process, we have specified a certain set of technologies for participants to use when building their applications.

Technology Stack

Backend Development

  • Java: A robust, object-oriented programming language widely used for building enterprise-level applications.
  • Spring Boot: A framework that simplifies the development of production-ready applications by providing a range of non-functional features common in large-scale projects.
  • Spring MVC: A model-view-controller framework that offers a structured way to build web applications and services.

Frontend Development

  • HTML: The standard markup language for creating web pages.
  • Thymeleaf: A modern server-side Java template engine for web and standalone environments.
  • JSP (JavaServer Pages): A technology used for developing web pages that support dynamic content.
  • JSF (JavaServer Faces): A Java specification for building component-based user interfaces for web applications.
  • JavaScript: A versatile programming language essential for creating interactive and dynamic web pages.
  • React: A JavaScript library for building user interfaces, particularly single-page applications.
  • Vue: A progressive framework for building user interfaces, focusing on an approachable core library with an incrementally adoptable stack.

Styling

  • CSS: A stylesheet language used for describing the presentation of a document written in HTML or XML.
  • Bootstrap: A popular framework for developing responsive and mobile-first websites.
  • MUI (Material-UI): A React component library that implements Google’s Material Design.
  • Tailwind CSS: A utility-first CSS framework for rapidly building custom user interfaces.

AI Development

  • Python: A high-level programming language known for its simplicity and readability, widely used in artificial intelligence and machine learning.
  • Java: Also suitable for AI development, particularly in enterprise environments.
  • Ready-made APIs: Pre-built APIs that provide various AI functionalities, allowing for easier integration into applications.

Architectural Patterns:

Participants can choose between two architectural patterns for their applications:

  • Monolith Architecture
  • Microservice Architecture

Java, AI and more

In today’s technology-driven world, the ability to integrate different components and systems is paramount. Aspiring developers and students often seek practical projects that provide hands-on experience with building robust applications using diverse technologies. In this blog post, we will explore an exciting project that combines Java, Python, and React to create a comprehensive solution. Our main objective is to guide students through the process of building a Java web-based API that seamlessly communicates with an AI model.

Project summary

In this tutorial, we will build an image-tagging application. Users will be able to upload a photo of any animal, and the app will leverage AI to identify the animal in the image. While the application will be user-friendly and easy to understand, it will integrate a variety of technologies. This application will comprise three separate components: the frontend, backend, and AI model. Let’s delve into each of these parts in detail.

AI model

To classify image, we chose to use google’s Vision Transformer base model (ViT-B/16) which is trained and fine-tuned on ‘ImageNet-21k’ and ‘ImageNet 2012’ datasets respectively. We have created and exposed a rest endpoint (http://host:port/prediction) so that user can send http request to classify images. For this, we have used python and dockerised it. All you need is to install docker and run it! We have uploaded the complete source code and related details in the resource section below for your convenience. Also, feel free to use any free AI model API available on the web.

Backend

You might wonder why we need an additional application when we already have an AI model as a restful web app? Well, the sole purpose of the AI model services is to receive and classify images. However, an application must also handle other functions such as authentication, authorization, user creation, and other business logic related factors. These tasks fall outside the purview of the AI model service. Therefore, we need a separate restful application to manage these tasks.

We have used Spring Security to implement JWT token based authentication system. The core part of the application is its ability to accept an image request from the user (frontend), forward it to the AI model service for tagging, receive the results back from the AI model service, and then relay the response back to the user.

the /upload rest endpoint is responsible for this task and the code will like this:

Frontend

Since, this will be an image tagging application, we need an UI to upload image and view the result. For this, we chose react to build the UI.
There will be no How to use react section here. Rather, the main purpose of this blog is to show you how separate parts of the application work together.

The forntend we have built, will look like this:

By clicking upload button, you can upload an image. In the screenshot, as you can see, we have uploaded an image of an Elephant. If we click on the image, it will show the name of animal on that picture in a popup modal.

Putting it all together

Start by running the AI Model docker container on port 8085 on your local machine, followed by launching the backend Java application on port 8080. Lastly, start the React frontend application. With these steps, you’re all set to explore this amazing application. All the source code links of this project are given in the resource section bellow.

Resources

Programming:

Therap Javafest Evaluation Criteria

Once a participant’s proposal is accepted, their final and most important task will be to build their project for Therap Javafest to completion. Along the journey of developing their final projects, the participants will be guided by a panel of industry experts through feedback.

Project evaluation starts from the submission of project idea to final presentation. Based on the project idea, we will judge the completeness of your project. Clean code matters. We will see if you have used the recommended technology stack or not. Only developing the software is not the end if you don’t deploy it in the cloud!

Team effort and effective collaboration brings the best out of you. Version control and build system play a vital role in team work.

Finally, we expect you to make a YouTube video presenting your software system and share the link with us so that we can have a better understanding of the system.

Considering all of these, projects submitted on the Therap Javafest will be evaluated based on the following criteria:

Project Idea 10
Project Completeness 20
Code Quality (Clean Code) 10
Technology (framework/library) usage 10
AI integration 10
Cloud deployment 10
Team Effort & Version Control Usage (git) 5
Build System (Gradle/Maven) 10
YouTube Presentation 5
Live Presentation 10
Total 100

So, work hard and give your best on each section mentioned above. We are waiting to see your wonderful projects!