- Teaching and Learning Programming
- Online Learning and Analytics
- Software Engineering Research
- Advanced Malware Detection Techniques
- Experimental Learning in Engineering
- Online and Blended Learning
- Educational Games and Gamification
- Information and Cyber Security
- Security and Verification in Computing
- International Student and Expatriate Challenges
- Innovative Teaching Methods
- Innovative Teaching and Learning Methods
- Genetics, Bioinformatics, and Biomedical Research
- AI in Service Interactions
- Software Engineering Techniques and Practices
- Mobile Learning in Education
- Quantum-Dot Cellular Automata
- Second Language Learning and Teaching
- Social Media and Politics
- Educational Research and Pedagogy
- Wikis in Education and Collaboration
- Open Source Software Innovations
- Criminal Justice and Corrections Analysis
- Privacy-Preserving Technologies in Data
- Text Readability and Simplification
University of California, San Diego
2019-2025
University of Wisconsin–Madison
2017-2019
Large language models (LLMs) like ChatGPT are changing computing education and may create additional barriers to those already faced by non-native English speakers (NNES) learning computing. We investigate an opportunity for a positive impact of LLMs on NNES through multilingual programming exercise generation. Following previous work with LLM generation in English, we prompt OpenAI GPT-3.5 4 natural languages (English, Tamil, Spanish, Vietnamese) introductory problems, sample solutions,...
ChatGPT is a conversational AI platform that can produce code to solve problems when provided with natural language prompt. Prior work on similar models has shown they perform well typical intro-level Computer Science problems. However, little known about the performance of such tools Data (DS) In this work, we assess assignments from three DS courses varying difficulty levels. First, apply raw assignment prompts students and find performs dataset(s) descriptions progressive question...
Efforts to bring incarcerated and formerly individuals into the field of computing stand improve equitable access both jobs, consequently benefits our tools innovations through inclusion more diverse perspectives. This report describes design execution a college level introductory course conducted with 26 students currently at prison in United States Fall 2022. We discuss ways that environment student body differ from traditional classes, how this impacted course. found despite significant...
Live-coding is an approach to teaching programming by writing actual code during class as part of the lectures. In a live-coding session, instructor thinks aloud while and students are able understand process observing thought processes instructor. our study, we conducted session two groups intervention that was originally designed for studying effects using native language learning programming. We analyzed student feedback data collected found many have mentioned about usefulness grounded...
Computer Science (CS) is taught in India, using English as the medium of instruction, to students whose native language not English. This places a high cognitive load on who learn programming for first time and are very proficient The problems these face become even harder since learning program can be an incredibly difficult task. Our study aims find out if student's has any effect ability programming. We linked list, basic concept CS, two groups undergraduate week Tamil Nadu, India. used...
Previous research has been devoted to improving the experience of non-majors in introductory CS courses. In this study, we compare experiences two different courses, specifically with respect fears about taking course and change confidence levels. CS0 is a computing intentionally designed for non-majors, CS1 more traditional course. Both these courses were composed primarily taught by same instructor. Survey data was collected from 124 students enrolled CS0, 502 CS1. Through qualitative...
Live coding---a pedagogical technique in which an instructor plans, writes, and executes code front of a class---is generally considered best practice when teaching programming. However, only few studies have evaluated the effect live coding on student learning controlled experiment most literature relating to identifies students' perceived benefits live-coding examples. In order empirically evaluate impact coding, we designed CS1 course taught Python at large public university. two remote...
Prior work has highlighted the gap between industry expectations for recent university graduates and abilities those possess. These works have even specifically recommended that students be given opportunity to on large, pre-existing code bases in their undergraduate career. This paper presents our experience teaching a newly-created course calledWorking with Large Code Bases. Guided by Cognitive Apprenticeship approach provide an authentic classroom emphasizes implicit processes techniques...
The US incarcerates more people, and at a higher rate, than any other country in the world---predominantly low-income people of color. Higher education prison (HEP) has powerful impact on justice-impacted improving their quality life during incarceration reducing likelihood returning to post-release. HEP nearly disappeared 1994 after Pell Grant eligibility was eliminated for incarcerated students, which recently reinstated. More computing educators can reach students with digital literacy...
Incremental development is the process of writing a small snippet code and testing it before moving on. For students in introductory programming courses, value incremental especially higher as they may suffer from more syntax errors, lack proficiency to address complicated bugs, be prone frustration when struggling correct code. However, evaluate effectiveness interventions that aim teach processes such development, we need develop measures assess processes. In this paper, present way...
Previous studies have shown that non-native English speakers (NNES) lower confidence levels at the beginning of term and higher academic expectations for themselves throughout term. Additionally, although study longer hours compared to native (NES), there were not any differences in their grades. To better understand experiences NNES learning Computer Science a U.S university, we examined possible factors may contribute stress sense belonging between NES NNES. From our investigation using...
Teaching programming using static code examples is the process of displaying pre-written and explaining purpose code. Live-coding writing in-class in front students thinking aloud while doing so. Static coding has more structure (similar to PowerPoint presentations) but lacks authenticity dynamic nature lively an audience since focus on end product (i.e., program) rather than which program came life. On other hand, live-coding engages as makes instructor's thought processes explicit...
Prior work has shown that the adjustment challenges faced by international students in English-speaking universities are primarily attributable to English language proficiency and culture. Although studies computing education have documented barriers non-native speakers face while learning CS using online programming platforms, little research been done on their experiences courses within a university setting. In this study, we seek understand of at United States. Through weekly surveys...
Prior studies in multilingual computing education have shown that many non-native English speakers (NNES) India struggle with introductory programming courses as they learn both a language (e.g., Java) and natural English) concurrently. Although multiple been conducted NNES whose first is Hindi or Tamil, we do not yet know the influence students' native may among Spanish speaking students United States. This replication study investigates effects of an instructional design integrating along...
Introductory computer systems courses teach students how a single program is executed inside computer, providing them with their first exposure to the logical internals of computing systems. This one introductory where can learn about security and need for robust coding. However, currently, these are taught focus on functionality efficiency only, ignoring almost entirely.
Introduction to programming is usually taught using a wide range of instructional techniques. Some common techniques among them are mini-lectures, live-coding and in-class coding. Each these three require varying level student activity. In this study, we group students We collected data in the form survey understand students' perceptions on The results suggest that like moderate activity (e.g., live-coding) more when compared great deal coding). believe our work has potential help...
Understanding an operating systems (OS) code base is a difficult task since it involves understanding huge amount of low-level C and assembly code. The inherent level difficulty associated with OS topics high because the element interactivity (i.e., material consists elements that heavily interact). mental effort learning complex subject like may be higher for non-native English speakers, when taught in natural language English) not students' native language. We were interested finding...