001. Chapter 1. Introducing AI-assisted programming with Copilot
002. Chapter 1. About the technology
003. Chapter 1. How Copilot changes how we learn to program
004. Chapter 1. What else can Copilot do for us
005. Chapter 1. Risks and challenges when using Copilot
006. Chapter 1. The skills we need
007. Chapter 1. Societal concerns about AI code assistants like Copilot
008. Chapter 1. Summary
009. Chapter 2. Getting started with Copilot
010. Chapter 2. Getting your system set up
011. Chapter 2. Working with Copilot in Visual Studio Code
012. Chapter 2. Addressing common Copilot challenges
013. Chapter 2. Our first programming problem
014. Chapter 2. Summary
015. Chapter 3. Designing functions
016. Chapter 3. Benefits of functions
017. Chapter 3. Roles of functions
018. Chapter 3. Whats a reasonable task for a function
019. Chapter 3. The cycle of design of functions with Copilot
020. Chapter 3. Examples of creating good functions with Copilot
021. Chapter 3. Summary
022. Chapter 4. Reading Python code Part 1
023. Chapter 4. Asking Copilot to explain code
024. Chapter 4. Top 10 programming features you need to know Part 1
025. Chapter 4. Summary
026. Chapter 5. Reading Python code Part 2
027. Chapter 5. Summary
028. Chapter 6. Testing and prompt engineering
029. Chapter 6. Closed-box and open-box testing
030. Chapter 6. How to test your code
031. Chapter 6. Revisiting the cycle of designing functions with Copilot
032. Chapter 6. Full testing example
033. Chapter 6. Another full testing exampleTesting with files
034. Chapter 6. Summary
035. Chapter 7. Problem decomposition
036. Chapter 7. Small examples of top-down design
037. Chapter 7. Authorship identification
038. Chapter 7. Authorship identification using top-down design
039. Chapter 7. Breaking down the process subproblem
040. Chapter 7. Summary of our top-down design
041. Chapter 7. Implementing our functions
042. Chapter 7. Going further
043. Chapter 7. Summary
044. Chapter 8. Debugging and better understanding your code
045. Chapter 8. How to find the bug
046. Chapter 8. How to fix a bug (once found)
047. Chapter 8. Modifying our workflow in light of our new skills
048. Chapter 8. Applying our debugging skills to a new problem
049. Chapter 8. Using the debugger to better understand code
050. Chapter 8. A caution about debugging
051. Chapter 8. Summary
052. Chapter 9. Automating tedious tasks
053. Chapter 9. How to use Copilot to write tools
054. Chapter 9. Example 1 Cleaning up email text
055. Chapter 9. Example 2 Adding cover pages to PDF files
056. Chapter 9. Example 3 Merging phone picture libraries
057. Chapter 9. Summary
058. Chapter 10. Making some games
059. Chapter 10. Adding randomness
060. Chapter 10. Example 1 Bulls and Cows
061. Chapter 10. Example 2 Bogart
062. Chapter 10. Summary
063. Chapter 11. Future directions
064. Chapter 11. Limitations and future directions
065. Chapter 11. Summary