NSF IUSE Project

Supporting Project-Based Learning in Undergraduate Software Engineering Courses: This project aims to serve the national interest by increasing the use of evidence-based teaching practices in undergraduate computer science curricula. One such practice is project-based learning, which gives students opportunities to learn as they work on authentic real-world problems

About

Project-based learning, and other active learning practices, have been shown to increase student motivation and engagement, raise exam performance, and reduce failure rates. A major barrier to implementing project-based learning in the classroom is that instructors must provide students with the support they need to be successful learners as they complete project tasks. Without that support, students can get bogged down performing unessential tasks instead of learning the targeted concepts and skills. This project aims to increase the use of project-based learning in software engineering courses. To do so, the project will design, develop, and evaluate a reference software engineering course with a repository of twelve ready-to-use projects and associated active learning activities. These resources will enable instructors to easily assign project tasks for students to complete at home. It is anticipated that these resources will increase the capacity of instructors to effectively use project-based learning in their courses. In addition, project-based learning can help students prepare for industry careers by providing learning experiences that are like the work that software engineers do.

The overarching goal of this project is to increase student learning by encouraging and facilitating authentic computer science learning experiences. Data for formative evaluation of the developed project-based learning resources will be gathered through advisory board reviews, undergraduate beta testing, and in-house classroom trials. Field tests at multiple volunteer sites will assess the feasibility of implementing the project-based learning resources in college or university settings. Finally, a pilot study will be performed to assess the promise of the developed materials to improve student learning outcomes. The NSF IUSE: EHR Program supports research and development projects to improve the effectiveness of STEM education for all students. This project is in the Engaged Student Learning track, through which the IUSE program supports the creation, exploration, and implementation of promising practices and tools.

Course Projects

Project Breached

In this project, students will develop a secure web service to check if an email and password pair appear in a breached database. The project has two parts: loading hashed email and password pairs into a database, and creating a Flask-based website for users to verify their credentials securely. This project focuses on data security, cryptographic hashing, secure database management, and web development, providing students with practical experience in cybersecurity and ethical data handling.

Project Type
Greenfield
Tasks Type
2 parts that build on one another
Technologies
MySQL, Python, Flask
Target Students
3rd, and 4th year undergraduates students
Target Courses
Database, Cryptography, and Web development courses
Project Duration
A medium-scale project with a duration of about 3-8 weeks

Distributed TicTacToe (DT3) Project

This project is the design and implementation of a distributed TicTacToe game (DT3), that uses Socket programming to implement the common Client-Server model. The game allows players to register on an Android device, log in to their account, pair with other online players, and play the game. All game interactions between players go through the socket server. The socket server uses an embedded, lightweight database management system SQLite to track users and gaming information

Project Type
Brownfield
Tasks Type
4 Milestones that build on one another
Technologies
Java, Android, SQLite, Socket Programming
Target Students
2nd, 3rd, and 4th year undergraduates students.
Target Courses
Advanced programming, Software development, and Networking courses
Project Duration
A large-scale project with a duration of about 8-13 weeks

Project GPU

In this project, students will use GPU programming to implement parallel processing to efficiently speed up heavy-computing tasks when manipulating millions of pixels.

Project Type
Greenfield
Tasks Type
4 Milestones that build on one another
Technologies
Java, Android, SQLite, Socket Programming
Target Students
2nd, 3rd, and 4th year undergraduates students.
Target Courses
Advanced programming, Software development, and Networking courses
Project Duration
A large-scale project with a duration of about 8-13 weeks

Project Mango M2M

This project focuses on software maintenance of an open-source software called. Mango is a software platform for M2M communication. It is used for building custom web-based user interfaces for monitoring and controlling automation systems. The platform supports various protocols for integrating different systems and devices.

Project Type
Brownfield - Open Source
Tasks Type
7 Independent Feature Requests
Technologies
Web, Java, JavaScript
Target Students
3rd, and 4th year undergraduates students
Target Courses
Software maintenance, Software engineering, and Networking courses
Project Duration
A medium-large-scale project with a duration of about 6-13 weeks

Moodle Project

Moodle is a free and open-source learning management system. Moodle is used for blended learning, distance education, flipped classroom and other online learning projects in schools, universities, workplaces and other sectors.

Project Type
Brownfield - Open Source
Tasks Type
7 Independent Tasks of Feature Requests
Technologies
Web, PHP, JavaScript, Behat
Target Students
3rd, and 4th year undergraduates students
Target Courses
Software engineering, and Web development courses
Project Duration
A large-scale project with a duration of about 8-14 weeks

RSA Project

RSA (Rivest–Shamir–Adleman) is a public-key cryptosystem, one of the oldest widely used for secure data transmission. In this project, students will implement the RSA algorithm through integers and strings. And then they will debug a faulty RSA implementation and explain the errors fixed

Project Type
Greenfield
Tasks Type
4 Parts
Technologies
Python, RSA
Target Students
All undergraduates students
Target Courses
Programming, Security, Cryptography, and Software development
Project Duration
A small-medium-scale project with a duration of about 3-8 weeks

Soteria Project

In this project, students will apply their Python and Web programming knowledge to a Soteria web project. Soteria project demonstrates keystroke dynamics as an alternative Muli-Factor Authentication (MFA) other than the popular OTP or push notification MFAs

Project Type
Brownfield
Tasks Type
5 Independent Tasks as Feature Requests
Technologies
Python, Django, KeyStroke Dynamics
Target Students
Sophomores and Junior students
Target Courses
Programming and Web development
Project Duration
A small-medium-scale project with a duration of about 3-8 weeks

University Management System (UMS) Project

In this project, students will design and implement a web-based university management system. The system will make use of and extend an existing university database. The system will utilize the Django web framework to connect to MySQL and to hold together all components of the system including loading data from the database, representing the data as Python objects, and dynamically creating a web page for displaying the data.

Project Type
Greenfield
Tasks Type
6 Dependent Feature Requests
Technologies
MySQL, Python, Django
Target Students
Junior and Senior students
Target Courses
Database, Software engineering, and Web development
Project Duration
A large-scale project with a duration of about 8-14 weeks

VS-Code Project

In this project, students will build extensions for the VS-Code code editor. VS Code is a redefined, lightweight, open-source code editor optimized for building and debugging modern web and cloud applications. It offers advanced features like IntelliSense for enhanced syntax highlighting and autocomplete, built-in Git functionality, and extensive extensibility through VS Code Extensions

Project Type
Brownfield
Tasks Type
5 Independent Feature Requests
Technologies
JavaScript, TypeScript, Extension Architecture
Target Students
Junior and Senior students
Target Courses
Software development, Software maintenance, and Software engineering
Project Duration
A large-scale project with a duration of about 6-14 weeks

Project Web Server/Browser Prototype

A web server is software and hardware that uses protocols like HTTP to process and respond to requests from a client web browser over the Internet. On the other hand, a web browser is a software application that acts as a client that accesses the data of a particular website hosted by the web server and then displays the data in the proper format at the client end. Implementing something like the HTTP protocol or a real server/browser is obviously beyond the scope of this project. Instead, students will build only a simplified prototype that shows the core ideas of the server-client (browser) model via socket programming in C/C++.

Project Type
Greenfield
Tasks Type
3 Dependent Tasks
Technologies
C/C++, Socket Programming, Multithreading
Target Students
Junior and Senior students
Target Courses
C++ Programming, Networking, Software development, and Software engineering
Project Duration
A large-scale project with a duration of about 6-14 weeks

Project XFig

Xfig is a free and open-source vector graphics editor that runs under the X Window System on most UNIX-compatible platforms. Students will participate in managing and executing the process of developing significant new features for Xfig, starting from the conceptual idea stage through to the implementation stage.

Project Type
Brownfield
Tasks Type
7 Independent Feature Requests
Technologies
C/C++
Target Students
Junior and Senior students
Target Courses
C++ Programming, Software maintenance, and Software engineering
Project Duration
A large-scale project with a duration of about 6-14 weeks

Publications

[3] Suleiman, Ahmad D. and Hou, Daqing and Liu, Yu and DeWaters, Jan and Small, Mary M and de Souza, Juliana G and Shepherd, David "Mapping Learning Objectives of Project-Based Undergraduate Software Engineering Courses to CC2020 Competency Model" , 2023 https://doi.org/10.1109/FIE58773.2023.10342967

[2] Hou, Daqing and DeWaters, Jan and Small, Mary Margaret and Liu, Yu and Shepherd, David "The 2023 DREE Workshop on Designing and Running Project-Based Courses in Software Engineering Education" , 2023 https://doi.org/10.1109/FIE58773.2023.10342986

[1] De Souza, Juliana Goncalves and Flavell, Mikaila and Suleiman, Ahmad Daudu and Shepherd, David and DeWaters, Jan and Small, Mary Margaret and Liu, Yu and Hou, Daqing "The Importance of Project-Scale Scaffolding for Retention and Experience in Computing Courses" , 2023 https://doi.org/10.1109/FIE58773.2023.10343225