Let's investigate how generative AI can support software development. I should probably back up and explain my background. I teach legal studies and practice law here in Maryland. However, before becoming an attorney, I spent about ten years working in information technology at a health center, ultimately serving as the director of that department.

In terms of formal education, I don't have a degree in information systems or application development. However, I''ve always been a computer hobbyist. I started learning to code in BASIC back in elementary school in the 1980s. I bought my first computer in middle school to share files using five-and-a-quarter-inch floppy disks with friends. Over the years, I''ve written applications for various commercial purposes. So while I''m not a professional software developer, I''m not unfamiliar with the field either.

That said, I was not a Python developer. Prior to the summer of 2023, I had no experience with Python. Most of my development had been in T-SQL, VBA, and other languages. Honestly, I don''t think I would''ve learned Python at all had it not been for ChatGPT. I learned Python through interacting with ChatGPT and have since used it for various scripting tasks.

Today, I have developed - or maybe more accurately, co-developed - a substantial body of code in Python. I didn''t write all of it myself, and that''s part of the beauty of software—you can quickly test whether something works. It''s not abstract; it''s concrete. Does it accomplish the program''s goals? Software development is iterative. I didn''t build this all at once, nor did ChatGPT. This was a collaboration between AI and me to accomplish specific tasks using Python.

The goal of one co-developed project was to solve an administrative headache that I—and I''m sure many faculty—face every semester: creating new courses in our Learning Management System (LMS). If you're starting from scratch, building a course manually is a massive undertaking. Even when reusing existing course materials, copying a previous course shell into a new one often requires tedious adjustments—especially due to differing course lengths.

For example, I teach Business Law in a standard 14-week format, but I also teach it as a 3-week winter course, a 5-week summer course, a 10-week late start, and a 7-week compressed class. Each version requires different due dates. Unfortunately, our LMS can only shift all dates forward by an arbitrary number of days, which isn't very helpful when changing from a 14-week to a 7-week course. Manually editing all the due dates is time-consuming and frustrating.

If your course only includes a single exam, it's not a big deal. But if you design courses with multiple assignments, reflections, discussions, and activities—as I do—it becomes a significant burden. Multiply that by teaching several sections, and it quickly becomes overwhelming. That''s what prompted this project.

I figured I could solve this problem using Python. I began by working with ChatGPT to analyze and approach the problem. When you export a course from Brightspace, there are various file formats. Common Cartridges are unfortunately encrypted, making them unreadable, but Brightspace also supports a proprietary format that is not encrypted.

In this format, course content appears as a collection of files, and all course objects—quizzes, assignments, discussions, checklists—exist as XML files. XML files are structured text files, and Python can navigate their structure using the `xml.etree.ElementTree` library.

I wrote a script, with ChatGPT''s help, to navigate these files and update due dates. For each object, like an assignment, the script finds the `` tag, calculates a new due date based on the course''s start and end dates, and updates the XML file accordingly.

The core idea is ratio-based rescheduling. If a 14-week class has an assignment due five days in, a 7-week version should schedule that assignment roughly three days in, based on a 2:1 compression ratio. The script calculates this adjustment automatically.

But it doesn't stop there. The script also considers holidays. For instance, the College now observes Juneteenth, which falls in the middle of the summer term, and spring break varies from year to year. Assigning due dates during these periods would be inappropriate. So the script cross-references a database of holidays and shifts due dates accordingly. It also ensures that adjusted dates don''t fall outside the new course start and end dates.

I also encountered issues with time zones—the time of day seemed to be off by about five hours. I added an offset to fix that as well.

In total, the script scans 57 XML files for due dates. These dates appear in different formats and locations depending on the object type. For example, checklist items use `dateend` rather than `duedate`, and discussions have availability periods instead of due dates. Each type requires unique handling, which is why the script includes many conditional checks.

In addition to due dates, I wanted to update discussion topics. I maintain a database of alternate prompts to keep online courses fresh. The script lets me choose which prompts to include, and then uses a rich text editor (TinyMCE) to insert them with proper HTML formatting into the XML files. These formatted prompts appear correctly for students inside the LMS.

All of this happens through a local web interface that I built with ChatGPT''s help. It connects to a MySQL database of discussion topics, and when I hit “Run XML Generation,” the script processes all the files in the input folder and writes updated versions to the output folder.

Once processed, I manually drag the updated files into the course export folder, compress them into a zip file, and import that into the LMS to populate the new course shell.

Now, regarding the code: I did not write this alone. I''ve only been working with Python for about a year and a half. While formal training would certainly help, I was able to use my prior programming experience—and effective prompt engineering—to collaborate with ChatGPT to build this system. When something didn''t work, I pasted the error message into ChatGPT and asked for help. It would suggest code changes, and we''d iterate until it worked.

The final product is 718 lines of code. This was not a small project. But without ChatGPT, I doubt I could have completed it—or even attempted it. The system didn''t write everything perfectly, but it offered invaluable support, generated useful code, helped troubleshoot errors, and dramatically reduced the development time.

The result is a sophisticated tool that automates a painful, repetitive process. It allows me to focus on what really matters—creating new course content, researching, and teaching—rather than wasting hours fixing dates in course shells.

This is a powerful example of how AI can enhance human productivity. For educators or developers managing similar tasks, this approach can offer substantial time savings and increased efficiency.