  This study examines the use of large language models (LLMs) by undergraduate
and graduate students for programming assignments in advanced computing
classes. Unlike existing research, which primarily focuses on introductory
classes and lacks in-depth analysis of actual student-LLM interactions, our
work fills this gap. We conducted a comprehensive analysis involving 411
students from a Distributed Systems class at an Indian university, where they
completed three programming assignments and shared their experiences through
Google Form surveys.
  Our findings reveal that students leveraged LLMs for a variety of tasks,
including code generation, debugging, conceptual inquiries, and test case
creation. They employed a spectrum of prompting strategies, ranging from basic
contextual prompts to advanced techniques like chain-of-thought prompting and
iterative refinement. While students generally viewed LLMs as beneficial for
enhancing productivity and learning, we noted a concerning trend of
over-reliance, with many students submitting entire assignment descriptions to
obtain complete solutions. Given the increasing use of LLMs in the software
industry, our study highlights the need to update undergraduate curricula to
include training on effective prompting strategies and to raise awareness about
the benefits and potential drawbacks of LLM usage in academic settings.
