User Tools

Site Tools


2024-25:summer

This is an old revision of the document!


Proposed Projects for Summer 2024

Faculty members, please use the following form to submit project descriptions for this page: https://forms.office.com/r/QH4QnYr8Hq

Summer term: May 6-August 6, with final presentations during August 8-15 approximately

This listing is being updated until the start of the summer term.


Strengthening the Security of Autograders

Course: EECS4480/EECS4080

Supervisor: Jonatan Schroeder

Supervisor's email address: jonatan@yorku.ca

Project Description: Unit testing platforms like Java's JUnit and Python's unittest provide a simple interface for evaluating the correctness of individual functions in a large project. These platforms can also be used in an academic environment to automatically test student-submitted code in programming assignments and generate a grade based on if these tests pass or fail. However, given that these platforms were originally developed for running code that is expected to be trusted, this practice can lead to a potential risk if students are able to provide code that causes the test to pass without resulting in the expected value (see https://www.seas.upenn.edu/~hanbangw/blog/hack-gs/). While most modern autograding platforms introduce security practices to avoid this kind of code from receiving a valid grade, some vulnerabilities still exist.

For this project you will strengthen the security of an autograder process for either Python or Java code for the PrairieLearn platform. You will start by creating possible attack vectors in the form of code that is expected to cause the autograder to pass a test without actually returning the expected results. Examples of attack vectors include code that saves or outputs well-formatted values that are interpreted by the autograder as a success, code that is able to identify secret information from the autograder code, and/or code that crashes the original autograder process. Then you will implement safeguards that ensure student-submitted code is unable to bypass container sandbox limitations, and that ensure that malicious student code does not result in a successful grade.

You will work in coordination with the supervisor and the PrairieLearn developer community to brainstorm possible strategies and guidelines. Your final deliverable will be a pull request to the PrairieLearn codebase with the proposed fix.

Required skills or prerequisites:

  • To work on autograder for Python code, you must have completed EECS 1015 (or a similar course) with an A/A+. Must have solid programming skills in Python, including the use of unit testing.
  • To work on autograder for Java code, you must have completed EECS2030 (or a similar course) with an A/A+. Must have solid programming skills in Java, including the use of unit testing
  • Must be able to work independently and have good communication skills.

Recommended skills or prerequisites: EECS 3221 is highly recommended. Experience with Docker containers is helpful but can be obtained during the project. Git experience is helpful. Experience with open source software development is an asset.

Instructions: Additional information about PrairieLearn can be found here: https://prairielearn.readthedocs.io/en/latest/. A sample PrairieLearn assessment that includes Python autograded questions can be found here: https://us.prairielearn.com/pl/course_instance/136606/assessment/2351069. Please submit a brief description of your experience with the skills listed above.

Chat Bots in LMS for Easy Course Navigation

Course: EECS4080

Supervisor: Pooja Vashisth

Supervisor's email address: vashistp@yorku.ca

Project Description: The aim of this project is to enhance the course navigation experience for students by providing them with an interactive and intuitive interface that can assist with accessing course materials, finding relevant information, and answering commonly asked questions.

The main objectives of this project are as follows:

  1. Develop a chat bot capable of understanding natural language queries and responses.
  2. Integrate the chat bot into the existing LMS platform used by our institution.
  3. Implement functionality for students to interact with the chat bot to access course materials, find information about courses, assignments, deadlines, and grades.
  4. Provide personalized recommendations to students based on their preferences, past interactions, and learning progress.
  5. Ensure the chat bot is responsive, reliable, and efficient in handling concurrent user requests.
  6. Design a user-friendly interface for both desktop and mobile devices.

Required skills or prerequisites:

  1. Expertise in Development tools and IDEs (e.g., Python, NLP libraries, web development frameworks)
  2. Understanding of existing LMS platform and its database structure
  3. Knowledge of Hardware and software infrastructure for hosting and deploying the chat bot system
  4. Knowledge of Web Development:
  • HTML/CSS: Knowledge of HTML and CSS is essential for designing the user interface of the chatbot within the LMS.
  • JavaScript: JavaScript can be used to add interactivity and dynamic features to the chatbot interface.

Recommended skills or prerequisites:

  • Machine Learning (Optional): TensorFlow or PyTorch. These popular machine learning frameworks can be used for more advanced NLP tasks, such as intent recognition and sentiment analysis, if the project requires more sophisticated chatbot capabilities.
  • Database: SQLite or PostgreSQL. These relational database management systems (RDBMS) can be used to store and manage data related to user interactions, course materials, FAQs, and personalized recommendations.
  • User Authentication and Integration: LMS API. Depending on the LMS platform being used, you may need to utilize the LMS API to integrate the chatbot system with the existing LMS, allowing access to course materials, user data, and other relevant information. User Authentication Libraries: Libraries such as OAuth or JWT (JSON Web Tokens) can be used to handle user authentication and secure access to the chatbot system.

Instructions: Please send your c.v., transcript, and Statement of Interest in the project to the project supervisor.

Autograders for C and Linux Programs in Undergraduate Courses

Course: EECS4080

Supervisor: Pooja Vashisth

Supervisor's email address: vashistp@yorku.ca

Project Description: The objective of this project is to streamline the process of evaluating programming assignments by automating the grading process, providing timely feedback to students, and reducing the workload of instructors. The main objectives of this project are as follows:

  1. Develop an autograding system capable of executing and evaluating C and Linux programs.
  2. Design a user-friendly interface for instructors to define test cases and grading criteria.
  3. Implement a secure and scalable infrastructure to handle multiple submissions and concurrent grading tasks.
  4. Provide detailed feedback and grading reports to students, highlighting areas of improvement and errors.
  5. Support various programming concepts and features, including file handling, system calls, and command-line utilities.
  6. Ensure the autograder system is reliable, efficient, and scalable to accommodate a large number of students and assignments.

Methodology: The project will follow these general steps.

  1. Conduct a thorough analysis of the requirements and specifications for autograding C and Linux programs.
  2. Research and select appropriate tools, frameworks, and libraries for building the autograding system.
  3. Design and develop the autograder system, including the front-end interface for instructors and the back-end components for executing and evaluating programs.
  4. Implement a secure sandbox environment to run student programs safely and prevent malicious activities.
  5. Integrate tools and utilities for compiling, executing, and capturing program output and errors.
  6. Develop a grading engine that compares student outputs with expected outputs, considering various edge cases.
  7. Implement a user-friendly interface for instructors to define test cases, grading rubrics, and manage assignments.
  8. Test and evaluate the autograder system's performance, accuracy, and scalability using representative test cases and a simulated workload.
  9. Document the development process, including system architecture, algorithms used, and any challenges faced during implementation.

Required skills or prerequisites: Tech stack for this project:

  1. Programming Languages:
    • C: As the project involves autograding C programs, a strong understanding of the C programming language is necessary.
    • Python: Python can be used for developing the autograder system, as it offers a wide range of libraries and frameworks for web development, automation, and scripting.
  2. Web Development:
    • HTML/CSS: Knowledge of HTML and CSS is essential for designing the user interface of the autograder system.
    • JavaScript: JavaScript can be used to add interactivity and dynamic functionality to the web-based interface.
  3. System Execution and Grading:
    • Linux Environment: Good knowledge of Linux is crucial for setting up the execution environment and running student programs in a secure sandbox.
    • Bash scripting: Bash scripting can be used to automate the execution of student programs, capture output, and evaluate correctness based on defined test cases.

Recommended skills or prerequisites:

  1. Frameworks and Libraries:
    • Flask or Django: These Python web frameworks can be used to build the back-end of the autograder system, handle requests, and manage the database.
    • Bootstrap: Bootstrap is a popular front-end framework that provides pre-built UI components and responsive design features, making it easier to create a user-friendly interface.
  2. Database:
    • SQLite or PostgreSQL: These relational database management systems (RDBMS) can be used to store and manage data related to students, assignments, test cases, and grading criteria.

Instructions: Please send your c.v., transcript, and Statement of Interest in the project to the project supervisor

2024-25/summer.1712795110.txt.gz · Last modified: 2024/04/11 00:25 by baljko