Answers.Body: <p>We have this problem at my institution as well.  I am encouraged by @BenI's experience and I agree the best approach is &quot;[enlist] the students as partners in their own learning&quot;.  I am intending to start by explaining <em>why</em> AI is bad for helping them to learn programming but when they know how to program competently, that is the time to use AI to automate programming tasks.  Essentially to use the tools in industry they need to be able to understand the code generated by the AI and evaluate whether it is good code (from various perspectives).  The analogy I have used before is that expected to learn by watching someone else code (which includes me, youtube videos and AI tools) is a bit like going to the gym and watch other people pump iron and wonder why your muscles aren't growing.  You will learn a bit about good form and how to make an exercise program, but for some things there is no alternative to doing the work yourself.  What you want is something like a spotter - who provides minimal help allowing you to complete your set (and I mention that the teaching assistants in the lab are very good at helping you to solve your problems without just telling you exactly what to do).</p>
  <p>I think a large part of the problem is that using AI will encourage surface learning rather than deep understanding.  Another approach might be to emphasise that for employability, you need to be able to add some value to the AI tools.  As the tools get better, it will be easier to generate prompts and using AI to generate code will just be an everyday skill that the general public have.  It is a bit like the late 90s/early 00s people made good money writing web sites for people and small companies, but these days people can do that for themselves using e.g. SquareSpace and WordPress. The students will need to be able to understand the code and do the parts of the task the AI can't do adequately (because it doesn't understand the code).  For that you need more than shallow learning.  If they know that, it may help them make a better choice about surface and deep learning strategies?</p>
  <p>Problem solving is the part of programming that will suffer the most.  I've taught programming for nearly 30 years, and as the amount of online tutorial material has increased, <strong>average</strong> student problem solving ability has gone noticeably down (but not coding).  I suspect AI tools will accelerate that for students that opt for a surface learning approach.</p>
  <p>I'm going to make the video on how to install the tools (InteliJ) quite soon, and I will definitely be showing them how to turn the AI assistant stuff off.  I personally don't like the help the IDE constantly tries to give me - I generally find it just disrupts my concentration, so I often turn all that off as well.</p>
  <p>One solution to assessment is to give them a substantial programming task in advance, so they can spend the usual several weeks on the problem solving and working out how to code things, but then have them rewrite it from scratch in exam conditions in the lab, with restricted access to the WWW (e.g. pre-specified reference material).  If they have understood what they were doing in preparation, they should be able to complete the task in a few hours.  If they try to remember everything without understanding, they will struggle.  It will however increase the stress of the assessment.</p>
  <p>Sorry that these are somewhat incoherent ramblings, but I think this is an important topic and I am unhappy at the producers of AI tools for targeting students (e.g. with free licenses)  without first having conducted meaningful research into whether it is beneficial.</p>
  <p>I feel very sorry for modern CS students.  It was much easier to learn to program when I learned (early 80s) when you were forced to learn things by reading books (great for both breadth and depth of knowledge) and by writing programs.  In those days getting the computer to do <em>anything</em> was an achievement and was rewarding - much more difficult now that tools/frameworks can help you do quite impressive things without necessarily having much of a clue what you are doing and for every sensible program you can think to write there will be solutions or tutorials available online.  The modern environment is far too helpful to be good for learning.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-09-08T19:02:30.667Z
Answers.LastActivityDate: 2024-09-08T19:29:56.423Z
Answers.LastEditDate: 2024-09-08T19:29:56.423Z
Answers.UserDisplayName: Dikran Marsupial
Answers.Body: <p>While IntelliJ does support the Jetbrains AI Assistant, it is not installed (let alone on) by default in current versions (e.g., 2024.2). To enable it, you would need to</p>
  <ul>
  <li>Install the AI Assistant plugin from the Marketplace</li>
  <li>Setup a Jetbrains AI Pro account</li>
  <li>Enter credit card information to pay the monthly AI Pro service fee (after the free 1-week trial)</li>
  </ul>
  <p><a href="https://plugins.jetbrains.com/plugin/22282-jetbrains-ai-assistant/faq" rel="nofollow noreferrer">https://plugins.jetbrains.com/plugin/22282-jetbrains-ai-assistant/faq</a></p>
  <p>IntelliJ does have an annoying AI Assistant toolbar that attempts to advertise/nag you into taking the three steps above. But, unless your institution has some special license with Jetbrains to pay for the AI Pro service, enabling the AI Assistant would require a student to knowingly do so.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-09-04T16:52:42.300Z
Answers.Text: Seems like I mixed AI assistant with the Full Line code completion feature. Nonetheless I believe most (if not all) points from my questions still stand.
Answers.UserDisplayName: Fureeish
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-09-04T09:39:35.747Z
Answers.LastActivityDate: 2024-09-04T09:39:35.747Z
Answers.UserDisplayName: suffix
Answers.Body: <blockquote>
  <p>maybe it is just the new way and we, as educators, should embrace it.</p>
  </blockquote>
  <p>You are absolutely right that this is here to stay, so sticking our heads into the sand isn't a good strategy.  To wit, many of my more advanced courses allow for some AI use, but my intro classes never do.  But at the center of this kind of thinking must always be the curricular goals of the course.</p>
  <p>We used to use replit in my department, and when replit added automatic, default AI assistants, I was surprised to find that my students found them intensely frustrating, and they sought to turn it off.  I had to go around and help them all turn off the assistant.</p>
  <p>And that makes sense!  We had already enlisted the students as partners in their own learning (see below), and the AI assistant was getting in the way.</p>
  <p>In an intro class, the main product that the teacher seeks to produce is new neural organization with the brains of the students that allows them to read and write basic code.  This neural process is subverted by AI code suggestions.  In particular, students are denied the process of retrieval, which is a key trigger for neural encoding.</p>
  <p>I've outlined my own approach a few times now on this network, and a detailed run-down can be found <a href="https://cseducators.stackexchange.com/a/8092/27">in this answer</a>, but just to summarize it here:</p>
  <ol>
  <li>Make lab grades only a very small portion of the overall grade, and leave real assessment to live tests and quizzes that the students do in front of you.</li>
  <li>Explain to the students that the labs are learning grounds, designed to help them master material.  Explain to them the role that AI should, or shouldn't, play in each lab.  (I do this lab by lab, not course by course.)  Enlist the students in the cause of their own learning.  If they don't master this now, they will lose this opportunity, and it will also show up on the test.</li>
  <li>Invite students to ask you if they have any clarifying questions at any point, and use the guiding question &quot;does this help me learn&quot; to guide your own answers.</li>
  <li>Otherwise, don't fuss much -- you have made this a low portion of their grade, and have arranged your class so that if they &quot;cheat&quot;, they are really cheating themselves, and have made them aware of it.  Keep your hyper-vigilance for the tests.</li>
  </ol>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-09-04T13:14:51.470Z
Answers.LastActivityDate: 2024-09-04T13:14:51.470Z
Answers.UserDisplayName: Ben I.
Body: <p>In my University, we heavily lean on Java as our primary language of choice. During the very first programming course (Basics of Programming in Java, 60 hours) for quite some time we have been starting with simple text editor + Terminal and, after a few hours, we've been migrating to IntelliJ IDEA.</p>
  <p>This was a decent middle ground between showing them the most straightforward (because <em>simple</em> doesn't really fit well here in my opinion) way of running things (JDK was already installed on the machines they were using) and &quot;the way business does things.&quot;</p>
  <p>However, I feel like we are facing quite a problem here - IntelliJ (alongside some other JetBrains' IDEs) has integrated <s>AI assistant</s> Full Line Code Completion, that is switched on by default. Disabling it for every installation is not suitable for us. What's more, students who download the IDE to mimic the University's setup will also have it on by default.</p>
  <p>The main problem I see with it is that people will more blindly follow AI suggestions instead of thinking about the core of the problem. This will likely hinder their ability to reason about problems and fixing them when AI inevitably fails to do their job for them.</p>
  <p>There is another side of the coin though - maybe it is just the new way and we, as educators, should embrace it. Maybe the correct way to handle this &quot;problem&quot; was not to treat it as a problem at all. Maybe we should not only encourage, but even <em>mandate</em> that students use code assistants that will be widely available for them so that they can quickly glance over a broader range of problems and solutions in order to help them spot the patterns of correct and incorrect code better.</p>
  <p>AI, being the hot topic for quite some time now, has proven to be challenging phenomenon. Has anyone here successfully incorporated AI into their introductory courses and found some point of views that help out in these kind of situations?</p>
  
Tags: <programming><java><ai>
Title: Using IDEs with built-in AI code assistance for introductory courses
ThreadText: # Using IDEs with built-in AI code assistance for introductory courses
  
  (Asked by: username_0 on 2024-09-03)
  
  In my University, we heavily lean on Java as our primary language of choice. During the very first programming course (Basics of Programming in Java, 60 hours) for quite some time we have been starting with simple text editor + Terminal and, after a few hours, we've been migrating to IntelliJ IDEA.
  
  This was a decent middle ground between showing them the most straightforward (because *simple* doesn't really fit well here in my opinion) way of running things (JDK was already installed on the machines they were using) and "the way business does things."
  
  However, I feel like we are facing quite a problem here - IntelliJ (alongside some other JetBrains' IDEs) has integrated ~~AI assistant~~ Full Line Code Completion, that is switched on by default. Disabling it for every installation is not suitable for us. What's more, students who download the IDE to mimic the University's setup will also have it on by default.
  
  The main problem I see with it is that people will more blindly follow AI suggestions instead of thinking about the core of the problem. This will likely hinder their ability to reason about problems and fixing them when AI inevitably fails to do their job for them.
  
  There is another side of the coin though - maybe it is just the new way and we, as educators, should embrace it. Maybe the correct way to handle this "problem" was not to treat it as a problem at all. Maybe we should not only encourage, but even *mandate* that students use code assistants that will be widely available for them so that they can quickly glance over a broader range of problems and solutions in order to help them spot the patterns of correct and incorrect code better.
  
  AI, being the hot topic for quite some time now, has proven to be challenging phenomenon. Has anyone here successfully incorporated AI into their introductory courses and found some point of views that help out in these kind of situations?
  
  **Tags:** programming, java, ai
  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_3 on 2024-09-04. Score: 4
  
  > maybe it is just the new way and we, as educators, should embrace it.
  
  You are absolutely right that this is here to stay, so sticking our heads into the sand isn't a good strategy. To wit, many of my more advanced courses allow for some AI use, but my intro classes never do. But at the center of this kind of thinking must always be the curricular goals of the course.
  
  We used to use replit in my department, and when replit added automatic, default AI assistants, I was surprised to find that my students found them intensely frustrating, and they sought to turn it off. I had to go around and help them all turn off the assistant.
  
  And that makes sense! We had already enlisted the students as partners in their own learning (see below), and the AI assistant was getting in the way.
  
  In an intro class, the main product that the teacher seeks to produce is new neural organization with the brains of the students that allows them to read and write basic code. This neural process is subverted by AI code suggestions. In particular, students are denied the process of retrieval, which is a key trigger for neural encoding.
  
  I've outlined my own approach a few times now on this network, and a detailed run-down can be found [in this answer](https://cseducators.stackexchange.com/a/8092/27), but just to summarize it here:
  
  1. Make lab grades only a very small portion of the overall grade, and leave real assessment to live tests and quizzes that the students do in front of you.
  2. Explain to the students that the labs are learning grounds, designed to help them master material. Explain to them the role that AI should, or shouldn't, play in each lab. (I do this lab by lab, not course by course.) Enlist the students in the cause of their own learning. If they don't master this now, they will lose this opportunity, and it will also show up on the test.
  3. Invite students to ask you if they have any clarifying questions at any point, and use the guiding question "does this help me learn" to guide your own answers.
  4. Otherwise, don't fuss much -- you have made this a low portion of their grade, and have arranged your class so that if they "cheat", they are really cheating themselves, and have made them aware of it. Keep your hyper-vigilance for the tests.
  
  
  ---
  
  ### Answer by username_2 on 2024-09-04. Score: 3
  
  While IntelliJ does support the Jetbrains AI Assistant, it is not installed (let alone on) by default in current versions (e.g., 2024.2). To enable it, you would need to
  
  * Install the AI Assistant plugin from the Marketplace
  * Setup a Jetbrains AI Pro account
  * Enter credit card information to pay the monthly AI Pro service fee (after the free 1-week trial)
  
  <https://plugins.jetbrains.com/plugin/22282-jetbrains-ai-assistant/faq>
  
  IntelliJ does have an annoying AI Assistant toolbar that attempts to advertise/nag you into taking the three steps above. But, unless your institution has some special license with Jetbrains to pay for the AI Pro service, enabling the AI Assistant would require a student to knowingly do so.
  
  > **Comments:**
  > **username_0**: Seems like I mixed AI assistant with the Full Line code completion feature. Nonetheless I believe most (if not all) points from my questions still stand.  
  
  ---
  
  ### Answer by username_1 on 2024-09-08. Score: 1
  
  We have this problem at my institution as well. I am encouraged by @BenI's experience and I agree the best approach is "[enlist] the students as partners in their own learning". I am intending to start by explaining *why* AI is bad for helping them to learn programming but when they know how to program competently, that is the time to use AI to automate programming tasks. Essentially to use the tools in industry they need to be able to understand the code generated by the AI and evaluate whether it is good code (from various perspectives). The analogy I have used before is that expected to learn by watching someone else code (which includes me, youtube videos and AI tools) is a bit like going to the gym and watch other people pump iron and wonder why your muscles aren't growing. You will learn a bit about good form and how to make an exercise program, but for some things there is no alternative to doing the work yourself. What you want is something like a spotter - who provides minimal help allowing you to complete your set (and I mention that the teaching assistants in the lab are very good at helping you to solve your problems without just telling you exactly what to do).
  
  I think a large part of the problem is that using AI will encourage surface learning rather than deep understanding. Another approach might be to emphasise that for employability, you need to be able to add some value to the AI tools. As the tools get better, it will be easier to generate prompts and using AI to generate code will just be an everyday skill that the general public have. It is a bit like the late 90s/early 00s people made good money writing web sites for people and small companies, but these days people can do that for themselves using e.g. SquareSpace and WordPress. The students will need to be able to understand the code and do the parts of the task the AI can't do adequately (because it doesn't understand the code). For that you need more than shallow learning. If they know that, it may help them make a better choice about surface and deep learning strategies?
  
  Problem solving is the part of programming that will suffer the most. I've taught programming for nearly 30 years, and as the amount of online tutorial material has increased, **average** student problem solving ability has gone noticeably down (but not coding). I suspect AI tools will accelerate that for students that opt for a surface learning approach.
  
  I'm going to make the video on how to install the tools (InteliJ) quite soon, and I will definitely be showing them how to turn the AI assistant stuff off. I personally don't like the help the IDE constantly tries to give me - I generally find it just disrupts my concentration, so I often turn all that off as well.
  
  One solution to assessment is to give them a substantial programming task in advance, so they can spend the usual several weeks on the problem solving and working out how to code things, but then have them rewrite it from scratch in exam conditions in the lab, with restricted access to the WWW (e.g. pre-specified reference material). If they have understood what they were doing in preparation, they should be able to complete the task in a few hours. If they try to remember everything without understanding, they will struggle. It will however increase the stress of the assessment.
  
  Sorry that these are somewhat incoherent ramblings, but I think this is an important topic and I am unhappy at the producers of AI tools for targeting students (e.g. with free licenses) without first having conducted meaningful research into whether it is beneficial.
  
  I feel very sorry for modern CS students. It was much easier to learn to program when I learned (early 80s) when you were forced to learn things by reading books (great for both breadth and depth of knowledge) and by writing programs. In those days getting the computer to do *anything* was an achievement and was rewarding - much more difficult now that tools/frameworks can help you do quite impressive things without necessarily having much of a clue what you are doing and for every sensible program you can think to write there will be solutions or tutorials available online. The modern environment is far too helpful to be good for learning.
  
  
  ---
  
  