Sunday, June 29, 2025

Challenges in AI-Assisted Programming

 


The Double-Edged Sword: Challenges in AI-Assisted Programming


In my practice with AI-enhanced programming, I am exploring the complexities and pitfalls of relying on AI for code generation in modern development. This paper briefly introduces my reflections about AI-enhanced programming.

AI in Coding: The Promise vs. The Reality

AI tools have revolutionized coding, promising unprecedented speed and efficiency by generating boilerplate code, suggesting functions, and even writing entire scripts. While these tools excel at repetitive tasks and common patterns, their application in complex or nuanced programming scenarios often introduces unforeseen challenges, particularly in understanding and debugging.

The Hidden Costs: Debugging AI-Generated Code

One of the most significant challenges with AI-generated code emerges when dealing with complex tasks. While the code might be syntactically correct, it can contain subtle logical flaws or fail to account for edge cases, making traditional debugging methods less effective. As I have done this week, developers may find themselves spending significant effort not just on fixing bugs, but on understanding *why* the AI made a particular decision, turning debugging into a complex detective hunt.

Beyond the Code: Quality, Context, and Skill Degradation

AI's impact extends beyond just functional correctness. Issues like non-idiomatic code, inconsistent coding styles, and a potential over-reliance on AI can affect overall project health and even developer skill sets.

The "Black Box" Problem:

AI-generated code, especially for complex algorithms, can sometimes feel like a black box. Understanding its internal logic and how it arrives at a solution is often opaque, making it difficult to optimize, secure, or troubleshoot when issues arise beyond simple syntax errors.

Lack of Nuance & Context:

AI models lack true understanding of project-specific architectural decisions, legacy code complexities, or implicit team conventions. This can lead to functionally correct but poorly integrated or inefficient code that requires significant human refactoring.

Code Quality & Consistency:

Maintaining a consistent coding style, adhering to best practices, and writing idiomatic code across a large project can be challenging with AI tools. Different prompts or iterations can produce varied styles, adding to technical debt.

Potential Skill Degradation:

Over-reliance on AI for routine coding tasks might lead to a degradation of fundamental programming and problem-solving skills among developers over time, making them less capable of truly understanding or fixing complex issues when AI falls short.


Navigating the Future: Strategies for Effective AI-Assisted Development

Based on the points I've gathered while practicing AI-enhanced programming, I believe that learning to code still requires independent thinking, along with a deep understanding and mastery of programming fundamentals, including logic, syntax, and the nuances of solving specific demands. While challenges exist, strategic integration of AI can still enhance productivity. The key lies in adopting best practices that prioritize human oversight and understanding.
Clear & Iterative Prompting:
Provide highly specific and detailed prompts. Break down complex tasks into smaller, manageable chunks for AI generation, and iterate on prompts based on early outputs.
Human-in-the-Loop Review:
Treat AI-generated code as a first draft. Thoroughly review, refactor, and understand every line. Do not blindly accept AI outputs.

Robust Testing & Validation:

Implement comprehensive unit tests, integration tests, and end-to-end tests for AI-generated code. Validate its behavior against requirements meticulously.

Maintain Foundational Skills:

Continue to hone core programming skills. A strong understanding of algorithms, data structures, and software architecture is essential to effectively guide AI and troubleshoot its outputs.









More thoughts about Copyright: Compliance and Utilization

 


Copyright: Compliance & Utilization


I curate this guide for creators and users on respecting and leveraging intellectual property. This guide will help in creating original works while ensuring compliance with copyright laws.


Complying with Copyright: Using Others' Content Legally

When using content created by others, it's crucial to ensure you have the legal right to do so. Unauthorized use can lead to infringement claims. Here are the primary ways to comply:

1. Obtain Express Permission/License:

The safest way is to directly ask the copyright holder for permission or to obtain a license (e.g., stock photo licenses, music licenses). This often involves a formal agreement or payment.

2. Understand Fair Use:

Fair use is a legal doctrine that allows limited use of copyrighted material without permission for purposes such as criticism, comment, news reporting, teaching, scholarship, or research. It's determined by four factors:

  • Purpose and character of the use (transformative vs. commercial)
  • Nature of the copyrighted work (factual vs. creative)
  • Amount and substantiality of the portion used
  • Effect of the use upon the potential market for or value of the copyrighted work

*Fair use is a legal defense, not a right. It's assessed case-by-case and can be risky.*

3. Utilize Public Domain Content:

Works in the public domain are no longer protected by copyright and can be used freely by anyone. This typically includes:

  • Works with expired copyright (e.g., generally 70 years after author's death in the U.S.).
  • Works specifically dedicated to the public domain.
  • Certain U.S. government works.

4. Leverage Creative Commons (CC) Licenses:

CC licenses are standardized tools that allow creators to grant specific permissions for their work in advance. When you find a CC-licensed work, you can use it according to its specified terms (e.g., requiring attribution, allowing non-commercial use). Always check the specific CC license attached to the work.

Utilizing Your Copyright: Protecting & Sharing Your Own Work

As a creator, understanding how to utilize your copyright is essential for protecting your work and controlling how it's used.

1. Automatic Copyright Protection:

In the U.S., copyright protection is **automatic** the moment your original work is fixed in a tangible medium (e.g., written, recorded, saved on a computer). You don't need to register it or add a copyright notice for it to exist.

2. Copyright Notice (©):

While not legally required for protection, adding a copyright notice to your work is highly recommended. It serves as a public declaration of your claim and can deter infringement.

Format: © [Year of First Publication] [Your Name/Company Name]

3. Copyright Registration (U.S. Copyright Office):

Registering your copyright with the U.S. Copyright Office is not mandatory but offers significant legal benefits and advantages for enforcement.

4. Sharing Your Work with Creative Commons (CC) Licenses:

If you want to share your work more broadly while retaining some control, you can apply a Creative Commons license. This tells the public precisely what permissions you grant (e.g., allowing reuse with attribution, or non-commercial use only). It operates *on top of* your underlying copyright.

The Morphological Maze: English vs. Chinese Word Forms

 


The Morphological Maze: English vs. Chinese Word Forms

Last week, I identified some difficulties for Chinese speakers learning English, and I believe this topic is worth elaborating on. I will develop more thoughts on this issue into content.

English utilizes complex morphology, meaning words change form (e.g., through suffixes or prefixes) to indicate grammatical function (e.g., plurals, verb conjugations, comparative adjectives). Chinese, however, is largely an isolating language, where words typically remain invariant regardless of their grammatical role. This absence of morphological inflection in Chinese makes English word forms particularly challenging for Chinese learners.

English Morphology Example:

  • Verb: walk, walks, walked, walking
  • Noun: cat, cats
  • Adjective: big, bigger, biggest

Chinese Invariance Example:

  • 走 (zǒu) - walk / walks / walked / walking (context determines)
  • 猫 (māo) - cat / cats (use measure words or context for plural)
  • 大 (dà) - big / bigger / biggest (use particles for comparison)

Sunday, June 22, 2025

Insights on Learning English as a Chinese Speaker



As a Chinese speaker, I have learned English for many years. However, like many Chinese learners, I find it very difficult to learn how to use English as native speakers do.

It's been a valuable experience to study and think about learning technology since joining the ISLT program. This summer, after more practice learning English, I have identified some specific reasons for the difficulties Chinese learners face.

In my opinion, the main reason Chinese speakers use "Chinglish" (a non-standard form of English) is primarily due to two fundamental differences between Chinese and English. First, English morphology is entirely different from Chinese. In the Chinese language, the same word can function as a verb, noun, or adjective. The rules for using different forms of a word to convey different meanings are completely unlike Chinese and are easily overlooked by Chinese learners. Second, English syntax, particularly the use of various tenses to describe activities across different times and procedures, is fundamentally different from Chinese. In Chinese, describing procedure and time involves directly using specific words, which does not alter the sentence structure. These two differences are deeply embedded in my speaking habits, thus easily leading to errors in English expressions.

I am very pleased to have discovered these issues this summer. I believe that when a problem can be described clearly and meaningfully, it is quite close to being completely solved.


Progress of programming practice2: data visualization




This week, I successfully used Python to draw stock prices in a diagram. Now, I can directly convert stock trade records into figures. The charts I draw in Python are simple, but they are quite flexible for expanding algorithms to support different data analysis models.


Although this was just a single, static figure, I have also learned the skills to visualize data for multiple stocks. For my next practice, I am considering creating a GUI for a dynamic stock price visualization system. 


Thursday, June 19, 2025

Networked knowledge activities, networked information and viral events



On the internet, there are many networked knowledge activities. However, as noted by Dennen et al. (2023) and Dennen et al. (2020), the concept of digital natives is not reliable in networked learning. The relationship between networked activities and the acquisition of knowledge is difficult to directly or completely observe through surveys and online footprints.

The internet is a place filled with complex information. Individuals encounter diverse information, much of which may be fragmented, containing content for emotional appeal, entertainment, advertising, and knowledge. While some information provides great resources for learning, not all of it does. Similarly, some online activities may aid learning, but not all are beneficial in that regard.

In many scenarios, people primarily use the internet to fulfill immediate needs, not necessarily to acquire knowledge. Viral events serve as profound examples of such scenarios. A recently popular event is the hot sale of the LABUBU blind box. Numerous media outlets, news reports, and forums have been discussing its recent widespread popularity. For me, the activity of watching LABUBU advertising videos or buying this type of plastic toy yields no direct knowledge. Its widespread popularity reflects impulsive consumption stimulated by the desire to follow fashion trends.

However, the successful dissemination of the LABUBU event did provide some insights. First, people might be primarily attracted by feelings, not knowledge. The success of such toys reflects that individuals may eagerly purchase something purely for enjoyment, without anticipating a long-term benefit. This phenomenon may offer insights into certain commercial principles. Second, if information about plastic toys can be so widely spread through viral events, knowledge could also be effectively disseminated through such events. I have a growing sense that some instructional content could be designed in a viral format and easily disseminated online.


References

Dennen, V. P., He, D., Shi, H., & Adolfson, D. (2023). College students, networked knowledge activities, and digital competence: Implications for online instructors. Online Learning, 27(4), 122–143. https://doi.org/10.24059/olj.v27i4.4046

Dennen, V. P., Rutledge, S. A., & Bagdy, L. M. (2020). (Dis)connected: The role of social networking sites in the high school setting. American Journal of Education, 127(1), 107–136. https://doi.org/10.1086/711016

Sunday, June 15, 2025

Feeling about social media




This week, I explored numerous social media platforms, including Flickr, Reddit, Pinterest, Diigo, Discord, Goodreads, and others. It was remarkable to discover so many new tools with diverse functions and to view a wide array of media products from other users, such as posts, comments, images, and shared experiences.

Social media provides us with an abundance of open information resources, some of which can serve as excellent educational tools. Through posts on Reddit, I gained ideas, experiences, and insights from other users. On Pinterest, I found many creative instructional images introducing various concepts. Most of this information is completely free of charge, presenting significant opportunities for learning from Open Educational Resources (OER).

However, as some Reddit posts reminded me, much information may be created by service providers, and these "free" resources can sometimes intentionally exaggerate, mislead, or deviate from real concepts or facts. It's a valuable reminder to remain vigilant and critically assess the information I encounter online.

Another important issue is that, despite the abundance of tools and information resources, my time available for learning is still constrained. Utilizing too many tools can cause time to become fragmented. Therefore, after experimenting with different platforms, I need to select and stick with only those tools that are most convenient and beneficial for my work and daily life.


Programming practice 2: data visualization



Data visualization is an essential function in programming. In my last programming practice, I gained significant knowledge about using loops in programs and automatically collecting data from web pages. This was a valuable, albeit small, step in my programming journey. To continue advancing my programming skills, I will now focus on practicing data visualization using Python.

Selecting a data source can be somewhat confusing, as there are many types of data, including text, numbers, ordinal data, and dummy variables. For this practice, I will use price data from the stock market and display it as a price diagram within my program. While this duplicates the functionality of most stock trading software, I believe it will be an excellent fundamental practice for a novice programmer. It will significantly improve my skills in visualizing time series data and understanding various functions relevant to data visualization.

Learning about intellectual property



In the internet era, a vast amount of information is shared and learned online. While enjoying the convenience of open educational resources, it's crucial to be aware of the legal requirements for intellectual property (IP) protection.

Intellectual property encompasses various forms, including copyrights, patents, trademarks, and trade secrets.

Copyrights protect original works of authorship, such as text, images, music, videos, and other media products. They safeguard authors' privileges, benefits, and incentives for their creations. The Creative Commons (CC) license allows creators to share their work with others while retaining their copyright. Instead of an "all rights reserved" approach, CC licenses offer a spectrum of "some rights reserved" options, promoting broader use and collaboration.

To enhance understanding of copyright, learning from U.S. Copyright Office | U.S. Copyright Office is highly beneficial. If I aspire to be an author in the future, I must become familiar with how to properly use others' media products and strictly adhere to copyright requirements. Thorough knowledge of copyright law is essential for responsible and ethical content usage.

It's also helpful to gain knowledge of patents from Patent Basics | USPTO , the official website for patents in the US.



Sunday, June 8, 2025

Diving into the CFA Community on Reddit




I am considering taking the CFA Level III exam in February 2026, so I've dedicated some time to the CFA community on Reddit to understand the topics of concern and learn from others' experiences.

In this community, I sense the study pressure is quite significant. People often post to discuss upcoming exam dates and express how stressful or boring the preparation process can be. Some posters talk about their feelings after receiving their charter, while others express frustration about not passing the exam.

Some are asking for partners to prepare for the exam, and I'm curious about how such partnerships can help. In my opinion, the exam covers so many concepts that it's difficult to see how communication alone could provide much help. However, purely out of curiosity, I replied to a post seeking study partners and am waiting to see how that goes.

Progress in Programming Practice 1: Automatically Collecting Data from Websites



Collecting data is the first step in conducting research. It is very important, which is why I set my first programming practice to automatically collect data by coding.

As a novice programmer, my initial step was to collect content from a single webpage using code. Collecting data from the internet is an essential method nowadays, given the convenience and plethora of resources available. Even though there are abundant resources online, collecting them manually is time-consuming and overwhelming. I believe it will be very helpful in my future research if I can use code to automatically collect data from the internet.

To achieve this, I first chose a simple HTML webpage, input the URL into Python code, and set a keyword. It was then easy to download the webpage and collect relevant text using keywords as tags. However, this wasn't very useful. To collect comprehensive data, the program needed to be able to select many webpages and collect content by keywords automatically.

Therefore, it became indispensable to set up numerous loops in the program and define many trigger conditions for these loops. The program needed to handle many decisions by itself, such as how to choose different webpages, sign in, discern old data from new, handle errors while opening webpages, save data according to different conditions, and so on.

In recent weeks, I spent a lot of time practicing how to set up multiple-level loops, as I found that configuring loops can be very complicated. For some periods, I felt confused about why the loops weren't working as I thought they would. After struggling with it, I found that using "matrix" (or perhaps a structured way to manage conditions/states,) can provide better triggers for complicated conditions.

Now, I have practiced multiple aspects of multi-stepped loops and successfully finished the small program. I have completed over a thousand lines of Python code, and I have a much better understanding of how to achieve automatic actions using code. This practice has truly taken a lot of time, but I believe it will be worth it.

Celebrating the Completion of Web 2.0 Course

  Celebrating the Completion of Web 2.0 Course Completing the Web 2.0 Learning and Performance course marks a significant milestone in my pr...