CS146S is a good course, one of the reasons is that it teaches modern software engineers how to better collaborate with AI. Secondly, it basically covers all my modern coding capabilities. (It’s a joke!)
In the following content, I will embed the slides from the course as hyperlinks in my text. If you’re interested, you can click the hyperlinks directly to open the corresponding slides.
Basic Techniques
I think everyone, like me, has already mastered the basic capabilities. More clear and explicit prompts let LLMs execute instructions unambiguously. Additionally, there are prompt optimization techniques, and using Claude to optimize prompts.
The course also talked about how to build coding agents, emphasizing that you can use the Claude Code SDK. It’s now called Claude Agent SDK.
To enhance LLM capabilities, you can also use MCP services. I built git-mcp, and there’s also an unopen-sourced experimental startup MCP.
MCP a bit deeper (content from the PPT)

With MCP, it’s worth noting the Host/Server/Client concept. Many Hosts are not open-source. Deepchat’s Host can be referenced.
Limitations:
| |
IDE Agent
From the IDE perspective, I’ve switched from frequently using Cursor to using Claude Code + VSCode for programming. I feel Claude Code as a CLI is more powerful. However, I haven’t used Cursor for a while, so I don’t know if there have been some improvements. Trae’s solo mode is just like that, basically insufficient intelligence is the biggest problem. Trae CN.
Additionally worth mentioning is that Silas Alberti, Head of Research Cognition’s slides are very powerful.
This summary diagram is awesome. Is it really free to watch?

This article also mentions the concept of parallel agents.

So for me, the next direction to improve is cloud + async.
This is Silas Alberti’s advice:

devin and Claude Code Cloud are exactly the same. Actually, you can completely use Claude Code Cloud version for vibe coding.
Agent Manager
Engineers need to become agent managers, not just software engineers.

Under the Claude Code designer mindset, the software design process should be:
- Provide high level requirements 🟩
- Convert requirements into a design doc 🟩/🟦
- Implement solution from doc 🟦
- Add tests 🟦
- Ensure CI (continuous integration) passes 🟦
- Code review 🟦
- Update docs 🟦
My habit is more to write simple requirements, then generate design, then let Claude Code implement the rest itself.
I recently found it’s not that capable. I adopted a test-driven development approach to ensure every step is done correctly. Otherwise, CI and Add tests actually have no meaning.
Techniques for directing agents:
- Agent behavior files (Claude.md/Cursorrules/agents.md)
- Hooks
- Commands
- Subagents
I’ve already used subagents and commands a lot. But I haven’t found a killing scenario for hooks yet.
Best practice Claude Code

What I want to say is to use subagents as much as possible to avoid the “lost in the middle” phenomenon.
Claude Code CLI
Why did I buy Claude Code?

We can do more things through the SDK:
| |
Conclusion
This course is free, but the insights inside surpass most paid courses. If you can understand and quickly absorb it, don’t be stingy with your time, learn it.
