An AI-driven Cod-Ing Instructor Platform for Inquisitive CS Students and Faculty
Welcome, aspiring programmers! Are you ready to conquer your Python coding assignments with the help of AI? Let's kickstart your journey:
-
Fill Out Your Information: To personalize your experience, please provide your name, UC email, and the name of your assignment. This ensures that our AI can tailor its assistance to your needs.
-
Proceed to the Platform: After submitting your information, you'll be granted access to our AI coding assistant platform. Get ready to explore its features and get your coding queries resolved!
-
Ask for Help: You have up to 4 attempts to engage with our AI chatbot. Be clear and concise in describing your coding problems to maximize the effectiveness of each interaction.
-
Receive Expert Guidance: Our AI coding assistant will provide you with step-by-step explanations and code snippets to guide you through your Python coding assignments. Don't hesitate to ask for clarification whenever needed!
1. Clone the repository:
git clone https://github.com/SaumickPradhan/CodeInCStructor.ai.git
2. Change to the project directory:
cd dev
3. Install the required dependencies:
pip install -r requirements.txt
4. Run the Flask web app:
python app.py
5. Set up a Google Accoount to access Google Cloud Firestore Firebase
https://firebase.google.com/docs/firestore
6. Visit the web interface at: http://localhost:5000
Remember, input your Python code between Three Backticks on the chat platform.
Hello, educators! Are you looking to streamline the process of creating Python coding assignments for your students? Let's get started:
-
Select Difficulty Level: Choose the appropriate difficulty level for your assignment—beginner, intermediate, or advanced. This ensures that the assignments align with your students' skill levels.
-
Input Assignment Topic: Specify the topic for your Python coding assignment. Whether it's algorithms, data structures, or application development, our AI is equipped to assist you.
-
Generate Sample Question: Once you've selected the difficulty level and topic, our platform will generate a sample question tailored to your specifications. This question will serve as a foundation for your assignment.
-
View Example Solution: Alongside the sample question, you'll receive an example solution to provide your students with a clear understanding of the expected output. Feel free to customize the solution as needed!
-
What should I do if I encounter an error while running the code? Make sure you have installed all the required dependencies as mentioned in the instructions. If the issue persists, feel free to contact our support team for assistance.
-
Can I use the AI coding assistant for languages other than Python? Currently, our platform is tailored for Python coding assignments. However, we are continuously working to expand our support for other programming languages in the future.
-
How can I ensure that my students receive personalized assistance? Encourage your students to provide detailed information about their assignments when interacting with the AI chatbot. This includes specific coding problems, error messages, and any relevant context.
-
Is there a limit to the complexity of assignments I can create with the platform? Our platform is designed to handle assignments ranging from beginner to advanced levels. However, if you encounter any limitations or have specific requirements, please reach out to us, and we'll be happy to assist you.
- Team Names and Project Abstract
- Project Description
- User Stories and Design Diagrams
- Project Tasks and Timeline
- ABET Concerns Essay
- PPT Slideshow (includes ABET Concerns)
- Self-Assessment Essays
- Professional Biographies
- Budget
- Appendix
Team Members:
- Saumick Pradhan ([email protected])
- Roshni Khatri ([email protected])
- Advisor:
- Dr. William III Hawkins ([email protected])
- Dr. Raj Bhatnagar ([email protected])
Project Abstract
CodeInCStructor.ai aims to develop a dynamic platform tailored for first-year Computer Science students and those in related programming fields. The central focus is to foster motivation, positive support, and encouragement throughout their coding journey. Leveraging Generative AI, the platform seeks to engage students with insightful feedback to overcome coding challenges, whether they are beginners or experienced programmers. The platform also enables professors to come up with innovative and unique exercises for the students to enable critical thinking. These exercises will supplement the material from the professor and help students interact with customized problems.
Making coding engaging by providing good feedback so that beginner Students can push through the inevitable tough parts that come with writing code, irrespective of experience. Working on unique assignments will help students actively think towards the solution rather than resorting to online help resources. Referring back to the old assignments helps students recollect the old concepts in an easy-to-read natural language form.
The "CodeInCStructor.ai" platform has two broader use cases. The first one uses a fine-tuned LLM that creates unique exercises and produces sample solutions for the professor. The second use case is to interactively mentor the student as they attempt (in Python) to complete the AI-generated exercise. This feedback will be generated in natural language and will be a continuous comprehensive response cycle. The correct answers will then be saved along with their natural language explanation, for the student to review later on. The LLM will be based on the gpt-3.5-turbo-0613 model.
Targeting first-year CS students, this platform encourages active learning, helps tackle syntax and logical errors, while equiping students for technical interviews and getting their first COOP opportunities. Our ultimate goal is to enhance coding engagement and provide valuable feedback, promoting students' coding proficiency, regardless of their experience level. We want the students to work on unique exercises and in a continuous feedback-driven learning approach with unique challenges to enable critical thinking.
User Profile 1: I am a First year College student, starting my Computer Science (or similar) degree. I have little to no prior experience in programming and I have just started to learn the basics.
User Story 1: Given my background, I face a lot of syntax and logical errors while coding during my assignments. I sometimes do not know the correct or most effective way to approach the solution. Hence, I want to have an interactive platform which can help me learn coding in an efficient manner and help answer my questions during the assignment, so that I can have strong fundamentals.
User Profile 2: I am a Computer Science professor teaching an Intro computer Science class with 50 + students.
User Story 2: It is difficult to provide personalized feedback to every student based on their attempts to the exercises to enable active learning by trying. It is also challenging to come up with unique exercises for each class/ student as most questions have solutions online.
In this highest-level view, we have the Input from the user. It passes through the “Coding Platform” which is the machine. And then the output is the efficient Code recommendation generated from the “Coding Platform”. The “Machine” is depicted in a cloud.
In this diagram, we go one layer deep. We understand that the Professor publishes the coding Assignment for the Student. The student can access it via a notebook or a Discord bot. The student submits their response to the question on the platform. The platform outputs tips for coding efficiency with appropriate comments. We understand here that the platform is intrinsic to the assignment given by the professor.
Our final design shows the complete working of the subsystems of the platform. The professor publishes the assignment and every student accesses it through their university login ID. The student interacts with the assignment and then submits a response. The response is then passed through an Open API generative API. The API is pre-trained on a model which is imported. The model gives the output to the student. The student reviews the comments and implements the code recommendations. The subsystems of the platform are in square boxes.
We decided to add additional components to the project. The Teacher will provide exercises and study materials for the students using the platform. The AI platform will produce solutions to the exercises. The students will access these and will manually get solutions to the exercise and get an attempt. The platform will check the attempt and provide feedback to the student.
-
Read Papers:
- Identify relevant research papers.
- Summarize key findings and methodologies.
- Note any existing solutions or frameworks.
-
Alternative Solutions:
- Investigate alternative approaches to the problem.
- Compare pros and cons of different solutions.
- Consider novel or hybrid approaches.
-
Collect Sample I/P – O/P Prompts:
- Define a set of input-output prompt pairs for testing.
- Ensure diversity and coverage of potential use cases.
- Include edge cases and corner scenarios.
-
Research the API:
- Explore the documentation of the selected API.
- Understand its capabilities and limitations.
- Identify any prerequisites or dependencies.
-
Create Sample Questions:
- Generate a set of questions based on the collected prompts.
- Ensure a variety of question types (e.g., open-ended, multiple-choice).
- Consider potential user queries.
-
Get Feedback:
- Share the sample questions with a small group for feedback.
- Gather insights on clarity, relevance, and difficulty.
- Iterate on questions based on feedback.
-
Summarize the Response:
- Develop a system to summarize API responses.
- Handle different response formats (text, JSON, etc.).
- Consider how to handle errors or ambiguous responses.
-
Set up Jupyter Notebook Interface:
- Install necessary libraries and dependencies.
- Configure the Jupyter Notebook environment.
- Ensure seamless integration with the chosen API.
-
Prompt Engineer the API:
- Fine-tune input prompts for optimal performance.
- Experiment with variations to enhance response quality.
- Document any patterns or guidelines for prompt engineering.
-
Sample Questions and Answers for Testing:
- Pair sample questions with expected API responses.
- Develop a testing protocol for systematic evaluation.
- Consider scenarios for regression testing.
-
Prepare the Server to Host Notebook:
- Set up a server environment to host the Jupyter Notebook.
- Configure security settings and access controls.
- Ensure compatibility with external dependencies.
-
Create a Prototype UI:
- Design a simple user interface for interacting with the system.
- Integrate input and output components.
- Consider user experience and accessibility.
-
Presentation:
- Prepare a presentation summarizing the project.
- Include key findings, challenges, and solutions.
- Demonstrate the prototype and discuss future enhancements.
- Allow time for questions and feedback.
This project follows a structured timeline with tasks organized by months. Each task represents a significant step in the development process.
-
1. Read Papers
-
2. Alternative Solutions
-
3. Collect Sample I/P – O/P Prompts
- 6. Get Feedback
- 7. Summarize the Response
-
4. Research the API
-
5. Create Sample Questions
- 6. Get Feedback
- 7. Summarize the Response
-
8. Set up Jupyter Notebook Interface
- 9. Prompt Engineer the API
-
10. Sample Questions and Answers for Testing
- 11. Prepare the Server to Host Notebook
-
12. Create a Prototype UI
- 13. Presentation
Sr. No. | Task | Saumick | Roshni | Comments |
---|---|---|---|---|
1) | Read papers | 100% | 100% | |
2) | Alternative Solutions | 100% | 100% | |
3) | Collect sample I/P – O/P prompts | 100% | 100% | |
4) | Research the API | 100% | 100% | |
5) | Create sample questions | 100% | 100% | |
6) | Get feedback | 100% | 100% | |
7) | Summarize the response | 100% | 100% | |
8) | Set up Jupyter Notebook Interface | 100% | ||
9) | Prompt Engineer the API | 100% | ||
10) | Sample Questions and answers for testing | 100% | ||
11) | Prepare the server to host notebook | 100% | 100% | |
12) | Create a prototype UI | 100% | 100% | |
13) | Presentation | 100% | 100% |
Professional: This project directly influences the professional growth of its creators and the learning experience for students. By developing an effective coding education platform, the creators enhance their programming and AI skills, solidifying their reputation in education technology and AI communities. Specialized knowledge in both programming and AI is crucial for refining the generative AI model, ensuring accurate and beneficial suggestions for students.
Ethical: The project seeks to positively motivate students in their coding journey while addressing ethical considerations. Caution is advised to prevent over-reliance on AI feedback, which could hinder critical thinking. Efforts are made to create an inclusive and unbiased learning environment, prioritizing ethical use of AI suggestions to enhance, not impede, the learning experience.
Legal: Legal aspects, especially regarding intellectual property and data privacy, are carefully considered. Adherence to copyright and fair use laws is essential, particularly when incorporating content from third-party sources. Compliance with data privacy laws is a priority, especially in handling personally identifiable information, to avoid potential legal challenges.
Security: Security measures are paramount, particularly in safeguarding user data and AI functionalities. Encryption and secure storage are implemented for user data, and regular security audits mitigate potential threats like data breaches or malicious code injections. Privacy concerns are addressed by empowering users to control their data sharing preferences, ensuring data is used appropriately.
Social: The project's impact extends to society by providing a valuable educational tool for students in computer science. Personalized support and motivation can enhance the quality of education, potentially increasing student retention in coding-related fields. Making the project accessible to non-profit organizations can further support underserved communities, contributing to public service and enriching lives. The potential to publish research based on testing and surveys underscores a commitment to sharing valuable insights with the broader educational community.
Video Presentation: https://www.youtube.com/watch?v=RXlRPnMqUa0
Expenses to date: $10
Statement: We have incurred expenses for purchase of OpenAI API key. This is the base rate while purchasing the API for the first time. We will be billed as per our use duing the testing phase. Following is the pricing information from OpenAI.
References
- Association for Computing Machinery. (2021). User-Centered Design of Augmented Reality Environments for Creativity in Education. ACM Transactions on Computer-Human Interaction (TOCHI), 28(2), Article 8. https://dl.acm.org/doi/abs/10.1145/3501385.3543957
Meeting Notes
Weekly Time Commitment during August to November 2023
Sr. No. | Task | Saumick | Roshni | Comments |
---|---|---|---|---|
1) | Brainstroming and Research | 1 Hr | 1 Hr | |
2) | Testing API and prompt engineering | 1 Hr | 0.5 Hr | |
3) | Learning Prompt engineering and Notebook Deployment | 0.5 Hr | 1 Hr | |
4) | Assignment Preperation | 1 Hr | 1 Hr | |
5) | Advisor Meeting | 0.5 Hr | 0.5 Hr |