GithubHelp home page GithubHelp logo

codeincstructor.ai's Introduction

Welcome to CodeInCStructor.ai!

An AI-driven Cod-Ing Instructor Platform for Inquisitive CS Students and Faculty

Getting Started

For Students:

Welcome, aspiring programmers! Are you ready to conquer your Python coding assignments with the help of AI? Let's kickstart your journey:

  1. 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.

  2. 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!

  3. 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.

  4. 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!

Instructions to Run the Code:

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.

For Professors:

Hello, educators! Are you looking to streamline the process of creating Python coding assignments for your students? Let's get started:

  1. 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.

  2. 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.

  3. 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.

  4. 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!

FAQs

For Students:

  1. 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.

  2. 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.

For Professors:

  1. 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.

  2. 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.

Table of Contents

  1. Team Names and Project Abstract
  2. Project Description
  3. User Stories and Design Diagrams
  4. Project Tasks and Timeline
  5. ABET Concerns Essay
  6. PPT Slideshow (includes ABET Concerns)
  7. Self-Assessment Essays
  8. Professional Biographies
  9. Budget
  10. Appendix

Team Names and Project Abstract

Team Members:

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.​


Goal Statement​

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.

Project Description

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 Stories and Design Diagrams

User Stories

image

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.​

image

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. ​

Design Diagrams

Design D0:

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.

image

Design D1:

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.

image

Design D2

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.

image

Design D3

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.

image

Project Tasks and Timeline

Task List

  1. Read Papers:

    • Identify relevant research papers.
    • Summarize key findings and methodologies.
    • Note any existing solutions or frameworks.
  2. Alternative Solutions:

    • Investigate alternative approaches to the problem.
    • Compare pros and cons of different solutions.
    • Consider novel or hybrid approaches.
  3. 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.
  4. Research the API:

    • Explore the documentation of the selected API.
    • Understand its capabilities and limitations.
    • Identify any prerequisites or dependencies.
  5. 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.
  6. 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.
  7. 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.
  8. Set up Jupyter Notebook Interface:

    • Install necessary libraries and dependencies.
    • Configure the Jupyter Notebook environment.
    • Ensure seamless integration with the chosen API.
  9. 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.
  10. 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.
  11. 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.
  12. Create a Prototype UI:

    • Design a simple user interface for interacting with the system.
    • Integrate input and output components.
    • Consider user experience and accessibility.
  13. 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.

Timeline

This project follows a structured timeline with tasks organized by months. Each task represents a significant step in the development process.

October 2023

  • 1. Read Papers

  • 2. Alternative Solutions

  • 3. Collect Sample I/P – O/P Prompts

    • 6. Get Feedback
    • 7. Summarize the Response

November 2023

  • 4. Research the API

  • 5. Create Sample Questions

    • 6. Get Feedback
    • 7. Summarize the Response

December 2023

  • 8. Set up Jupyter Notebook Interface

    • 9. Prompt Engineer the API

January 2024

  • 10. Sample Questions and Answers for Testing

    • 11. Prepare the Server to Host Notebook

February 2024

  • 12. Create a Prototype UI

    • 13. Presentation

Effort Matrix

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%

ABET Concerns Essay

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.

PPT Slideshow (includes ABET Concerns)

Video Presentation: https://www.youtube.com/watch?v=RXlRPnMqUa0

Slides: https://mailuc-my.sharepoint.com/:p:/g/personal/pradhask_mail_uc_edu/Efgkoc-HJo1KryDhuV2Lg1gB4Xdi_xeH4qFJ5IR7dFzi9Q?e=0J38sY


Self-Assessment Essays

Saumick Pradhan

Roshni Khatri


Professional Biographies

Saumick Pradhan

Roshni Khatri


Budget

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.

https://openai.com/pricing


Appendix

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

codeincstructor.ai's People

Contributors

saumickpradhan avatar roshnik1 avatar hawkinsw avatar

Watchers

 avatar

Forkers

hawkinsw

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.