write program
Position: Intelligent Coding Systems Should Write Programs with Justifications
Xu, Xiangzhe, Feng, Shiwei, Su, Zian, Wang, Chengpeng, Zhang, Xiangyu
Intelligent coding systems are transforming software development by enabling users to specify code behavior in natural language. However, the opaque decision-making of AI-driven coders raises trust and usability concerns, particularly for non-expert users who cannot inspect low-level implementations. We argue that these systems should not only generate code but also produce clear, consistent justifications that bridge model reasoning and user understanding. To this end, we identify two critical justification properties-cognitive alignment and semantic faithfulness-and highlight the limitations of existing methods, including formal verification, static analysis, and post-hoc explainability. We advocate exploring neuro-symbolic approaches for justification generation, where symbolic constraints guide model behavior during training and program semantics are enriched through neural representations, enabling automated consistency checks at inference time.
Programming as a Vehicle for Math
In March 2020, I gave a talk at Math for America, an organization that fosters professional development for K-12 math teachers in the New York City area. It was part of my PIM "book tour," though for this talk I focused on showcasing computers as a tool for creating things you care about, while framing the obstacles to creation as a perfect time to introduce mathematics. Most of the talk is examples of this. The MfA organizers never posted my talk online, and at this point I've lost hope that they will (thanks, Covid). So I'll recap the content of the talk, linking to my slides (click there for nice images and gifs) and the transcript I prepared in advance of that talk.
Meet the program that can write programs
A new AI tool can work with human programmers to analyze computer code they've written and generate new matching code to complete programs. Why it matters: The tool can help take some of the scutwork of programming off human experts' hands, leaving them freer to focus on the more creative parts of their jobs. But it also opens the door to a world in which programs could one day fully write programs, which may be bad news for some of the humans that currently do it. What's happening: Called Copilot, the new tool was launched this week by Microsoft, the collaborative coding platform Github and OpenAI, a machine-learning company that developed the text-generating model GPT-3. GPT-3 is a natural-language model trained on a massive quantity of text, which it can use to predict the relationship among words and sentences, allowing it to generate astoundingly convincing text when given a prompt.
Natural Language Processing is Fun! – Adam Geitgey – Medium
Natural Language Processing, or NLP, is the sub-field of AI that is focused on enabling computers to understand and process human languages. Let's check out how NLP works and learn how to write programs that can extract information out of raw text using Python! Note: If you don't care how NLP works and just want to cut and paste some code, skip way down to the section called "Coding the NLP Pipeline in Python". As long as computers have been around, programmers have been trying to write programs that understand languages like English. The reason is pretty obvious -- humans have been writing things down for thousands of years and it would be really helpful if a computer could read and understand all that data.
Deep Learning 101: Demystifying Tensors
Tensors and new machine learning tools such as TensorFlow are hot topics these days, especially among people looking for ways to dive into deep learning. Turns out, when you look past all the buzz, there's really some fundamentally powerful, useful and usable methods that take advantage of what tensors have to offer, and not just for deep learning situations. If computing can be said to have traditions, then numerical computing using linear algebra is one of the most venerable. Packages like LINPACK and the later LAPACK, are now very old, but are still going strong. At its core, linear algebra consists of fairly simple and very regular operations involving repeated multiplication and addition operations on one- and two-dimensional arrays of numbers (often called vectors and matrices in this context) and it is tremendously general in the sense that many problems can be solved or approximated by linear methods. The absolutely fundamental operation of linear algebra as implemented on computers is the dot product of two vectors.
Deep Learning 101: Demystifying Tensors
Tensors and new machine learning tools such as TensorFlow are hot topics these days, especially among people looking for ways to dive into deep learning. Turns out, when you look past all the buzz, there's really some fundamentally powerful, useful and usable methods that take advantage of what tensors have to offer, and not just for deep learning situations. If computing can be said to have traditions, then numerical computing using linear algebra is one of the most venerable. Packages like LINPACK and the later LAPACK, are now very old, but are still going strong. At its core, linear algebra consists of fairly simple and very regular operations involving repeated multiplication and addition operations on one- and two-dimensional arrays of numbers (often called vectors and matrices in this context) and it is tremendously general in the sense that many problems can be solved or approximated by linear methods. The absolutely fundamental operation of linear algebra as implemented on computers is the dot product of two vectors.
PROW: A step toward automatic program writing
Summary This paper aescriDes a program, called "PRUW", which writes programs. PROW accepts the specification of the program in the language of predicate calculus, decides the algorithm for the program and then produces a LISP program which is an implementation of the algorithm. Since the construction of the algorithm is obtained by formal theorem-proving techniques, the programs that PROW writes are free from logical errors and do not have to be debugged. The user of PROW can make PROW write programs in languages other than LISP by modifying the part of PROW that translates an algorithm to a LISP program. Thus PROW can be modified to write programs in any language.