User Tools

Site Tools


2024-25:summer

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
2024-25:summer [2024/04/15 23:17] baljko2024-25:summer [2024/04/15 23:29] – [Strengthening the Security of Autograders] baljko
Line 8: Line 8:
  
 ---- ----
 +==== Mnemonic-Based Serious Games ====
  
 +**[added 2024-04-15]**
  
 +**Course:**  EECS4080
 +
 +**Supervisor:**  Professor Kiemute Oyibo
 +
 +**Supervisor's email address:** koyibo@yorku.ca
 +
 +**Project Description:** 
 +Many courses in Social Science, Health Science, and Computer Science that require memorization are becoming more and more challenging for many college and university students, especially with the ever-increasing volume of textbooks and course materials due to the growing body of knowledge. In courses, such as psychology, biology, and Human-Computer Interaction (HCI) that are memorization intensive, students are often overwhelmed by the lengthy course materials, readings, and the uphill challenge to retain and recall most of the content taught in class. Given the many challenges that most students face in higher education, including having to work to help pay for their university education, they often lack sufficient time to read and properly understand the taught material. Hence, there is a need to find effective ways to support student learning. We argue that serious games can be utilized to support student learning in memory-intensive courses to increase content comprehension and retention. Serious games are interactive applications that use game elements for education purposes rather than entertainment. They are increasingly being used in the education domain to support student learning. In this project, we aim to design, implement, and evaluate a mnemonic-based serious game to help students learn and retain taught material easily in memorization-intensive courses individually and collaboratively.
 +
 +Duties and Responsibilities: Requirements gathering and analysis, prototyping, application programming and evaluation, data analysis, report writing and presentation.
 +
 +**Required skills or prerequisites:**  
 +  * Prototyping with tools such as Figma and programming on the mobile platform (e.g., Android, cross-platform).
 +  * Software Engineering; LE/EECS 4441 3.00 – Human-Computer Interaction, LE/EECS 3461 3.00 – User Interfaces
 +  * Ability to work independently as well as in a team.
 +
 +**Instructions:**
 +
 +Contact professor at email above.
 +
 +----
 ==== Strengthening the Security of Autograders ==== ==== Strengthening the Security of Autograders ====
 +
 +**[revised 2024-03-15, added 2024-04-11]**
  
 **Course:**  EECS4480/EECS4080 **Course:**  EECS4480/EECS4080
Line 21: Line 46:
 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. 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.+For this project you will strengthen the security of an autograder process for either **C,** 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. 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.
Line 28: Line 53:
   * 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 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    * 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 
 +  * **To work on autograder for C code, you must have completed EECS 2031 (or a similar course) with an A/A+. Must have solid programming skills in C, preferably including the use of unit testing (though experience with unit testing in other languages is acceptable).**
   * Must be able to work independently and have good communication skills.   * Must be able to work independently and have good communication skills.
  
Line 35: Line 61:
 **Instructions:** **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. 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 ==== ==== Chat Bots in LMS for Easy Course Navigation ====
 +
 +**[added 2024-04-11]**
  
 **Course:**  EECS4080 **Course:**  EECS4080
Line 70: Line 99:
 Please send your c.v., transcript, and Statement of Interest in the project to the project supervisor. 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 ==== ==== Autograders for C and Linux Programs in Undergraduate Courses ====
  
-[added 2024-04-11]+**[added 2024-04-11]**
  
 **Course:**  EECS4080 **Course:**  EECS4080
2024-25/summer.txt · Last modified: 2024/04/16 00:31 by baljko