Potential Projects
Are you an undergraduate interested in doing research with me? Here are some topics and areas that are interesting to me.
Game Dev Library for Skulpt
BlockPy internally uses the Skulpt Javascript-to-Python compiler. This compiler does not support all Python language features, although its functionality continues to grow. I’d like to add a game development library to it.
- Open Problems:
- Web graphics interfaces
- Pygame interface
- Spyral interface
- You’ll need to have…
- Data Structures (e.g., CISC220)
- Preferably, some web development experience
- You’ll get experience with…
- JavaScript and Python programming
- Web development
- Game Development and Web Graphics
Program Analysis in TIFA
The TIFA module of Pedal performs abstract intrepretation of Python code in order to determine common issues and typecheck.
- Open Problems:
- Currently does not have support for Object-oriented programming and more complicated ideas about namespaces
- We might need a JavaScript port that can be efficiently kept in sync
- You’ll need to have…
- Data Structures (e.g., CISC220)
- You’ll get experience with…
- Python programming experience
- Program Analysis experience
- Experience with Compilers and/or Parsing
BlockMirror: Dual Block/Text Interface Component
We recently separated BlockMirror out into its own separate component from BlockPy. We’d like to see it integrated into some new environments, like Jupyter Notebooks.
- Open Problems:
- Create a component for Jupyter Notebooks
- Figure out best possible block representations of Python code to support student learning
- Support complete Python language and all syntactically valid Python code
- Integrate ideas from TIFA to have proper types in Blocks
- You’ll need to have…
- Data Structures (e.g., CISC220)
- You’ll get experience with…
- JavaScript and Python programming
- HCI and User Experience Design
- Parsing
- Program Analysis
How should instructors in Computing bundle up their lessons for sharing, evaluating, adopting, etc.?
- Open Problems:
- Designing and developing formats for quizzes, programming assignments, projects, grading rubrics, course staff instructions, in-class lessons, etc.
- Protocols for developing lessons, exams, evaluations, etc.
- You’ll need to have…
- Introductory programming (e.g., CISC108)
- You’ll get experience with…
- Markdown
- Instructional Design
Various tools for synchronizing a Canvas course with a Github repo
- Open Problems:
- Building a web interface to simplify comparisons and diff resolutions
- Building a Slack interface for running common jobs
- Building interfaces for generating reports, managing TAs, and setting course options.
- You’ll need to have…
- Software Engineering (e.g., CISC275)
- You’ll get experience with…
- Web development
- Version Control Systems (like Git)
- Web APIs (Canvas, Git)
- Usability Engineering
- Educational theories related to Instructional Design
Intelligent tutoring system for BlockPy (or other relevant system) that helps support metacognitive behaviors based on a model of students.
- Open problems:
- How do we encourage students to write more tests as they debug problems?
- How do we encourage students to decompose their solutions into multiple parts?
- How do we encourage students to seek and interpret automated feedback?
- How do we encourage students to work early, often, and for appropriate time lengths?
- How do model students in order to determine optimal intervention times?
- How do we intervene to make a measurable impact on student behavior?
- What relationship do these metacognitive interventions have on student learning?
- You’ll need to have…
- Data Structures (e.g., CISC220)
- You’ll get experience with…
- AI techniques
- Machine Learning
- Web development
- Educational Theories related to Meta Cognition
Pedagogical Dataset Development
Build datasets that are meant for classrooms, drawing from extremely varied sources
- Open Problems:
- Need a large number of new datasets from any area you can think of (Biology, Law, Literature, etc.)
- Need to revise and improve a number of existing datasets
- You’ll get experience with…
- Data Science
- Data Transformation
- Web APIs
- Python
- User Experience Design
Programming Typing Tutor Game
On hold while we determine need
An experimental game for improving students’ ability to write syntacticaly correct code.
- Open Problems:
- Initial version of web game
- You’ll need to have…
- Software Engineering (e.g., CISC275)
- You’ll get experience with…
- Web development
- Educational Game Design
- Parsing