Explore Computer Science Education research areas at Duke Computer Science.
CS1/CS2 Learning, Pedagogy, and Curricula
The first two courses taken by students in higher education are called CS1 and CS2 from early curricular standards. How should these courses be structured and delivered so that every student is engaged, able to succeed, and prepared for future study? At Duke, we work to understand how learning occurs, how to effectively teach and engage all students in medium to large classes, and how to develop curricular resources that can succeed at many different institutions.
Broadening Participation in Computing
In the past decade, there has been a widespread interest in ensuring that access to computer science for all is accessible and equitable from K-12 through higher education: equitable across race, gender, and socio-economic for all students. At Duke, we have worked extensively to develop tools, courses, and approaches at a national level from middle school through high school that have had significant success and impact. We use similar approaches to ensure equitable courses and class experiences in Duke Computer Science courses.
Practical and Ethical Approaches to Software and Computing
Software development and engineering practices in industry do not always scale down to be accessible and successful in an academic setting. At Duke, we develop assignments and approaches that leverage the experiences of alumni to help ensure that those graduates who continue in software can succeed immediately when they leave Duke. These approaches are based on design considerations that include efficiency, user experience, portability, scale, and ethics.
Software tools can aid in learning computer science concepts by offering different ways to make the abstract more concrete and providing immediate feedback to improve learning outcomes. At Duke, we develop software tools at all levels of the curriculum that are integrated into the classroom experience. JFLAP allows students to visualize and experiment with theoretical concepts including proofs, automata, grammars, parsing, and L-systems. APTs are small algorithmic problem-solving exercises, with included test cases, that allow students to practice coding with immediate feedback about the correctness of their solution. Checklist combines analyses from a variety of open source static analysis tools to provide immediate feedback on software design, showing students what things are being done well and what things can be improved.