# Foundation4AIandSE **Repository Path**: tmacgxd/Foundation4AIandSE ## Basic Information - **Project Name**: Foundation4AIandSE - **Description**: Foundation for AI and Software Engineering, including all kinds of lecture notes, demos and prototypes. - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2021-12-30 - **Last Updated**: 2021-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Foundation for AI and SE > Foundation for AI and Software Engineering, including all kinds of lecture notes, demos and prototypes. > > 我天真的以为一年可以完成这些内容。实际看,三个月下来,进展十分的缓慢。所以还是基于客观事实,扎实推进,把这个事情当作一个三年规划吧。贵在坚持!我想做一点深入的理解和总结,注重背后的原理和设计理念,而不是浅尝辄止。 > > 特别地,当你在工作中无法学习更多的时候,总要找一个契机让自己静心学习! 道理上,我想记录 * Notes: * AI学习笔记 * 程序分析学习笔记 * 程序语言笔记 * 算法笔记 * Academic: * 论文survey * 具体论文的内容 * Product: * 商业工具的介绍和特色 * Demo: * 各种工具的demo * 各种特性的demo * Prototype: * 我的一些设想的原型 * index.md: 记录各种大的索引,方便查询 * share.md: 记录各种有意思的blog或者其他,分享知识 --- 目标: 1. 补齐论文知识 2. 入门DL 3. 程分析深入 4. 摸透Jetbrains特性 5. 深入理解PSI 6. 规划未来要做哪些事情以及路线 输出: 1. 软工领域工作矩阵 2. 辅助编程相关的技术方案 3. 各种商业工具特性矩阵 4. 提供一个自己的Pipeline与prototype TODOs: | 类别 | 想干的事 | 目标 | | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | | 学术 | 1. 查看最近5年软工领域和IDE相关的论文 2. 查看最近十年:代码搜索、代码补全、API文档处理、程序分析相关的论文 【ICSE、FSE、ASE、ISSTA、PLDI、MSR】 | 1. 形成知识图谱,都有什么方向解决了什么问题 2. 形成一套方法的大全集 | | 理论 | ML&DL入门: 1. 李宏毅的PPT 2. 李宏毅的视频教程 https://github.com/datawhalechina/leeml-notes https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html 3. python DL的书 4. python ML的书 5. CS 229 https://see.stanford.edu/Course/CS229 6. 动手学DL https://zh-v2.d2l.ai/index.html 7.机器学习入门课 https://www.icourse163.org/course/WZU-1464096179?tid=1464959450 | 1. 理解DL的原理 2. 理解DL的模型特点 3. 上手做一个小的例子 | | 理论 | 1. 南大的PPT 2. type system 3. lecture notes on SA | 1. 回顾分析技术原理 2. 积累高大上的说法 | | 技术 | 学习Kotlin | 1. 学会Kotlin语言的语法和用法 | | 技术 | 学习Rust | 1. 学会Rust语言的语法和用法 | | 技术 | 1. Lucene的使用 2. ES的使用 | 1. 看正常使用流程和功能 2. 看对中文的支持 | | 技术 | Neo4j的使用 | 1. 图模式的建模和使用 2. 应用图数据库完成一些特性 | | 技术 | grpc使用 | 1. 进程间通信的原理 2. 通信实践 | | 技术 | Gradle使用 | 1. gradle能力和配置 2. 如何现在依赖的接口 | | 技术 | 符号执行与约束求解 | 使用 | | 技术 | Tree-Sitter使用 | 使用 | | 技术 | https://comby.dev/ | 使用 | | 实践 | Jetbrains 0. 官网资料整理 1. user manual查看有兴趣的使用一下 2. sdk manual查看能力 3. research group 查看他们的研究内容 4. plugin-demo都看一遍 5. PSI设计 6. 打开项目快速索引的过程 7. java分析代码的过程 8. 代码补全的过程 9. 搜索的过程 10. PSIMiner 11. jetbrains解析java的过程 | 1. 整理有意思的功能 2. 按照功能列表维护一个知识图谱,设想如何实现 3. 摸清楚index过程 4. 摸清楚PSI设计 5. 摸清楚如何设计内置的检测模型 | | 实践 | findbugs 1. 整个代码流程 2. 如何设计缺陷模式 | 1. 理解轻量级工具解析过程 2. 理解设计模式 | | 实践 | javaparser&ASM 0. 提取类和方法的签名 1. 查看如何生成AST 2. 查看type分析的过程 3. 构建CFG、DFG 4. 独立工具获得Tokens 5. 独立工具获得图结构 6. 独立工具做分析 - inspect code部分 | 1. 构建中间表达 2. 构建独立的分析工具 | | 实践 | data driven SE 0. 获得代码 1. 图数据库构建文档和代码的关系 2. 挖掘API的调用关系以及条件 3. 基于代码结构提供搜索能力 | 1. 基于ML的能力构建应用demo | | 实践 | DL driven 1. 代码向量化(code2seq,code2vec) https://github.com/src-d/awesome-machine-learning-on-source-code 2. 代码缺陷预测 3. 代码相似度预测 | 1. 基于DL构建应用demo | Waiting List: * DeepLearning深入学习 https://www.zhihu.com/question/26006703 https://www.tensorflownews.com/2018/04/17/dlresource/ https://see.stanford.edu/Course/CS229 https://c.d2l.ai/stanford-cs329p/ - SVF学习 https://yuleisui.github.io/publications/cc16.pdf - Scala学习 - 深入理解JVM - JAVA spec学习 - JVM spec学习 - Rust学习;rust analyzer - TS学习 - Go学习 - android开发 - vim - antlr - cmake - 深入理解体系结构