Table of Contents
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.
AI-Assisted Heath Assessment: Front-End and Back-End Software Development
[added 2024-04-15]
Course: EECS4080
Supervisor: Ebrahim Ghafar-Zadeh
Supervisor's email address: egz@yorku.ca
Project Description:
The development of novel point-of-care diagnostic tools for health quality monitoring has recently attracted researchers' attention, particularly utilizing the mobile cell phone platform. The availability of sensors such as tiny cameras in cell phones has created an attractive platform for detecting various health-related parameters. We have recently developed a technology for the assessment of inflammatory diseases by combining medical and engineering techniques. This technology leverages Deep Learning methods to detect features extracted from images captured from microscopes. In this project, there are several opportunities for computer science and software students to join this multidisciplinary project, including: Development of a Mobile App to capture images and perform pre-image processing before transferring them to cloud-based software. Enhancement of DNN (Deep Neural Network) models by studying various methods such as Yolo, Detectron, etc., and applying these new models to improve the accuracy of disease detection.
Required skills or prerequisites:
- Students who have completed their third year and are eligible for capstone projects or other fourth-year projects (e.g. 4080) are eligible for this project.
- Specific skills required: This project offers a great opportunity for students interested in applying computer science to medical and life science applications. Proficiency in programming (Python or other comparable programming languages), familiarity with fundamental concepts of App development, and some experience with Artificial Intelligence will be sufficient.
Recommended skills or prerequisites:
- Knowledge of multi-thread programming and interprocess communication protocols will be useful
Instructions: The interested students are required to submit their CV along with an abstract Max 300 Words) describing their interests and plans for their future job, as well as a self-description if they require specific accommodations for taking this course. All students, including underrepresented groups, are most welcome to take this course and join my research team.
Design and Implementation of Knowledge Graph Framework
[added 2024-04-15]
Course: EECS4080
Supervisor: Kostas Kontogiannis
Supervisor's email address: kkontog@yorku.ca
Project Description:
The idea is to design and implement a graph-based model system which allows for dependencies between entities (e.g. software components, business processes) to be modeled. In addition a reasoning engine is to be implemented so events (e.g. a failure of a process) can be propagated efficiently to the dependent nodes. The project can involve a team of two and is part of a research project.
Required skills or prerequisites:
- Excellent Java programming, Excellent Software Design and Architecture skills, very good data base skills
Recommended skills or prerequisites:
- Knowledge of multi-thread programming and interprocess communication protocols will be useful
Instructions: Please contact Prof. Kostas Kontogiannis at kkontog@yorku.ca and submit an unofficial transcript and your CV.
Large Language Models Based Mutation Testing
[added 2024-04-15]
Course: EECS4080
Supervisor: Song Wang
Supervisor's email address: wangsong@yorku.ca
Project Description: Recently, pre-trained large language models (LLMs) have emerged as a breakthrough technology in natural language processing and artificial intelligence, with the ability to handle large-scale datasets and exhibit remarkable performance across a wide range of tasks. Meanwhile, software testing is a crucial undertaking that serves as a cornerstone for ensuring the quality and reliability of software products. As the scope and complexity of software systems continue to grow, the need for more effective software testing techniques becomes increasingly urgent, making it an area ripe for innovative approaches such as the use of LLMs. Our recent collaboration with Meta also confirms the limitations of existing widely used testing techniques in mutation testing. This project takes a solid initial step toward exploring the next-generation software mutation testing techniques powered by LLMs.
Required skills or prerequisites:
- Familiarity with DL libraries such as Tensorflow and Pytorch;
Recommended skills or prerequisites:
- Knowledge of Python programming;
Instructions: Send c.v. and transcript to the project supervisor.
LLM4SE (Large Language Models for Software Engineering)
[added 2024-04-15]
Course: EECS4070/EECS4080
Supervisor: Zhen Ming (Jack) Jiang
Supervisor's email address: zmjiang@yorku.ca
Project Description: Software engineering data (e.g., source code repositories and bug databases) contain a wealth of information about a project's status and history. With the recent advances of large language models (e.g., GPT and BERT) as well as their applications (e.g., ChatGPT or GitHub Copilot), many software engineering tasks can be automated or optimized. In this project, the student(s) will explore and investigate various software engineering applications which can benefit from the use of LLMs.
Required skills or prerequisites:
- Major in Computer Science/Software Engineering/Computer Engineering
- Third year and up
- At least B+ for EECS 3311
- Proficient in Python and Java-based programming
Recommended skills or prerequisites: Some knowledge in AI would be preferred but not required
Instructions: Send c.v. and unofficial transcript to the supervisor.
FMOps
[added 2024-04-15]
Course: EECS4070/EECS4080
Supervisor: Zhen Ming (Jack) Jiang
Supervisor's email address: zmjiang@yorku.ca
Project Description: Artificial Intelligence is gaining rapid popularity in both research and practice, due to the recent advances in machine learning (ML) research and development. Many ML applications (e.g., Tesla’s autonomous vehicle and Apple’s Siri) are already being used widely in people’s everyday lives. McKinsey recently estimated that ML applications have the potential to create between $3.5 and $5.8 trillion in value annually. Foundation models are large AI models trained on a vast quantity of data at scale. FMs can be used to power a wide range of downstream tasks (e.g., chat bots, code assistants, tutors, etc.). However, there remain many challenges in efficiently training, deploying and monitoring such FM infrastructure. In addition, there is a lack of tools and processes to further develop applications or services on top of such FMs. The goal of this project is to develop engineering tools and best practices to support effectively operationalizing FMs.
Required skills or prerequisites:
- Major in Computer Science/Software Engineering/Computer Engineering
- Third year and up
- At least B+ for EECS 3311
- Proficient in Python and Java-based programming
Recommended skills or prerequisites: Some knowledge in AI would be preferred but not required
Instructions: Send c.v. and unofficial transcript to the supervisor.
Machine Learning for Engineering Dependable Systems
[added 2024-04-14]
Course: EECS4070/EECS4080
Supervisor: Hamzeh Khazaei
Supervisor's email address: hkh@yorku.ca
Project Description: In this research, we plan to examine the application of large language models (LLMs) in designing more dependable software systems. Dependability in this context refers to the overall trustworthiness of the software, which includes aspects such as performance (how well the system operates under varying conditions and workloads), reliability (the system's ability to function properly and consistently over time), and security (resiliency against malicious attacks and its ability to protect data and maintain privacy). One of these aspects will be addressed in this research. This has not yet been finalized as it depends on the applicant. We believe LLMs have great potential in designing intelligent adaptive large-scale computing systems. These models can process vast amounts of data, learn from it, and make decisions or predictions, which is essential for systems that require a high degree of autonomy, such as cyber-physical systems and machine-learning systems that often need to operate and maintain themselves automatically due to their scale and complexity.
Required skills or prerequisites:
- Good programming skills.
- Good grades in System and ML courses.
Recommended skills or prerequisites: Interested in the intersection of machine learning and systems. Interested in building large-scale systems.
Instructions: Please send your CV and transcripts to the supervisor.
Visualizing the debugger for first-year computer science students
[added 2024-04-15]
Course: EECS4080
Supervisor: Meiying Qin
Supervisor's email address: mqin@yorku.ca
Project Description: Debugging is one of the most important skills for computer science students. However, first-year students are usually not comfortable with working with a debugger. In order to help ease the process for first-year students, we plan to write an application that can visualize the process by animating the variable manipulated, either on a screen or using virtual reality/augmented reality. In this project, you will have the opportunity to gain hands-on experience in both designing and implementing a software application. You will gain experience in animation or virtual reality.
Required skills or prerequisites:
- Proficient in Python (as you will write a visualized debugger for students learning Python)
- Strong learning ability (You will be expected to learn VR/AR programming if we decide to use NR/AR)
Recommended skills or prerequisites: Experience with virtual reality/augmented reality or animation
Instructions: Please send your c.v. and transcript to the project supervisor. If available, please also send your e-portfolio (e.g., GitHub, or other links) of your previous projects.
Sims for University Life
[added 2024-04-15]
Course: EECS4080
Supervisor: Meiying Qin
Supervisor's email address: mqin@yorku.ca
Project Description: One of the biggest challenges that first-year students face is the transition from high school to university. This is expected to be more pronounced once the York Markham campus opens as all courses will use the flipped-class model. In this model, students are required to be more active in learning and preview the content before each class in order to stay on track. In order to assist first-year students in making a smoother transition even before school starts, we plan to release a game that simulates the life of a computer science student at the Markham campus to provide students with a preview of university life. In this project, you'll have the opportunity to gain hands-on experience in both designing and implementing a game.
Required skills or prerequisites:
- Strong software engineering skills;
- The game will either be on Android or a web-based game. So you will need to have some experience in either Java or web development;
- an interest in helping first-year students and suggesting game components based on your own experience.
Recommended skills or prerequisites: Experience with graphical user interface or game design.
Instructions: Please send your c.v. and transcript to the project supervisor. If available, please also send your e-portfolio (e.g., GitHub, or other links) of your previous projects.
Robots Tutors in First Year Programming Courses
[added (partially) 2024-04-15]
Course: EECS4080
Supervisor: Meiying Qin
Supervisor's email address: mqin@yorku.ca
Project Description:
project description is being updated
Designing Privacy-preserving Systems
[added 2024-04-15]
Course: EECS4080 or EECS4480
Supervisor: Yan Shvartzshnaider
Supervisor's email address: rhythm.lab@yorku.ca
Project Description: Modern sociotechnical systems share and collect vast amounts of information. These systems violate users’ privacy by ignoring the context in which the information is shared and failing to incorporate contextual information norms.
Using techniques in natural language processing, machine learning, network, and data analysis, this project is set to explore the privacy implications of mobile apps, online platforms, and other systems in different social contexts/settings.
To tackle this challenge, the project will operationalize a cutting-edge privacy theory and methodologies to conduct an analysis of existing technologies and design privacy-enhancing tools.
Students will help analyze information handling practices of online services and design privacy-enhancing tools.
Specific tasks include: comprehensive literature review of existing methodologies and tools, analysis of privacy policies and regulations, visualization of information collection practices, and design of a web-based interface for analyzing extracted privacy statements to identify vague, misleading, or incomplete privacy statements.
For prior project, see this link
Required skills or prerequisites: Good programming and data analysis skills overall, and experience in using Jupyter and/or R for data analysis. Ability to work independently. Interest in usable privacy, critical analysis of privacy policies and privacy related regulation.
Recommended skills or prerequisites: Experience with Machine Learning, Natural Language Processing techniques, HCI design. Students with diverse backgrounds, including in technical fields, social sciences and humanities are encouraged to apply.
Instructions: Please fill in this form
Designing Privacy-preserving Virtual Reality Systems
[added 2024-04-15]
Course: EECS4080 or EECS4480
Supervisor: Yan Shvartzshnaider
Supervisor's email address: rhythm.lab@yorku.ca
Project Description: Designing a privacy-preserving VR experience requires adhering to contextual integrity of users’ data . This involves accounting for different modes of interaction and ensuring robustness to accommodate the evolving privacy norms associated with future VR adaptations.
To tackle this challenge, the project will operationalize a cutting-edge privacy theory and methodologies to develop mechanisms that ensure that information flows in accordance with users’ expectations and established societal norms in VR settings.
Students will help analyze information handling practices of VR applications and design tools to enhance privacy of VR users.
Specific tasks include conducting a comprehensive literature review of existing methodologies and tools, performing a dynamic analysis of data practices in VR applications, and checking for compliance with existing regulations and privacy policies.
For reference, see these papers:
Required skills or prerequisites:
- Good programming skills (experience with coding in Unity is a plus)
- Interest in usable privacy, critical analysis of privacy policies, and knowledge of privacy-related regulations
- Ability to work independently
Recommended skills or prerequisites:
- Experience with data analysis using Jupyter and/or R
- Familiarity with HCI design
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
[revised 2024-03-15, added 2024-04-11]
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 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.
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
- 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.
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
[added 2024-04-11]
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:
- Develop a chat bot capable of understanding natural language queries and responses.
- Integrate the chat bot into the existing LMS platform used by our institution.
- Implement functionality for students to interact with the chat bot to access course materials, find information about courses, assignments, deadlines, and grades.
- Provide personalized recommendations to students based on their preferences, past interactions, and learning progress.
- Ensure the chat bot is responsive, reliable, and efficient in handling concurrent user requests.
- Design a user-friendly interface for both desktop and mobile devices.
Required skills or prerequisites:
- Expertise in Development tools and IDEs (e.g., Python, NLP libraries, web development frameworks)
- Understanding of existing LMS platform and its database structure
- Knowledge of Hardware and software infrastructure for hosting and deploying the chat bot system
- 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
[added 2024-04-11]
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:
- Develop an autograding system capable of executing and evaluating C and Linux programs.
- Design a user-friendly interface for instructors to define test cases and grading criteria.
- Implement a secure and scalable infrastructure to handle multiple submissions and concurrent grading tasks.
- Provide detailed feedback and grading reports to students, highlighting areas of improvement and errors.
- Support various programming concepts and features, including file handling, system calls, and command-line utilities.
- 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.
- Conduct a thorough analysis of the requirements and specifications for autograding C and Linux programs.
- Research and select appropriate tools, frameworks, and libraries for building the autograding system.
- Design and develop the autograder system, including the front-end interface for instructors and the back-end components for executing and evaluating programs.
- Implement a secure sandbox environment to run student programs safely and prevent malicious activities.
- Integrate tools and utilities for compiling, executing, and capturing program output and errors.
- Develop a grading engine that compares student outputs with expected outputs, considering various edge cases.
- Implement a user-friendly interface for instructors to define test cases, grading rubrics, and manage assignments.
- Test and evaluate the autograder system's performance, accuracy, and scalability using representative test cases and a simulated workload.
- Document the development process, including system architecture, algorithms used, and any challenges faced during implementation.
Required skills or prerequisites: Tech stack for this project:
- 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.
- 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.
- 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:
- 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.
- 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