Stanford Webinar - How AI is Changing Coding and Education, Andrew Ng & Mehran Sahami

17 Oct 2024 (2 months ago)
Stanford Webinar - How AI is Changing Coding and Education, Andrew Ng & Mehran Sahami

Andrew Ng's Background and Focus

  • Andrew Ng is the founder of deeplearning.ai, a managing general partner at the AI Fund, founder and CEO of Landing AI, chairman and co-founder of Coursera, and an adjunct professor at Stanford University, with over eight million people having taken his machine learning or AI classes (38s).
  • Andrew Ng was the founding lead of the Google Brain team, served as VP and chief scientist at Baidu, and was formerly the director of the Stanford AI Lab, and was named by Time Magazine as one of the 100 most influential people in artificial intelligence in 2013 (59s).
  • Andrew Ng currently focuses on his entrepreneurial ventures, aiming to accelerate responsible AI practices in the global economy (1m8s).

Mehran Sahami's Background and Expertise

  • Mehran Sahami is the 10-cent Chair of the Computer Science Department and the James and Eleanor Chesebrough Professor in the School of Engineering at Stanford University, and has been involved in designing and thinking about computer science education (1m20s).
  • Mehran Sahami was a senior research scientist at Google, with research interests including computer science education, artificial intelligence, and ethics, and served as the co-chair of the ACM/IEEE-CS Joint Task Force on computer science curricula in 2013 (1m40s).
  • Mehran Sahami has also served as the chair of the ACM Education Board, an elected member of the ACM Council, and was appointed to the California Governor's computer science strategic implementation plan Advisory board (2m6s).
  • Mehran Sahami is known for being an excellent educator, with many students deciding to major in computer science after taking his classes, and has shared his teaching tips through videos on YouTube (3m1s).

Impact of LLMs on Coding and Software Development

  • Andrew Ng and Mehran Sahami are both involved in teaching and have made their lecture videos available online, with Andrew's machine learning lectures having over a million views, allowing people to learn from them (3m57s).
  • The recent widespread use of Large Language Models (LLMs) has changed the profession of coding and software development, with AI being applied to various fields, including chemistry and biology, and having a significant impact on the field of software engineering (4m18s).
  • The impact of AI on software engineering is exciting, with two main trends emerging: experienced developers using AI to work more efficiently and get more done, and people without much programming experience being able to write sophisticated programs (5m9s).
  • AI is helping to bring more people into software engineering by allowing them to learn and build applications quickly, without needing to remember the details of syntax or programming languages (5m41s).
  • The use of generative AI is transforming the way people think about education, particularly at the secondary and college levels, with a focus on industrial needs and the use of tools like GitHub Copilot (6m47s).
  • The widespread use of tools like GitHub Copilot is changing the way people work and the skills required for software development, with a focus on high-level skills like problem-solving and critical thinking (7m9s).
  • The use of AI in software development is allowing people to build compelling applications quickly, which would have previously taken months or years to learn and build (6m0s).
  • The field of software engineering is moving faster, with more software being shipped, and AI is helping to make the field more accessible to people without extensive programming experience (6m9s).
  • The expectation in academia and industry is that students graduating from college in the next one to five years will have skills in developing code using AI tools as part of their education to be effective software engineers (7m23s).
  • The integration of AI tools in education is seen as a necessity, and the focus is on determining the right level and approach to engage students with these tools as part of their educational process (7m52s).

AI in Software Development Education

  • There is ongoing debate about the appropriate place to introduce AI tools in the computer science education pipeline, with suggestions ranging from the first course to near the end of a student's degree (8m16s).
  • Academic institutions are trying to forecast where the future work is going and ensure that students have the skills to do jobs that will be around in the next 10-20 years (8m47s).
  • It is expected that many developers will use AI tools like GitHub Co-Pilot in the future to be more productive, but forecasting the fundamental skills to teach that will be generalizable and important for a long time is challenging (9m8s).

Using AI Tools for Coding and Learning

  • Effective use of AI tools like GitHub Co-Pilot, VS Code, and OpenEye Canvas requires training to know what to do and when to trust the code, and learning to use these tools efficiently can take time (9m50s).
  • AI tools can also be used to document code, with the ability to write comments or docstrings, saving time and increasing productivity (10m17s).
  • The use of AI tools like Gen I in coding is still evolving, and best practices are being developed, but it has the potential to greatly increase productivity and learning for developers (10m30s).
  • AI tools are not only generating code to make developers more productive but also teaching them about new concepts, languages, and techniques through literate coding, where developers can learn from the generated code and comments (10m54s).
  • The process of using AI tools becomes a learning experience for developers, resulting in two effects: increased productivity through code generation and long-term learning through the use of these tools (11m29s).
  • AI tools can help developers learn and apply design patterns in coding, such as the factory method design pattern, which can improve the architecture of their code (12m7s).
  • The use of AI tools can also help developers work with libraries and syntaxes they may not be familiar with, such as pandas for data manipulation or Streamlit for frontend development (13m0s).

Evolving Best Practices with AI Coding Tools

  • The generate and test paradigm, where AI tools generate code and developers test and verify it, is becoming more common, allowing teams to write software faster, but best practices are still evolving to ensure high-quality code (13m20s).
  • The use of AI tools in coding is changing the way developers work, and it is essential to develop best practices to ensure that the generated code is of high quality and reliable (13m36s).
  • Experienced developers are using AI tools effectively because they have a strong foundation in computer science, allowing them to evaluate and understand the tools' output, such as the factory model (13m49s).

Foundational Skills in the Age of AI

  • Foundational skills in computer science, such as probability and basic algorithms, are still essential for computer science majors to learn in order to effectively use AI tools and evaluate their output (14m9s).
  • A generating test or generate and verify paradigm may emerge with the use of AI tools, but it's crucial for students to understand the code generated by these tools to verify its correctness and appropriateness for the problem being solved (14m43s).
  • Students need to have experience with programming to make informed decisions about the code they're building, including understanding efficiencies, architecture, and trade-offs (15m17s).
  • In introductory programming courses, foundational skills such as thinking about programming concepts, putting them together in a language, and understanding programming style are still essential, regardless of the programming language used (15m34s).
  • These foundational skills include breaking down large problems into smaller pieces, defining interfaces between code modules, keeping code modular, and mentally modeling code execution to verify its correctness (16m8s).
  • These skills are unlikely to change significantly, even with the increasing use of AI tools, and are essential for students to learn in the first and second programming courses (16m32s).
  • Once students have acquired these foundational skills, they can effectively work with code generated by humans or machines, debug it, and identify areas for improvement (16m45s).
  • Foundational skills in coding are essential for evaluating the products of generative AI, and these skills are not likely to change much in the first couple of courses, but there is room for variation beyond that (16m51s).
  • Having a solid foundation in core skills is crucial, and there are many touch points along the way where these skills can be applied, such as in a senior project or Capstone (17m10s).
  • Evaluating the products of generative AI in coding requires a deep understanding of the context and the role of the code in a larger system (16m55s).

The Importance of Context in AI and Human Intelligence

  • One of the bottlenecks in getting AI systems to be more intelligent is that they often lack context about why certain things are done, and humans have a lot of context that AI systems are missing (17m54s).
  • AI systems can write code perfectly, but they may not have the context to make decisions about what code to write, and humans need to provide that context (18m31s).
  • Good software engineers and architects have a broad span of context about what's possible and what they're trying to do, and until AI systems can digitize and reason through that context, humans will need to make high-level decisions (19m44s).
  • Having context allows humans to make decisions quickly, such as deciding to implement a cache to improve software performance, and AI systems may not have the same level of context to make those decisions (18m58s).
  • The ability to reason through context and make decisions is essential for good software development, and AI systems are not yet able to replicate that ability (19m50s).

Potential Deskilling and the Need for Higher-Level Thinking

  • In the future, there's a concern about the potential deskilling of students as AI takes over certain tasks, but this might not necessarily be a bad thing as students can focus on higher-level issues (20m16s).
  • Stephanie Ker mentioned that recent advances in machine learning have led to a decline in researchers' ability to think deeply about mapping problems onto machine learning models, a skill that will still be necessary in data-sparse areas (20m35s).
  • As AI progresses, students may not need to learn low-level details, such as machine language, and can instead focus on higher-level issues, which is seen as a positive development (21m31s).
  • However, there is a concern that students may become complacent and lose the ability to think about foundational concepts, such as caching and parallelization, that can have a big impact on their code (22m7s).
  • It's hoped that there will always be people who think about these low-level concepts and find ways to improve them, even if not everyone needs to specialize in this area (22m35s).
  • The reality is that not everyone needs to be an expert in low-level optimization, but rather a team of specialists can work on this and benefit everyone else (22m48s).
  • An example from Facebook (now Meta) illustrates this, where a team focused on optimizing the PHP programming language, allowing others to benefit from their work (22m55s).
  • A company's implementation of PHP led to performance gains that benefited everyone in the company, as they were building on top of the same stack, and in some cases, their projected needs for machine provisioning actually decreased due to high efficiency gains (23m3s).

Abstraction Layers and Specialization in Computer Science

  • As AI tools get smarter, the potential for a world where efficiency gains lead to available machines being used for executing code increases, but it's essential to remember that people working at lower layers are helping create these optimizations (23m36s).
  • Computer Science has made significant progress due to multiple layers of abstraction, from quantum physics to high-level programming languages, and having people working on all layers of the stack is beneficial (24m6s).
  • When a new technology emerges, the ability to peer a couple of layers lower can be helpful, but as technology matures, the need to break through abstraction layers decreases (24m33s).
  • Understanding how certain processes, like sorting, work can be beneficial in specific corner cases, such as working with massive data sets, but most of the time, using someone else's library is sufficient (25m26s).
  • As layers of abstraction move up, it's essential to be thoughtful about how deep to ask everyone to go, as sometimes it's useful, and sometimes it becomes less useful (26m4s).
  • The dynamic of building up layers of abstraction and sometimes teaching people a couple of layers deeper can be beneficial, but it's also important to recognize when it's not necessary (25m17s).
  • The importance of people working on lower layers, such as quantum physics and the physics of transistors, should not be lost, as they are still contributing to progress in the field (24m27s).

Task-Based Analysis of Jobs and the Impact of AI

  • When considering the impact of AI on jobs, it's more useful to break down jobs into tasks and analyze how AI can automate or augment those tasks, rather than focusing on the jobs themselves (26m18s).
  • In the future, tasks that currently require a strong computer science background may be offloaded to individuals without formal education in the field, who can use AI tools to complete the tasks (26m55s).
  • However, this shift may also lead to new tasks and responsibilities for individuals, particularly those with a computer science background, who will need to think at a deeper level of abstraction and optimize AI systems (27m15s).
  • The task-based analysis of jobs was pioneered by Eric Brinson, Tom Mitchell, Daniel Rock, and others, who found that breaking down jobs into tasks can help identify opportunities for AI to automate or augment human work (27m33s).

The Importance of Coding and Computational Thinking

  • It's essential for almost everyone in the world to learn to code, as it provides the ability to precisely tell a computer what to do, which is a valuable skill in today's technology-driven society (28m6s).
  • Learning to code is not just about syntax or programming languages, but about the skill to break down problems and systematically tell a computer what to do (28m38s).
  • There is a convergence between English and programming languages, such as Python, where code is becoming more English-like, and English is becoming more structured and step-by-step, similar to pseudo code (29m1s).
  • Many people in various job roles, not just professional software engineers, are using code to improve their work, such as marketers, reporters, and investors, and with the help of AI as a coding companion, it becomes easier for everyone to code and drive productivity (29m25s).
  • The concept of computer science is closely related to computational thinking, which involves breaking down problems and thinking systematically, and this is a key aspect of introductory computer science classes (30m25s).

Literate Programming and Problem-Solving

  • The idea of literate programming, which was also promoted by Stanford Professor Don Knuth, is relevant to this discussion, as it emphasizes the importance of clear and readable code (30m45s).
  • When teaching programming, it's essential to consider the broader curriculum and the evolution of skills that students develop, and to focus on problem-solving rather than just programming (31m5s).
  • The goal of introductory computer science classes is not just to teach programming, but to help students develop problem-solving skills, including how to break down problems into smaller pieces, tackle them, and put them together to solve larger problems (31m34s).
  • Programming is a way to codify problem-solving skills and clarify thinking, and generative AI can be a symbiotic partner in this process, helping to identify different ways to break down problems (32m13s).
  • AI is changing the way people code by providing more power tools in the arsenal, empowering thought processes, and enabling people to think about smaller pieces they can contribute to, rather than having to generate code from scratch (32m28s).
  • The skills of problem-solving, computational thinking, and clarity of thinking are still essential and will remain important, even with the help of AI (32m45s).

Clarity of Thinking and the Benefits of Coding

  • Clarity of thinking is crucial when coding, as it requires describing tasks to a computer in a clear and executable manner, and this skill is also valuable in general communication between people (33m9s).
  • Studies suggest that training large language models on code can improve their performance on other tasks, and this may also be true for humans, as learning to code can teach a framework for breaking down problems and solving them in a step-by-step way (33m33s).
  • This idea is supported by a study by Carl Wieman, a Nobel Prize winner in physics, which found that computer science students performed significantly better than students from other majors in understanding a circuit function, possibly due to their systematic thinking skills (34m41s).
  • Systematic thinking is a key skill that computer science students develop, which enables them to execute tasks in a logical and methodical way, and this skill can be valuable in many areas beyond coding (35m28s).
  • When modeling the execution of mechanisms in the world, humans think systematically about how inputs map to outputs, and it's not surprising that computers learning generalizations based on this might carry those generalizations into other tasks (35m36s).

Societal Impacts and Responsible AI in Education

  • There's a movement in computer science education to bring more discussion around societal impacts and not just thinking of computer science as purely programming, but how to use computer science to solve bigger social problems (36m8s).
  • At Stanford, there's an effort to teach students to think about the implications of the technology they're building, who's being impacted, and what the distributional effects are on different groups (36m47s).
  • A program called Embedded Ethics has been started, which includes modules in classes like machine learning that discuss social issues related to the technical work being done, such as fairness, algorithmic decision-making, and privacy (37m7s).
  • The goal of Embedded Ethics is to help students see that their technical work has social implications and to carry that forward into their work in industry, academia, or research (37m45s).
  • Having an understanding and appreciation of the social implications of technical work allows for making better decisions about what problems to solve, how to deploy technology, and what safeguards to put in place (38m8s).
  • There's a need to infuse responsible AI and computer science throughout the curriculum, and this effort has been ongoing for many years, even before AI safety became a prominent topic (38m23s).
  • The term AI safety has been co-opted to refer to Science Fiction doomsday scenarios, but the original focus was on responsible AI and computer science, as discussed in the book "Systems Era" (38m35s).
  • The discussion revolves around the practical issues and real actions to address problems of bias and systematic errors in AI, rather than focusing on science fiction concepts like evil robots or Doomsday scenarios (38m48s).
  • The importance of AI safety is emphasized, and it is suggested that the focus should be on managing and dealing with the downstream effects of AI, rather than just the technology itself (39m20s).

Regulation and the Focus on Problems, Not Just Technology

  • From a regulation standpoint, it is crucial to look at the problems people are trying to address and the tasks, rather than just the technology, to have a real impact (39m29s).
  • The power of technology is not up for debate, but how we use it is a critical factor to consider for regulation (39m54s).

Coding as a Fundamental Skill and the Role of Domain Knowledge

  • Coding is considered a fundamental skill, and everyone should learn to code as it is a problem-solving strategy that helps decompose a problem into specific tasks or challenges (40m15s).
  • The value of domain knowledge is questioned, and it is wondered whether the increasing access to computational methods and LLMs will lead to a loss of core domain knowledge in various fields (41m8s).
  • The role of domain knowledge is seen as crucial, and it is suggested that more people with deep knowledge of policy and other fields will be needed to complement the skills provided by AI and computational methods (41m23s).
  • AI is most exciting and creates the most value when applied to something that actually matters, and it is considered useless in isolation (41m37s).
  • The opportunities to identify compelling use cases for AI are vast, and it can be applied across the economy, including in healthcare, education, financial services, logistics, and more (41m55s).
  • Collaborations between individuals with deep domain knowledge and those with AI expertise can lead to exciting projects and opportunities to apply AI in various sectors, such as healthcare (42m5s).
  • Domain knowledge is crucial in understanding what problems to solve and how to approach them, allowing for a more focused and effective use of computational skills (43m18s).
  • Having domain knowledge helps narrow down the spectrum of possible approaches to a problem, increasing the probability of success (43m36s).
  • Collaborations between domain experts and those with computational skills can lead to a more effective use of techniques and a broader understanding of the problems being addressed (43m42s).
  • Interdisciplinary collaborations can broaden horizons and lead to new insights, as seen in the example of applying AI to healthcare and policy-making (43m54s).
  • Domain knowledge from different fields can be combined to have meaningful conversations and push forward in a particular area, as seen in the collaboration between AI experts and political scientists on policy issues (44m46s).
  • Conversations with people who have real domain expertise and background knowledge are essential in gaining a deeper understanding of issues and developing effective solutions (45m0s).

The Fast Cadence of AI and its Impact on Industries

  • The integration of AI and computer science (CS) with various industries is driving a fast cadence, creating stress for other industries to move faster, as seen in healthcare where FDA approval processes are being accelerated (45m15s).
  • The capacity to build applications quickly, thanks to new technologies, is enabling hundreds of thousands of people to build in a weekend what would have taken a year to build previously (45m56s).
  • The "move fast and break things" approach has a bad reputation, but it is possible to move fast and be responsible by using frameworks such as the "two-way door" concept, which allows for experimentation and reversibility (46m1s).
  • Ensuring responsible software development and experimentation is crucial to avoid harming others, and having the right processes in place enables fast and responsible development (46m26s).
  • The speed enabled by CS and AI is stressing many people, but working through these challenges together can help industries and individuals adapt and improve (47m14s).

The Need for Skilled Individuals and the Importance of CS Education

  • The shortage of CS majors and people with technical backgrounds is a significant bottleneck to achieving speed in AI project development, and increasing the number of skilled individuals is essential (47m58s).
  • Taking introductory CS courses, such as CS 106a, is a wonderful first step towards becoming highly skilled in CS, but there is still a massive shortage of truly skilled people (48m21s).

AI and the Changing Productivity Landscape

  • AI is neither going to create nor destroy jobs, but it will change the productivity landscape, and humans will decide how to internalize the gains or losses of that productivity (48m46s).
  • The use of AI in coding can make a software organization 20% more productive, but it's up to the executives to decide whether to use that gain to build more products or reduce the labor force (49m7s).
  • AI will change how efficiently and productively people can be, but human decisions will determine how those productivity gains are harnessed to solve bigger problems or pursue bigger tasks (49m32s).
  • The phrase "move fast and be responsible" is relevant in the context of AI, as it opens up new possibilities for human decision-making and resource deployment (49m59s).
  • AI is opening up the landscape of human decisions, enabling people to make new choices and deploy resources more effectively (50m10s).

The Democratization of AI and its Implications for the Future

  • Everyone should learn to code and think computationally to break down problems systematically (50m22s).
  • It's essential to remain focused on the opportunities presented by AI while continuing to refresh skills to keep up with the changes it brings (50m52s).
  • The democratization of AI offers vast new opportunities for everyone, and being able to use AI may become a necessary skill for many job roles in the future (51m25s).
  • In the future, being able to use AI and write code may be a huge advantage in many job roles, similar to knowing how to use the internet today (51m47s).
  • The development of AI is making it possible for people to learn a little bit of code and deploy valuable applications in a short amount of time, which is exciting for beginners and non-traditional software engineers (51m56s).
  • AI is changing the field of software engineering, making it more productive and accessible to a wider range of people, not just software engineers (52m16s).
  • The trend of AI making it easier to write code is expected to continue, and low-code applications, where a little bit of coding is required, will be more powerful than no-code applications (52m48s).
  • The challenge now is to educate everyone on how to take advantage of AI and low-code applications, similar to how people had to learn to use the internet (52m59s).

Conclusion and Resources

  • Andrew Ng and Mehran Sahami are leading the effort to educate the world on how to use AI and low-code applications, and resources for their courses are available on the console (53m38s).
  • A recording of the discussion will be sent out in about a week, and attendees are encouraged to explore the resources provided to learn more about AI and low-code applications (53m36s).

Overwhelmed by Endless Content?