Projects in Computer |
|
I am interested in advising graduation projects that focus on helping students in learning Computer Science or instructors in teaching Computer Science. This page is meant to help you understand the different possible directions you could take if you decide to do a project in Computer Science Education. You will not find here specific project ideas to pick from, but, hopefully, enough information and examples to help you come up with your own project ideas in the field of CS Education! Many of the examples listed here are clearly larger than what could be achieved in a one or two semesters. Therefore, focus on the purpose of these examples rather than their size. |
|
1 |
Educational Games |
You could build a game that teaches a CS concept or tool. For example, CISCO offers a game for practicing with binary numbers, and this game helps in learning vim. The Human Resource Machine is an excellent example of a game that teaches low-level programming in assembly. While True: learn() is a game on machine learning and neural networks, and CodeCombat teaches front-end web development languages through a strategy game. Many games also exist that are tailored towards introducing kids to algorithmic thinking like: Help Gidget, Light Bot and CodeMonkey. The game does not have to offer sophisticated graphics or logic. For example, Untrusted is a game in ASCII graphics that provides practice on reading, modifying, and writing code in JavaScript. TIS-100 is also a game with simple graphics that focuses on programming in assembly language. |
|
2 |
Tutoring Systems |
Teaching CS does not have to be done through a game. You could build an interactive tutoring system that teaches a CS concept or tool. Examples of such systems include Codecademy, Grok Learning, Code Avengers and CrunchZilla. Lessons on these platforms generally involve tutorial text synchronized with practice coding exercises that offer feedback in real time. Some of these platforms also use Gamification techniques to incentivize their learners. Less sophisticated tools also exist that specialize in teaching one programming language. For example, CSS Diner and FlexBox Froggy provide interactive challenges that walk the learner through the basic concepts of CSS. Some tutoring systems try to be more intelligent by providing personalized feedback depending on the student answers and changing the exercises or the learning environment depending on the concepts the student is struggling with (see this Wikipedia article for more on Intelligent Tutoring Systems). Examples of systems that claim to do this in a CS context include iList and ChiQat. Very related to tutoring systems are tools that allow practicing with a certain CS concept or programming language. These usually target learners that want to sharpen their skills rather than learn from scratch. Examples of such tools include HackerRank, Code Wars, CheckIO, and PracticeIt. Many of these tools are Gamified to make the practice experience more engaging. An example of a less sophisticated practice tool is Regex Golf, which provides interactive exercises on Regular Expressions (the same website also offers ReturnTrue for practicing with JavaScript). |
|
3 |
Tools for Authoring CS Lessons and Exercises |
CS instructors need tools for creating online lessons and exercises for programming concepts. Examples of such systems include Stepik, PCRS, and CodeHS (although CodeHS is a more general learning management system). Runestone Interactive and ZyBooks allow authoring books using tools to create visualizations and interactive programming exercises. WebSheets allows instructors to create automatically graded programming exercises, where students can fill-in-the-blanks provided in some starter code. You can think of building a new tool that targets a certain programming language or CS concept (like networking, DFAs, regular expressions, proofs, etc.) or that improves how the current tools provide their functionality. |
|
4 |
Simulators and Visualization Tools |
Interactive visualizations can make difficult algorithms, data structures and concepts more accessible to learners. They provide students with means to experiment and understand, as well as instructors with an easy way to show mechanisms that typically require a lot of drawing and erasing on the board. Many algorithm visualization tools exist. For example, VisualAlgo and this website provide a library of algorithm and data structure visualizations (with some interactivity). Algo-Visualizer provides tools for creating custom algorithm and data structure visualizations and Open DSA allows creating lessons that involve interactive data structure visualizations. You can build interactive visualizations for certain algorithmic techniques that are not well-covered in the above-mentioned tools, or introduce different interactivity aspects. Your tool can introduce new ways for visualization or make visualization authoring more accessible to instructors. You can also build a simulator that facilitates understanding and explaining non-programming concepts. Examples of such simulators include this Turing Machine Simulator, LogiSketch that allows sketching logic circuits and simulating them, Automaton Simulator and FSM Simulator for simulating finite state machines, and this simulator for simulating networks. |
|
5 |
Assessment Tools |
How can we make grading programming assignments and exams easier? How can instructors provide feedback on students code more effectively? There are many systems that allow creating programming assignments, automatically grading them and providing feedback and grades to the students. Examples include Ed, OkPy, INGInious, Autolab, Submitty and MarkUs. Each of these systems approaches auto-grading differently and provides different course management and assignment management features. On the other hand, FindBugs, CheckStyle and PMD are examples of libraries that can be embedded in auto-grading scripts and systems. They are meant to check certain aspects of programs like style and object oriented design. GradeScope is an example of a system that is dedicated to facilitate grading and providing feedback, rather than automatically grading (although it has an auto-grader). It shares some features with CodePost, which was developed at Princeton for providing feedback for programming assignments and exams. On the other hand, tools like PeerGrade and Aropa allow students to provide feedback to each other’s work (see this paper for more on peer-assessment). Plagiarism Detection is also an integral part of the assessment process. Most auto-graders provide plagiarism detection as an integrated feature, but the detection accuracy varies from an auto-grader to another. Some systems are dedicated only for plagiarism detection like JPlag and MOSS. However, there is still much room for improving accuracy and the presentation of results, as well as for implementing detection tools that target certain types of assignments and programming languages. |
|
6 |
Other Tools |
You can build any tool you may think of for making the life of CS students and/or CS instructors easier. Here is a miscellaneous list of examples that may not fall directly in the categories discussed above:
You could also think beyond conventional applications and introduce CS educational tools that make use of hardware like Raspberry Pi and Ardhuino, or Virtual Reality apps that teach a certain CS concept (maybe take a kid in a tour inside a computer? Or allow delving inside a data structure or the memory stack during the execution of an algorithm?). You could also think of tools that help people with disabilities learn CS or develop innovative ways for helping people without internet or computer access (like in refugee camps) learn CS. The following questions can help you in thinking of an idea:
| |
7 |
Educational Data Mining |
Instead of building an educational tool, you could analyze data to answer a CS Education research question. The Wikipedia articles on Learning Analytics and Educational Data Mining provide an excellent overview of how data could be mined and analyzed to help us understand how students learn and help make educational software more intelligent and adaptable to the learner needs. This article also provides a survey for the use of learning analytics and data mining in the context of computing education. |
|
8 |
CS Education and Generative AI |
ChatGPT and other generative AI tool and APIs have a great potential to disrupt how we teach or learn computer science. Generative AI can also be a powerful tool for rethinking how we build CS education tools like the ones mentioned before. For example: How can we use generative AI to automate the grading of programming assignments? Answering such questions can lead to interesting projects that involve both design and experimentation. |
|
* |
Examples of Student Projects Completed in Previous Semesters |
|
Last modified: