CSBasicKnowledge

"Open Source allows people to build on a solid base of previous knowledge, without some silly hiding."

- Linus Torvalds

  欢迎来到这个专注于计算机科学基础知识的仓库。本仓库的目标是补充计算机专业教育中可能缺失的知识点,提供广泛、优质的学习资源。

  我们鼓励并期待有缘人加入我们,共同维护和丰富这个仓库。无论是添加新内容,还是改进现有内容,您的贡献都将使这个仓库变得更好。

CS

  • CS 自学指南: [zh-cn] [en]
  • OI Wiki(ACMer必备): [zh-cn]
  • The Missing Semester of Your CS Education: [en] [zh-cn]
  • CS免费编程书籍:[Github]
  • Crash Course Computer Science(个人觉得值得观看的计算机知识速成科普课程): [Origin_YouTube] [CN_Bilibili] [CN_Source]
  • 在有用和没用之间徘徊的速查网站:[zh-cn]

本章的内容是Programming Language,期待大佬补充内容。

Program Synthesis & Automated Reasoning

  • 相关课程:

    • 威斯康辛 CS703:[Github]
    • UCSD CSE291:[Github]
    • MIT Introduction to Program Synthesis:[Page]
    • Automated Reasoning课程:[en]
  • Satisfiability Modulo Theories:[Paper]

  • Z3:最常见的SMT Solver:[Paper] [GitHub] [Tutorial]

    • Z3-rise4fun:[Page]
    • Z3 Playground:[Page]
    • Z3 python API:[Page]
  • PySMT:可与多个SMT求解器进行交互的符号模型检验和约束求解的Python库:[Page]

  • 程序修复:[Paper]

  • 香蕉空间:

Program Analysis

  • 静态分析:
    • 相关课程:
    • 符号执行:A Survey of Symbolic Execution Techniques:[Paper]
    • 指针分析:Pointer Analysis:[Paper]
    • 堆分析:Shape Analysis:[Paper]
    • 参数化分析:[Paper]
  • 动态分析:
    • Fuzzing(这个也可以放在Security):[Paper]
      • CS研究生如何入门模糊测试方向?[Page]
      • Fuzzing技术总结 [Page]
      • Fuzzing Notes [Page]
      • AFL:[GitHub] [Tutorial]
      • Fuzzing-101(练习afl++工具,可作为fuzz入门的十个“小”练习)[GitHub]
  • 程序分析工具:
  • LLVM:[Book]

CG

本章的内容是Computer System,涵盖sys的各个方面,包括arch/os/storage/db等等,期待大佬补充。

HPC

System

Security

  • ctf-wiki: CTF wiki
  • awesome-ctf-resources: A list of Capture The Flag (CTF) frameworks, libraries, resources and software for started/experienced CTF players 🚩

AI这一章节有太多可以津津乐道的内容,期待各位大佬补充。

PyTorch

Framework

  • pytorch-lightning: Pretrain, finetune and deploy AI models on multiple GPUs, TPUs with zero code changes.

Visualization

  • wandb: 🔥 A tool for visualizing and tracking your machine learning experiments. This repo contains the CLI and Python API.
  • PyTorch tensorboard: How to use tensorboard in PyTorch.
  • SwanLab: ⚡️SwanLab: track and visualize all the pieces of your machine learning pipeline. 跟踪与可视化你的机器学习全流程

HuggingFace

Dataset下载

NLP(Natural language Processing)

CV(Computer Vision)

object detection

segmentation

Vision-Language Model

  • VLM_survey: Vision-Language Models for Vision Tasks: A Survey
  • LLM-in-Vision: Recent LLM-based CV and related works. Welcome to comment/contribute!

Audio & Speech

  • Speech-Resources: 语音方向实验室/公司/资源/实习等,欢迎推荐或自荐
  • metame-ai/awesome-audio-plaza: Daily tracking of awesome audio papers, including music generation, zero-shot tts, asr, audio generation
  • SpeechTasks: This is a list of speech tasks and datasets, which can provide training data for Generative AI, AIGC, AI model training, intelligent speech tool development, and speech applications.
  • ai-audio-startups: Community list of startups working with AI in audio and music technology
  • speech_rankings: A CSRankings-like index for speech researchers
  • INTERSPEECH-2023-Papers: INTERSPEECH 2023 Papers: A complete collection of influential and exciting research papers from the INTERSPEECH 2023 conference.

SSL

ASR

  • kaldi: Kaldi Speech Recognition Toolkit
  • next-gen kaldi
    • k2-fsa/icefall: The icefall project contains speech-related recipes for various datasets using k2-fsa and lhotse.
    • lhotse-speech/lhotse: Tools for handling speech data in machine learning projects.
  • openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
  • awesome-whisper: Awesome list for Whisper — an open-source AI-powered speech recognition system developed by OpenAI

Generation

Audio/Speech LLM

  • QwenLM/Qwen-Audio: The official repo of Qwen-Audio (通义千问-Audio) chat & pretrained large audio language model proposed by Alibaba Cloud.
  • awesome-large-audio-models: Collection of resources on the applications of Large Language Models (LLMs) in Audio AI.
  • Large-Audio-Models: Keep track of big models in audio domain, including speech, singing, music etc.

Dataset

Recommendation System

Large Language Model

  • LLM-action: Github: zh-cn
  • LLMSurvey: Github
  • LLM-Agent-Paper-List (Fdu NLP): Github
  • llamafia.github: [Github] 一个中文前沿 AI / LLM 开源讨论空间
  • Large Language Model Course: [Github]
  • 中文LLaMA&Alpaca大语言模型+本地CPU/GPU训练部署 (Chinese LLaMA & Alpaca LLMs): [Github]

Tutorials

  • 一些国内的广为人知的视频教程,适合边睡边看:
  • 一篇不太专业的如何读论文的小文档:[pdf]
  • paper with code:[page]
  • 算法知识应知应会:[Github]
  • Microsoft AI-EDU: [zh-cn]
  • 机器学习入门指南: [zh-cn]
  • CS229机器学习技巧和秘诀速查表: [zh-cn]
  • 科学空间(苏剑林): [zh-cn]
  • 深度学习500问: [Github: zh-cn]
  • awesome-ai-tools: [Github: en]
  • Learning Research: [Github: zh-cn]
  • Stanford HowToReadpaper: [page] [pdf]
  • 有关迁移学习的一切的资料: [Github]

Prompts

CUDA & Nvidia

本章节主要讲一些学术相关的知识,包括文献搜索,科研经验、读博体验等,期待大佬补充内容。

Academic常用知识

论文写作

  • learning_research: 科研经验总结
  • English-Writing: Enhance Your English Writing for Science Research 写论文英语素材
  • ML Visuals: 🎨 ML Visuals contains figures and templates which you can reuse and customize to improve your scientific writing.

常用工具

Tenure-Track Asst. Professors and PhD students

  • Awesome Lists for Tenure-Track Asst. Professors and PhD students: [Github: en & zh-cn]
  • 一个博士生在科研大组的生存指南: [pdf]
  • Collection of advice for prospective and current PhD students: [Github: en]
  • A Survival Guide to a PhD: [en]
  • nlp-phd-global-equality: A repo for open resources & information for people to succeed in PhD in CS & career in AI / NLP

本章节包含与写作有关的知识,欢迎大佬补充。

CV & Resume

LaTeX & Markdown

LaTex Beamer tutorial

Markdown

Typst

本章节包括了CS中的实用工具和技能,欢迎大佬补充。

Linux

  • 中科大 LUG 基础 Linux 教程: [zh-cn]
  • 南京大学计算机科学与技术系计算机系统基础: Linux入门教程
  • 鳥哥的 Linux 私房菜:[zh]
  • 从 Socket error 丢失网络连接的 Linux SSH 恢复 pts 会话:[zh-cn]

    下次记得运行长时间程序前先使用 screentmux

  • Update GCC

Shell

Vim

  • vimtutor 关于 vim 最基础的教程,安装 vim 之后自带的命令
  • 聪明地学习 vim: [GitHub: en]/[GitHub: zh-cn]
  • Vim命令速查表: 简介:Vim 命令速查表,注释化 vimrc 配置文件,经典 Vim 键盘图,实用 Vim 书籍,Markdown 格式,目录化检索,系统化学习,体系化配置工具集,快速熟悉使用。✨
  • Vim Cheat Sheet

Git & Github

  • Learn Git Branching(强推): [zh-cn]
  • Pro Git 中文版
  • Git lfs install
  • Gitchat: [zh]
  • Git规范化提交
    • 约定式提交,或许可以规范你的Github提交:[zh-cn]
    • Commit message 和 Change log 编写指南:[zh-cn]
    • commitizen/cz-cli: [Github]
  • 第一次参与开源项目,如何提交pr: [Github: zh-cn] | [mmcv contribution]
  • 给 Github Desktop 设置代理
  • clone远程仓库的指定分支
    git clone -b + 要clone的分支名 + 仓库地址 
    # eg: git clone -b dev git@github.com:CS-BAOYAN/CSBasicKnowledge.git
    
  • SSH key的生成:
    • 检查SSH key是否存在:
      ls -al ~/.ssh
      # Lists the files in your .ssh directory, if they exist
      
    • 生成SSH key, 会在/your_home_path/.ssh/生成id_rsa和id_rsa.pub
      ssh-keygen -t rsa -C "your_email@example.com"
      # Creates a new ssh key using the provided email
      Generating public/private rsa key pair.
      Enter file in which to save the key (/your_home_path/.ssh/id_rsa):
      

How to Debug

gdb

  • gdb-dashboard: 使用 Python 在命令行中可视化使用 gdb 的小工具

pdb & ipdb

  • 10分钟教程掌握Python调试器pdb: [zhihu]
  • 使用ipdb在终端调试:[zhihu]

debugpy

  • vscode python设置debug: [zhihu]

vscode debug setting

Conda

  • miniconda环境配置以及jupyter notebook使用指南: [zhihu]
  • micromamba: miniconda 的平替,同时依赖解析等基础操作更快: [GitHub]
  • 清华大学开源镜像站-miniconda的下载
    # 下载安装脚本
    wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh  
    
    # 修改权限
    chmod 777 Miniconda3-latest-Linux-x86_64.sh  
    
    # 执行安装脚本
    bash Miniconda3-latest-Linux-x86_64.sh
    
    # 删除安装脚本
    rm Miniconda3-latest-Linux-x86_64.sh  
    
    # 刷新环境变量
    source ~/.bashrc
    

Docker

  • Docker-从入门到实践: [zh-cn]
  • How to Install PyTorch on the GPU with Docker: [en]
  • Vscode连接远程服务器中的docker容器进行开发: [CSDN]
  • docker权限问题:[CSDN]
  • 如何临时退出一个正在交互的容器的终端,而不终止它? 按 Ctrl-p Ctrl-q。如果按 Ctrl-c 往往会让容器内应用进程终止,进而会终止容器,如果没有在IDE里面没有成功,请去除IDE对应的快捷键。
  • docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
    1. https://github.com/NVIDIA/nvidia-docker/issues/1238
    2. https://github.com/NVIDIA/nvidia-docker/issues/1243
  • Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
    sudo chmod 666 /var/run/docker.sock
    

程序员指南

MISC

  • 如何设置代理: [PDF]
  • 耗时很长的程序忘加nohup就运行了怎么办?: [zhihu]
  • linux 多线程下载工具-aria2c: [zhihu.com]
  • 你的指法真的标准吗?打字练习一下:[zh-cn]
  • 利用学生身份可以享受到的相关学生优惠权益: [Github]
  • 论文常用词汇i.e.,e.g.,etc.,viz.,et al.的前世今生: [zhihu]
  • 中国程序员容易发音错误的单词: [Github: zh-cn]
  • 图吧工具箱: [page]
  • 文献管理软件 Zotero:安装设置教程及各插件配置(知网支持、影响因子、被引数): [zh-cn]
  • 阿里巴巴矢量图标库: [page]
  • Paper Picture Writing Code: Github
  • 魔盾安全分析(可疑软件在线分析):[zh-cn]
  • 崔庆才 Python3 网络爬虫学习教程: [zh-cn]
  • youtube下载工具:[Github]
  • 掘金翻译计划:[Github:zh-cn]
  • 桌面管理工具:[Github:zh-cn],推荐1.0.4.1release的免费版!
  • 论文代码查找网站:[page]

【重要】For contributers

鸣谢

衷心感谢以下参与者对本指南的贡献。

Made with contrib.rocks.

贡献指南

若希望对CSBasicKnowledge进行贡献,请以SUMMARY.md为大纲,在src文件夹下进行markdown文件的添加即可。

目前,mdbook对数学公式的支持还不完善,如您需要使用数学公式,请参考下面的数学公式支持部分。

(可选) 如果您在部署了mdbook并运行后,可以直接在SUMMARY.md中添加章节,例如:

# CSBasicKnowledge

- [example](./example/example.md)

mdbook会自动创建example文件夹和example.md文件。 当然,mdbook依赖于rust语言开发,如果您不喜欢rust相关内容,可以无视可选项及后续的本地部署部分。

数学公式支持

注意: MathJax 目前仍不能使用 $$ ... $$ 作为分隔符,并且 \[ ... \] 分隔符需要额外的反斜杠才能工作。 希望这个限制很快能解除。

注意: 当您需要在 MathJax 块中使用双反斜杠(例如 \begin{cases} \frac 1 2 \\ \frac 3 4 \end{cases} 等命令中)时,您需要添加两个额外的反斜杠(例如,\begin{cases} \frac 1 2 \\\\ \frac 3 4 \end{cases})。

行内公式

行内公式由 \\(\\)包围。例如,要渲染以下行内方程 \( \int x dx = \frac{x^2}{2} + C \),可以这么写:

\\( \int x dx = \frac{x^2}{2} + C \\)

块公式

块公式由 \\[\\]分隔。 要渲染下面这个块公式

\[ \mu = \frac{1}{N} \sum_{i=0} x_i \]

可以这么写:

\\[ \mu = \frac{1}{N} \sum_{i=0} x_i \\]

本地部署

CSBasicKnowledge的bookfy基于mdbook实现,该工具基于Rust开发,是markdown文件书本化非常值得推荐的工具。Rust的圣经 The Rust Programming Language 便是利用了mdbook生成的。

要安装mdbook请安装Rust相关工具链。随后,通过Rust的包管理器cargo进行mdbook的安装:

cargo install mdbook

通常,mdbook会安装在$HOME/.cargo/bin,请将该目录添加至PATH

mdbook的运行非常简单,只需要:

# For detail, run `mdBook serve -h`
mdbook serve            # default 127.0.0.1:3000
mdbook serve -p 8080    # 127.0.0.1:8080