The Ultimate Disassembler

Java tutorial for Capstone

1. basic sample.

Capstone has a very simple API, so it is very easy to write tools using the framework. To start, the below code disassemble some X86 binary, and print out its assembly.

import capstone.Capstone; public class Test { public static byte [] CODE = { 0x55, 0x48, (byte) 0x8b, 0x05, (byte) 0xb8, 0x13, 0x00, 0x00 }; public static void main(String argv[]) { Capstone cs = new Capstone(Capstone.CS_ARCH_X86, Capstone.CS_MODE_64); Capstone.CsInsn[] allInsn = cs.disasm(CODE, 0x1000); for (int i=0; i<allInsn.length; i++) System.out.printf("0x%x:\t%s\t%s\n", allInsn[i].address, allInsn[i].mnemonic, allInsn[i].opStr); } }

Readers can get the code from here . Output of this sample is like below:

The structure CsInsn exposes all the internal information about the disassembled instruction we are looking at. Some of the most used fields of this structure are presented below.

2. Architectures and modes

At the moment, Capstone supports 8 hardware architectures with corresponding hardware modes, as follows.

Besides, there are few modes to be combined with basic modes above.

The way to combine extra modes with basic modes is to use the operand + . For example, the excerpt below initializes Capstone for Mips64 in little endian mode.

3. Set options

Capstone lets we customize the engine at run-time, so we can set the assembly syntax or turn on detail information.

3.1 Syntax option

By default, X86 assembly outputs in Intel syntax. To switch to AT&T syntax instead, we can simply set syntax option like below.

In case we want to return to Intel syntax, we can reset the syntax in the similar way:

3.2 Turn on details

By default, Capstone do not generate details for disassembled instruction. If we need information such as implicit registers read/written or semantic groups that this instruction belongs to, we need to explicitly turn this option on , like in the sample code below. However, keep in mind that this costs more memory, complicates the internal operations and slows down the engine a bit, so only do that if needed.

However, we can always reset the engine back to default state with similar method.

4. More examples

This tutorial does not explain all the API of Capstone yet. Please find more advanced examples in source of Test*.java files under Java binding directory bindings/java in the Capstone source code.

Yusuf Pisan

java capstone project github

Capstone and Project Ideas

This document is located at https://pisanorg.github.io/yusuf/capstone-ideas.html

To apply for a capstone project, see my CSSE Capstone Guidelines

Below are some potential capstone and project ideas. I am open to supervising a much broader range of capstone topics. I prefer students who have already taken some of my courses, and have done well in them, but even if you did not shine in the classroom, you can still pitch your project. See past capstone projects

For Summer 2020 and 2021, I am especially looking for students for 1000 Problems with Automated Feedback, Games for Change, 100 Unity Mechanics for Programmers, and Building a Mind: Everyday Reasoning to Expert Reasoning.

Computer Science Education

1000 problems with automated feedback.

The goal of this project is to build the tools and content to provide automated feedback to students on a large set of programming problems. This project will require multiple teams of students and will likely go on for several years. Each capstone project will make a specific contribution. There are several parts to the project:

Creating the problems and solutions in a structured way. For each problem, there might be 5-10 variations. The text for each problem, the solution, tags and possible hints has to be individually crafted. You will explore how to create a structure to ensure consistency across problems as well as writing the solution to problem. DocBook is a possible format, but will probably have to be expanded.

Compiling and presenting problems. The problems might be stored in a database or a set of directories. You will explore how they can be compiled and presented as an easy to navigate set of web pages. Feedback tools. Checking that a program compiles and the input-output matches for a large set of tests is the first step, but we can do so much more in terms of providing feedback. For C++, clang-tidy https://clang.llvm.org/extra/ has a large number of checks. Some of the checks also propose fixes. Building a similar system, or a set of systems, for Java is part of the goal.

Instructor imitator. Different instructors provide different feedback to students, or even the same instructor might provide different feedback on assignment-1 versus assignment-5. Capturing these preferences and customizing the feedback based on problem and instructor persona is the goal for this project.

Building on top of existing tools. The systems we build need to work with existing tools and formats, but we may need to build bridging applications. For example, GitHub Actions can be used to provide feedback, but we may want to provide another interface that interfaces with GitHub and other programs rather than asking the end user to learn and use multiple systems. Using YAML to express configuration information rather than building our own tools from scratch.

Knowledge tracker. Tracking user knowledge based on what programs they have completed, suggesting programs to enhance their knowledge or suggesting programs to ensure they have sufficiently grasped the concept.

Testing and Evaluation: Having this system integrated into a course would be ideal, but there is other testing and evaluation that can be done through talking to experts and surveying students. Looking at the existing literature on how to evaluate action research. Do we expect students to have higher course scores when using this system? Do we expect them to feel different? Do we expect them to be more self-directed learners? How would we measure each of these hypotheses?

Misconceptions

Novice programmers have lots of misconceptions on how the program works. Until those misconceptions are identified and corrected, these students will continue to struggle.

Create a large catalog of misconceptions. [ 1 , 2 , 3 ]

  • Take 3-5 misconceptions and create diagnostic tools for identifying if a student has those misconceptions or not. The diagnostic tool can be a web based survey, an interview or in some other format.
  • Create a set of web-based, self-guided exercises where students can examine their own misconceptions and correct them.

Feedback is crucial to learning, but students often receive limited feedback. There are industrial strength tools that can be used to provide feedback, but these tools often produce cryptic messages which confuse novice programmers even more. There are many systems that test a given program on a large set of possible inputs to determine if the program is correct, such as zybooks , leetcode , codelab , recurtutor , uAssign etc. These systems are useful because they are easy to build, but do not incorporate any pedagogical knowledge. They have no way of guiding a student to a suitable next problem based on the types of mistakes (or misconceptions) observed. There is much that can be done in this area.

For novice students, using complex tools to analyze programs can be difficult and frustrating. Create a web-based system that can enforce and check the assignment constraints. For example, an instructor might want the assignment submitted as an ass.zip file with specific files in it whereas another instructor might request individual files to be uploaded. Creating a language (i.e. simple configuration file) that can be used by instructors and a front-end that can check students’ will be useful.

Non-Traditional CS Students

We need to attract and retain nontraditional CS students. There is work to be done at university, high school, and middle school levels as well as societal perceptions. Research shows that facts alone are not sufficient to change beliefs. Explore how we can change beliefs about CS at any of the levels.

CS for Social Good

CS for Social Good . Projects that make the world a better place.

Artificial Intelligence

AI is much more than machine learning. I am interested in symbolic artificial intelligence and explainable artificial intelligence.

Building a Mind: Everyday Reasoning to Expert Reasoning

There are lots of way to get computer to process facts and reach conclusions: case-based reasoning, analogical reasoning, qualitative reasoning, theorem provers, rule engines, classifiers, machine learning systems, etc. Some of these reasoning systems also allow the programs to explain “how” they reached their conclusion and “why” the conclusion is valid.

For this project, we will use http://pyke.sourceforge.net/ (or a similar program) to build a set of different reasoners from Building Problem Solvers http://www.qrg.northwestern.edu/BPS/BPS-Searchable.pdf Each chapter can be viewed as a separate project. For each chapter, a set of web pages with examples of solving a specific set of problems will be created.

A more ambitious goal and an extension of this project will be to use NextKB http://www.qrg.northwestern.edu/nextkb/index.html on a set of different reasoning tasks

Video Games / Augmented and Virtual Reality

Games for change.

http://www.gamesforchange.org/ aims to drive real-world impact through games and immersive media. Pick a goal that you care about, gather some background information on the topic, find an angle to turn it into a game. 50% of this project is the research on the goal topic and 50% on implementation. Topics such as “climate change” or “recycling is important” are too broad to address in a single game. Have a look at some of Ian Bogost’s games at http://bogost.com/games/persuasive_games_1/ ; understand why Airport Security game is a satire. Examine games from http://blog.h1n1.influenza.bvsalud.org/en/2009/10/07/find-out-more-about-influenza-by-playing-games/ helps people understand influenza a bit better. Your idea needs to be sophisticated enough and you need to be able to express why the opposite sides/perspectives have their own valid structured reasons for their position. The final deliverable for this project will be a position document and a simple, tested working game.

Digital Toys for Learning

Aimed at elementary and middle school age students. Would be appropriate for a student interested in the integration of physical and digital toys. For example, create physical puzzle pieces that when completed create a QR code which can be upload into a website allowing them to learn more about a particular concept (e.g., astronomy, physics, etc.).

Another toy/game idea is building items in Roblox or Minecraft expanding on the educational initiatives of both companies.

Students could also create physical/digital game to teach programming to kids. I was thinking that students could first research what is out there and come up with a prototype.

VR/Games and Health

Building off research done involving VR and pain management. Focus on the use of games and VR to create meditative states which could be monitored via wearable devices. Could also expand to look at the use of wearables to influence and monitor emotional states.

Heath Game – Parkinson’s Disease

Building on Wanda Gregory’s earlier research on this concept. Exploring ways for individuals with young persons Parkinson’s to deal with the “demons” that they might encounter in their daily lives. I’ve been thinking about quests and “demons” based on such things as fatigue, depression, mind fog, etc. that they might encounter and find ways to deal with.

VR and Learning

How might VR be used to teach math? chemistry or physics in either a classroom or multiplayer setting? Students could explore VR and game design, via Rec Room which is a Seattle based company (they also are looking for interns summer 2020) to build such experiences.

100 Unity Mechanics for Programmers

Even for experienced programmers, Unity provides a challenge. There are lots of different ways of doing things and finding the correct tutorial and extracting the right Unity function can be very difficult especially for newcomers who are not familiar with vocabulary. This project will produce 100 sample programs where each program demonstrates a different mechanic.

For example, WASD for movement will be a Unity program that shows how an object would move using WASD keys. Nothing more. Jumper might be a program that shows how to execute a jump like action with different parameters. We can use https://inventwithpython.com/blog/2012/07/30/need-a-game-idea-a-list-of-game-mechanics-and-a-random-mechanic-mixer/ for different mechanics as well as Physics for Game Developers http://shop.oreilly.com/product/0636920012221.do to implement each mechanic. Each mechanics will be demonstrated as simply as possibly and have a corresponding web page that explains it.

Something Different

If you have an idea that does not fit into the above categories, you are still welcome to pitch it. Follow the advice from https://csedresearch.org/conducting-research/ and include the following four headings in your proposal.

  • Research question - what will be the new knowledge
  • Approach - building a software, running surveys, examining literature
  • Evaluation - how do we evaluate the end result, what would be classified as a successful result and what would be unsuccessful
  • Existing Research - what has been done that is similar to this, what research does this project follow from. Must have at least 3 references

iNetTutor.com

Online Programming Lessons, Tutorials and Capstone Project guide

List of Completed Capstone Projects with Source code

Our team has put up a list of Capstone Project ideas in this article. The capstone projects indicated below are finished, and the source code is available as well. The information in this article could aid future researchers in coming up with distinctive capstone project ideas.

Choosing a topic is the most important and first stage in your capstone project journey as a student or researcher. If you choose a topic without giving it much thought, you may fail. To begin, make sure you’re passionate about the topic and convinced that the research portion will never tire you. Second, make sure it aligns with your curriculum and allows you to show your teacher what you’ve learned in class while still being applicable in the real world. The finished capstone project title ideas with the source code listed below may be useful to future researchers.

  • Vehicle Franchise Application Management System

A vehicle has become a large part of our daily commuting needs. People use a vehicle to get to work, visit places, and for moving around to run errands. The capstone project, entitled “Vehicle Franchise Application Management System”, is a system designed to automate the process of applying for vehicle franchises. This project will eliminate the manual method which costs a valuable amount of time and effort and is also prone to human errors.

  • Medical Equipment Monitoring System

The extended use of technology and smart devices in medical fields has brought a huge effect on the world’s health care. Hospital now uses medical tools not only for the services they render to their patients but also for the betterment of the hospital’s medical equipment. Medical equipment is essential especially since they are used for treating different medical conditions. The capstone project, titled “Medical Equipment Monitoring System” is designed to automate the process of monitoring medical equipment in the hospital. This is to ensure that they are in a good condition and will not suddenly malfunction and wear out. The system will also help track and monitor numbers of medical equipment in the hospital to tell whether it has enough that can support the needs of the patients.

  • First Aid Mobile Application

The capstone project, “First Aid Mobile Application” allows users to provide first aid during an emergency. The mobile application will provide the step-by-step process of doing the first aid for the specific injury or illness. By definition, first aid is immediate medical attention or treatment for anyone who has suffered a sudden illness or injury. Knowing first aid is essential to respond to emergency cases and be able to relieve pain, maintain life, promote recovery and prevent the patient’s condition from worsening until professional medical help arrives. The application is available for download and use in emergencies. The user just has to input the injury or illnesses that occur unexpectedly, and the application will provide them with the step-by-step process of administering first aid.

  • Mobile Learning Application (Math, Science, etc)

eLearning is an excellent opportunity to broaden the scope of the learning experience, as it allows learners to carry on learning while they’re on the move. However, their needs and expectations are not the same as when they are in a classic e-learning setting. One of the key challenges of mobile learning is how to articulate mobile learning and e-learning seamlessly so that the learning experience remains coherent and fluid.

The purpose of the said application is to promote the learning about different subjects such as math, science, and other subjects. This application offers a variety of subjects that the user can learn from when they use the application.

  • Ticket Support Management System

The project entitled Ticket Support Management System is an online platform designed to manage issues, concerns, questions, and conversations between customers and the support team. It is used to control and monitor queries from customers and to provide a proper and effective way of communication to provide feedback and solutions to customers.

The said project was designed in Bootstrap and then converted into a PHP file. The ticket includes a code, description, and the assigned support member which is the role of the moderator. The process of conversation will be recorded in the system for archiving purposes and once the issue has been solved the moderator will send a message to the client that the query has already been solved and it will be marked as closed. Closed tickets will not be entertained and the customer will need to create or request another ticket if new issues will arise.

  • Web and Mobile Based Brgy Management System

The core function of this study is to offer a detailed reliable and secure keeping of all data. Web-Based Barangay Management System with Mobile App Support Application hopes to enhance the way of managing, issuing a certificate, and keeping all the resident’s confidential records.

This system facilitates Barangay management by enabling the client barangay to maintain their resident records as complete and up-to-date as possible and as easily accessible for verification, monitoring, and reference purposes based on the available residents’ census data kept by the client Barangay. Data provided by this system in the form of comprehensive reports are invaluable for planning, program implementation, and related purposes .

  • Veterinary Scheduling and Sales Management

The capstone project entitled “Veterinary Scheduling and Sales Management System” is an online platform that caters to the needs, requirements, and business processes of a veterinary clinic. This article is about the use case diagram of the said capstone project. As presented in the image below, the Veterinary Scheduling System has 6 core modules and 3 actors can access the modules according to their roles.

The client can access the client profile, product management, services offered, payment, and schedule appointments. Secretary can access the entire core modules of the project while the veterinarian can only access the scheduled appointment and reports module.

  • Person with Disability Information System

The capstone project entitled “Person with Disability Information System” is an online platform to manage and archive records about the person with a disability or PWD per barangay in a city. A standard profiling form will be used and it will be encoded into the system for a digital record of the PWD. With the implementation of this project, the researchers are hopeful that the system would be a great help not only for monitoring purposes but for information dissemination as well.

  • Medical Dictionary Application

Medical Dictionary Application is a capstone project designed to serve as a source of information in terms of medical terminologies. The application will contain medical terms, abbreviations, and their meaning. The application can be used by both iOS and Android users. The application will help the end-users put in their own hands the information they wish to know. This medical dictionary will be of great help for those who seek to gain knowledge. The application will also help medical students in their studies, they will have an accessible source of information if they have difficulty understanding some terms in their lessons.

  • Elearning System with SMS Notification

The new learning paradigm in the educational system encourages students to be in control of how they learn, and the teachers to let go of their control over the learning process in the classrooms and begin to function as designers and facilitators of learning. Teachers assist their students to develop independent learning skills, understand the strengths and weaknesses of open learning, and be able to develop and deliver educational materials more creatively, effectively, and efficiently.

The purpose of this study is to provide an IT-based solution in the field of education. The researchers will create and develop an eLearning platform that will allow their faculty members to upload their lecture material and assess their students using the test and exam module of the project. In addition, the application is very helpful on the student side since they can now view and download their modules and take their examinations at their home.

  • HerbalCare Mobile Application

The project entitled “Herbalcare Mobile Application”, is a mobile application designed and developed in JQuery Mobile and Phonegap Build. The said project is a compilation of herbal medicines found in the localities of the Philippines which can be useful in some minor ailments such as cough, skin allergies, and others.

The project includes information about the herbal plants, their uses, benefits, and preparation.

  • Entrance Examination with SMS Notification

The entrance examination is a web/lan-based application that will run even if there is no internet connection. PHP, MySQL, and Bootstrap were used to design and develop the said project. The project will be set up in a secured server or computer unit in which an authorized person can only access the physical and software components of the server. The examination module can be accessed on the computers in the laboratories.

The project can also be accessed on mobile devices and SMS notifications and reports are automatically generated.

  • Reviewer Mobile Based Application

The mobile-based reviewer app is another method for learners to study and review their lessons using their mobile devices. The said project is available on both Android and iOS devices, it was written in Framework 7 and Apache Cordova, it is a hybrid type of mobile development where the HTML, CSS, and JS files can be converted into a mobile application.

The application contains lecture materials in a form of text, pdf, and video format. Assessment for every lesson in a form of multiple choices is also one of the functions of the mobile app. Scores and progress results are stored in the local storage of the device but the scores are also submitted to the instructor for monitoring purposes. The application can be used offline which means that the users can still open their lessons and take quizzes even if their device has no internet connection.

  • Vehicle Impoundment Records Management

Vehicles are held in impounding yards if used as a sanctionable offense. Impounding officers faced difficulties in managing different records and information of impounded cars. The development of computerized systems and applications eases up operations of different sectors. The use of the systematic approach will ease up the management processes and operations of the vehicle impoundment management.

The capstone project, entitled “Vehicle Impoundment Records Management System” is designed to record, process and monitor impounded vehicles. The system will electronically manage all impounded vehicle-related information. From impounding up to releasing the vehicles. The system will eliminate manual processes done to complete transactions between the impounding officers, yards, and vehicle owners.

  • Network-Based Laundry Management System

The capstone project entitled “Network-Based Laundry Management System” is a web-based system that allows shop owners to automate the process of records management. It is also intended to properly record the payment of customers to generate accurate reports of income. It is a database-driven application that manages the records and transactions of the laundry shop. The said system helps smoothen and improvise the dry cleaners and laundry business management service workflow like laundry record-keeping, laundry billing, and report generation.

  • Doctor Appointment System

The project entitled Doctor Appointment System is an online platform that allows the customers/patients to register their information online. After the approval of the account, they can now log in and request an appointment with their doctors. The admin will serve as the middle man or secretary between the doctor and patient. The admin can manage the records of the system.

The said system was designed and developed in PHP, MySQL, and Bootstrap. Our team is willing to help you modify the project based on your specific requirements.

  • Parish Record Management with SMS

The Parish Office is offering the usual services that many of the parishioners have availed of or can avail of. Such services are mass scheduled for the city chapels and center chapels, baptism services, wedding services, and blessings for houses and other acquired properties. With the computer-based record-keeping, every transaction on the said services will be beneficial considering that automation of services is the key feature of the system.

With Parish Record Management with SMS, inputs of data will be made faster, scheduling of masses will be easier, baptism and wedding and special blessings services can be reserved and scheduled quickly by the personnel of the said office. Furthermore, reports can be generated correctly and efficiently, such as baptismal certificates, pre-Cana seminar certificates, and marriage contracts.

  • Web-Based Event Scoring Application

The capstone project entitled “Web Bases Event Scoring Application” will allow automated tabulation of scores during events or competitions. The system will allow the judges to electronically input their scores and the system will automatically tabulate the scores and provide the results of the contest. The proposed system will streamline the process of tabulating scores. Judges will use the system and enter their scores for every contestant in the competition. The system will electronically tabulate the scores and generate a result of the competition. The said project will make the tabulation process easy, fast, accurate, and convenient.

Online Tabulation System Free Download - Scoring Module

  • Mobile Application on Student Handbook

This project study is all about converting a handbook into an android application which is the researchers’ solution in preserving the handbook in a way that it will not be torn easily and protect it from water during the rainy season. An android based handbook that is accessible anytime and will be installed on android devices.

At the end of the study, we were able to create an android application for our school’s college department which outlines student rights, privileges, and responsibilities and provides information about how to get help with appeal requests, processes and procedures, and resources available from school system personnel.

  • Financial Management System with SMS

The capstone project, entitled “Financial Management with SMS” will allow organizations to electronically manage financial activities. The said project will serve as a platform where organizations manage and store information, especially financial reports. The financial management system will also have an SMS feature to notify members of the organizations of updates. The proposed system will streamline the process of managing and storing organizations’ information related to their finances, especially during events. The system will serve as a repository of information such as members’ information, events, financial records, and other related information. By using the system, records will be electronically safe and secured. The system will ease up the job of the finance department and the system will help them in lessening the errors encountered in carrying out the task. The system is easy, reliable, and convenient to use.

  • Salary Notification System with SMS

The researchers of this project aim to design and develop a system wherein employers and employees will have a private platform wherein they can provide updates about the employee’s salaries. The system will let employers manage and notify the employees about the summary of their salary and the details about the deductions in their salary. The system will also notify the employee about the amount deducted from their salary to avoid complaints and confusion as to why the salary is not intact. By having this platform, the employers and employees can discuss details about the salary in a confidential, convenient and fast way.

  • Faculty and Student Clearance Processing System

The capstone project entitled “Faculty and Student Clearance Application” is a web and mobile-based project that aimed to replace the manual method of processing the clearances of students and faculty. Clearance processing is very important to determine if the students and faculty members had complied with the requirements set by the school. The project was developed in PHP, MySQL, and Bootstrap, the following stated tools are usually used to design and develop a responsive application that can be accessed using a browser (desktop, laptop, mobile devices).

Student and Faculty Clearance System Free Bootstrap Source code - Clearance Requirements

  • Employee Personal Data Sheet Information System

The project entitled Employee Personal Data Sheet Information System is a web-based project using PHP, MySQL, Bootstrap, Visual Basic, and MySQL version is also available.

The system includes the profiling of personnel, keeping track of their academic achievements, seminars attended, and many more.

The said project is for the HR or human resource department which will help them in the record and archiving of their employee’s profile.

  • 4 Pics One Word Mobile App Game

The project entitled  4 Pics 1 Word Game in JQuery Mobile  is a web and mobile-based game application similar to the famous game of 4 pics 1 word. This can be installed on a stand-alone computer that can be accessed by the modern browser. It needs to be uploaded on the web directory of your server (xampp, uwamp, or wamp) since the application is powered by javascript. The application uses a hybrid development which is a type of mobile application development that uses front-end web technologies such as HTML, CSS, and Javascript, the project will be converted into a mobile application using Phonegap Build or Apache Cordova.

  • Web-Based Voting Application

The voting system especially with the contribution of a mobile application to our system has attracted lately the attention of many schools as manual voting to automatic voting with the hope the student’s to increase their participation and reduce the cost. While participation initiatives have been deployed across the schools with mixed results from the students. As the internet is highly known by everyone and used, a voting system with mobile application came as an alternative and easier way to vote automatically and thus was rapidly accepted.

Recent efforts to implement automated voting in schools faced many challenges, such as a lack of information communication technologies. The lack of trust in automated affects very seriously any effort to migrate from the manual voting procedures to an electric voting system since voting is a fundamental process in any school.

Online Voting Platform Dashboard Page

Technology is known as the catalyst for change that took place in different industries and institutions. Information Technology has changed the world dramatically. As of today, it is hard to imagine any sector or institution that has not benefited from the advancements in technology. The most common role that IT played in these sectors is the automation of different operations and transactions to increase efficiency and improve the overall experience and satisfaction of the people. The aforementioned capstone project ideas will be a great help in various industries.

You may visit our  Facebook page for more information, inquiries, and comments. Please subscribe also to our YouTube Channel to receive  free capstone projects resources and computer programming tutorials.

Hire our team to do the project.

Related Topics and Articles:

  • Capstone Projects and Thesis Titles for Information Technology
  • Thesis and Capstone Project for IT, IS and CS Students
  • Thesis System for IT and Computer Science
  • New and Unique Thesis and Capstone Project Ideas for Information Technology
  • Completed Thesis Project for Information Technology
  • List of Thesis and Capstone Projects for Information Technology
  • Web Based and Online Application for Capstone and Thesis Projects
  • Android and Mobile Based List of Capstone and Thesis Projects
  • Thesis and Capstone Project Title Compilation for Information Technology

Post navigation

  • Transcribe Medical System Database Design
  • Courier Logistics Software in PHP and MySQL

Similar Articles

Dormitory management system review of related literature, mobile application for library resource materials, business analytics and intelligence project ideas.

Welcome! This site is currently in beta. Get 10% off everything with promo code BETA10.

Capstone Project: Introduction

  • Introduction

What's the Project

Cli-based application, standalone project, object-oriented application, code reusability, tiered architecture, menu for user interaction, utilize jdbc, exception handling, bonus points, you've got this, project guidelines, bonus points.

Woohooo! You've made it (nearly) to the end of the core Java curriculum! Nice work!

It's now time to build out a proper Java capstone project that includes and utilizes all (or most) of the new skills and concepts you've learned.

Have an idea for a project you'd like to build? Perfect! Need help deciding? Not sure if something might work? No worries, reach out on Discord - we'd be happy to help you ideate and scope the project and help you along your way.

If you don't have anything particular that you'd currently like to build, we've come up with a fun project for you to work on that we think will do a great job of putting your new skills to work.

Either way, use the following guidance to ensure your project meets the requirements necessary to receive a certificate of completion for the course.

This project should be an interactive CLI-based application that utilizes a relational database. It should demonstrate clear comprehension of the course material and become something you can be proud of!

  • This project should be created outside of your labs project with its own GitHub repository.
  • The repo should contain a README file that clearly describes in detail how to set up, run, and use the project.
  • This project should demonstrate clean, organized code structure and abundant documentation (comments, JavaDoc, etc.)

Demonstrate an understanding of core OOP structure and principles, such as:

  • Classes and their members should be written with intention and purpose.
  • Methods should utilize parameters and return values when possible.
  • Objects should be passed between methods, layers, and classes.
  • It is not necessary to demonstrate all.

Methods should be very singular in focus. For example:

Could become:

In a tiered architecture, you should have the services as the link between the controllers and database(Controller <-> Service <-> Database).

It is recommended that you utilize a project structure similar to this:

A sample project structure view of the budgeting app in IntelliJ.

** What are the components**

  • The controller layer is your connection to the outside world. In this case, that means your CLI, where you interact with the user.
  • The service layer holds your application's business logic. This is where data is processed, sorted, filtered, modified, etc.
  • The data layer interacts directly with your database. This is where the database connections and queries occur.
  • The model package houses all of the basic Java POJO's

The controller is responsible for user interaction. The controller then interacts with the service layer, which in turn interacts with the data layer (and other services). The controller should never directly access the data layer.

** What are the packages **

  • controllers - Inside the controllers package will be all classes that interface with the user and print out menus, etc.
  • data - Inside the data package will be all classes & methods that interface with the database. These methods will be called from methods within the services package.
  • model (or models) - The model package will contain all the POJOs required for your application. These can be used to model data retrieved from the database.
  • services - Inside the services package will be the core logic of the application. Here, you'll find all the methods that calculate all the budgets/savings/goals, etc. These methods will be called by methods from within the controllers package, as well as other methods from within the services package.

You can change these packages as necessary, and you can create as many sub-packages as necessary to keep the project nice, clean, and organized.

  • This will be accomplished in one of your controllers via the CLI.
  • Provide CRUD (Create, Read, Update, Delete) Functionality
  • Create and update records based on user data input.
  • Display data read from the database neatly.
  • Gracefully handle potential exceptions. Some exceptions are easily known (for example, SQLException ). Others are more difficult to plan for, especially if they are caused by bad user input. Look for potential IndexOutOfBoundsExceptions or NullPointerExceptions .
  • Have a service method “throw” an exception back up to its calling method in the controller, where information can be passed to the user about what happened. You never want the user to see a stack trace; this should be easy to read:

Instead of:

  • Demonstrate the use of custom exceptions to better control flow.
  • Demonstrate the use of multithreading.
  • Demonstrate file I/O.
  • Demonstrate interesting data analysis.
  • Demonstrate the use of interesting data structures.
  • Create a really nice README file. Checkout MakeAReadMe for a great way to get started.

Alright, with guidance in hand, it's time to get started! If you're building a project all your own, go ahead and get to it. If you're struggling a bit or would like some additional guidance - head to the next page and continue through this section.

Colorful illustration of a light bulb

Even if you choose to build your own project, the remaining pages in this section might still prove very helpful. If you get stuck, come back here for some help and inspiration!

Summary: Final Project Introduction

  • This final project utilizes everything you've learned in this course
  • You have the option to create your own idea for the project or use the default idea created by the CodingNomads team
  • For any doubts, confirming project ideas, or other please chat with the CodingNomads team in Discord
  • Be a CLI-Based Application
  • Be a Standalone Project
  • Incorporate Object Oriented Programming
  • Apply Code Reusability
  • Include a Tiered Architecture
  • Create a Menu For User Interaction
  • Utilize the JDBC Database
  • Create Exception Handling
  • Demonstrate the use of multithreading
  • Demonstrate file I/O
  • Demonstrate interesting data analysis
  • Demonstrate the use of interesting data structures

Instantly share code, notes, and snippets.

@michaelakbu

michaelakbu / Capstone.java

  • Download ZIP
  • Star ( 1 ) 1 You must be signed in to star a gist
  • Fork ( 0 ) 0 You must be signed in to fork a gist
  • Embed Embed this gist in your website.
  • Share Copy sharable link for this gist.
  • Clone via HTTPS Clone using the web URL.
  • Learn more about clone URLs
  • Save michaelakbu/fc436852f9c37e23c26d74c84a5c7da9 to your computer and use it in GitHub Desktop.
*ATM Machine*
//Carries out basic atm functions
//Pass word should be all numbers (pins)
import java.util.Scanner;
class abm {
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
//Creating a user name and password//
System.out.println("Create an account");
System.out.println("---------------------------");
System.out.print("Enter name: ");
String name = scan.nextLine();
System.out.print("Enter password: ");
if (!scan.hasNextInt()){
String word = scan.next();
System.err.println(word+" is not a number, please enter a number");
}
int password1 = Integer.parseInt(scan.nextLine());
System.out.println("Account is created, proceed! ");
System.out.println("---------------------------");
// ABM code starts//
int x = 3;
int apassword1;
//account loop//
while(x > 0) {
System.out.print("Enter name: ");
String aname = scan.nextLine();
System.out.print("Enter password: ");
apassword1 = Integer.parseInt(scan.nextLine());
x--;
//if warning statement//
//if statement to break loop or to print out if loop failed//
if (apassword1 == password1 && aname.equals(name)){
System.out.println("---------------------------");
System.out.println("Information valid, Proceed!");
System.out.println("---------------------------");
break;
}else if (x == 0){
System.out.println("---------------------------");
System.out.println("The data you entered is incorrect!\nTry again later.");
System.out.println("---------------------------");
System.exit(0);
}else if (apassword1 != password1 || !aname.equals(name) ) {
System.out.println("---------------------------");
System.out.println("Incorrect data, try again! "+x+ " chances left.");
System.out.println("---------------------------");
System.out.println();
}
}
// ABm Menu//
int deposit ;
double amount = ( 0.00);
do {
//
System.out.println();
System.out.println("Welcome to the Bank of Nassau");
System.out.println("Customer: "+name);
System.out.println();
System.out.println("ABM Menue");
System.out.println("---------------------------");
System.out.println("1. Withdraw\n2. Deposit\n3. Check Balance\n4. Logout");
// case statements for abm menu//
int menue = scan.nextInt();
// amount entered//
double am;
switch(menue){
case 1: System.out.println();
System.out.println("Account Withdraw");
System.out.println("---------------------------");
System.out.println("Amount: $"+amount);
System.out.println("---------------------------");
// withdraw calculator//
System.out.println();
System.out.println();
System.out.println("Account Withdraw");
System.out.println("---------------------------");
System.out.print("Amount withdrawed: $");
am = scan.nextDouble();
//Loop statement//
if (menue == 1 && am <= amount ){
amount -= am;
}
if (am > amount)
{
System.out.println();
System.err.println("You do not have sufficient balance! ");
}
System.out.println("Current Balance: $" +amount);
System.out.println("---------------------------");
System.out.println("1. Return\n2. Exit");
int ret = scan.nextInt();
if (ret == 1){
}else if (ret == 2){
System.exit(0);
}
break;
case 2: System.out.println("Account Deposit");
System.out.println("---------------------------");
System.out.println("Amount: $"+amount);
System.out.println("---------------------------");
System.out.print("Amount deposited: $");
am = scan.nextDouble();
//Loop statement for amount deposit //
if (menue == 2){
amount += am;
}
System.out.println("Current Balance: $" +amount);
System.out.println("---------------------------");
System.out.println("1. Return\n2. Exit");
ret = scan.nextInt();
if (ret == 1){
}else if (ret == 2)
System.exit(0);
break;
case 3:
System.out.println();
System.out.println("Current Balance");
System.out.println("Savings: "+amount);
System.out.println("---------------------------");
System.out.println("Amount: $"+amount);
System.out.println("---------------------------");
System.out.println("1. Return\n2. Exit");
ret = scan.nextInt();
if (ret == 1){
}else if (ret == 2)
System.exit(0);
break;
case 4: System.out.println("See you later. Thank you.");
System.exit(0);
break;
}
}while (true);
}
}

Toward an AI Knowledge Assistant for Context-Aware Learning Experiences in Software Capstone Project Development

New citation alert added.

This alert has been successfully added and will be sent to:

You will be notified whenever a record that you have chosen has been cited.

To manage your alert preferences, click on the button below.

New Citation Alert!

Please log in to your account

  • Information & Contributors
  • Bibliometrics & Citations
  • View Options

IMAGES

  1. GitHub

    java capstone project github

  2. GitHub

    java capstone project github

  3. GitHub

    java capstone project github

  4. Capstone-Project/NavigationFragment.java at master · TwinkleRing

    java capstone project github

  5. GitHub

    java capstone project github

  6. GitHub

    java capstone project github

COMMENTS

  1. capstone-project · GitHub Topics · GitHub

    To associate your repository with the capstone-project topic, visit your repo's landing page and select "manage topics." GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.

  2. capstone-project · GitHub Topics · GitHub

    GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects. ... Capstone project for the OOP IT3100E course, semester 20232 at Hanoi University of Science and Technology (HUST). ... Capstone project for "Java Programming: Build a Recommendation System by Duke ...

  3. Java + Spring Boot Capstone Project Overview & Ideas

    Create an account and accelerate your career. Embark upon the final stage of your Advanced Java & Spring course with a capstone project. This project will incorporate significant aspects such as Spring Data, Security, MVC, Thymeleaf integration, and third-party API interactions to create a production-ready application.

  4. Programming with Java language

    Java tutorial for Capstone 1. Basic sample. Capstone has a very simple API, so it is very easy to write tools using the framework. To start, the below code disassemble some X86 binary, and print out its assembly. ... Capstone lets we customize the engine at run-time, so we can set the assembly syntax or turn on detail information. 3.1 Syntax ...

  5. Java + Spring Boot Capstone Project Checklist

    Your project should be a modern MVC web application with a fresh and custom design. Ensure you create original content, avoiding any reuse of code from old example projects or previous coursework. Write each line of code with intent, each class, and each method. This project will be all you. It should demonstrate clear comprehension of the ...

  6. capstone-project · GitHub Topics · GitHub

    To associate your repository with the capstone-project topic, visit your repo's landing page and select "manage topics." GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.

  7. 20 Amazing Java Project Ideas That Will Boost Your Programming ...

    7. Create Chess Game. Give Chess a try if you want to convert a classical board game to a Java DIY project and play with your friends. First, you need to build up a board and the pieces and then ...

  8. Planning your Java + Spring Boot Capstone Project

    Create an account and accelerate your career. Embark on the crucial stages of project planning for your capstone development, including the definition of project requirements, documentation, and the execution phase, while emphasizing the importance of a clear plan to avoid potential pitfalls.

  9. Capstone and Project Ideas

    Capstone and Project Ideas. This document is located at https: ... Some of the checks also propose fixes. Building a similar system, or a set of systems, for Java is part of the goal. Instructor imitator. Different instructors provide different feedback to students, or even the same instructor might provide different feedback on assignment-1 ...

  10. capstone-project · GitHub Topics · GitHub

    GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects. ... android java capstone-project capstone-desgin Updated Aug 13, 2024; Java ... This program is a component of the Capstone Project Module 1 assigned by Purwadhika. The objective is to compose create ...

  11. List of Completed Capstone Projects with Source code

    The capstone project, entitled "Vehicle Franchise Application Management System", is a system designed to automate the process of applying for vehicle franchises. This project will eliminate the manual method which costs a valuable amount of time and effort and is also prone to human errors.

  12. Capstone Project: Introduction

    This project should be created outside of your labs project with its own GitHub repository. The repo should contain a README file that clearly describes in detail how to set up, run, and use the project. This project should demonstrate clean, organized code structure and abundant documentation (comments, JavaDoc, etc.) Object-Oriented Application

  13. Capstone.java · GitHub

    Capstone.java This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.

  14. capstone-project · GitHub Topics · GitHub

    Add this topic to your repo. To associate your repository with the capstone-project topic, visit your repo's landing page and select "manage topics." GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.

  15. GitHub

    my project. Contribute to sampada67/capstoneproject development by creating an account on GitHub.

  16. Full Stack Application Development Capstone Project

    There are 7 modules in this course. Show your mastery of full stack application development by completing this capstone project! In this course, you will apply your knowledge and skills to a real-life inspired challenge and use your expertise to develop a successful solution. The project provides you with an opportunity to solidify your full ...

  17. Toward an AI Knowledge Assistant for Context-Aware Learning Experiences

    Software assistants have significantly impacted software development for both practitioners and students, particularly in capstone projects. The effectiveness of these tools varies based on their knowledge sources; assistants with localized domain-specific knowledge may have limitations, while tools, such as ChatGPT, using broad datasets, might offer recommendations that do not always match ...

  18. Anagram-Finder---Data-Structures-Capstone-Project ...

    Contribute to JasonBbosa/Anagram-Finder---Data-Structures-Capstone-Project development by creating an account on GitHub.

  19. GitHub

    This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main

  20. Anagram-Finder---Data-Structures-Capstone-Project/MyList.java ...

    Contribute to JasonBbosa/Anagram-Finder---Data-Structures-Capstone-Project development by creating an account on GitHub.

  21. Anagram-Finder---Data-Structures-Capstone-Project/Pair.java at ...

    Contribute to JasonBbosa/Anagram-Finder---Data-Structures-Capstone-Project development by creating an account on GitHub.

  22. Anagram-Finder---Data-Structures-Capstone-Project/MyHashMap ...

    Contribute to JasonBbosa/Anagram-Finder---Data-Structures-Capstone-Project development by creating an account on GitHub.

  23. GitHub

    The DevOps Bootcamp Capstone Project aims to create a fully automated CI/CD pipeline for a web application running on Kubernetes. The project utilizes various tools and technologies such as Terraform, Ansible, Docker, and Kubernetes to achieve the objective.