Thank you for helping improve this repository! Whether you're fixing formatting, renaming image files, or uploading your own notes, every contribution helps make this a better resource for everyone.
- Getting Started with Git
- Ways to Contribute
- Repository Structure Example
- Submitting Your Contribution
New to Git? No worries! Here's a quick-reference cheat sheet to get you up and running:
Basic workflow for contributing:
- Fork this repository using the "Fork" button on GitHub.
- Clone your fork to your local machine:
git clone https://github.com/<your-username>/CSNotes.git
- Create a new branch for your changes:
git checkout -b fix/markdown-syntax-2212
- Make your changes locally.
- Stage and commit your changes:
git add . git commit -m "Fix image link syntax in SoftwareTesting.md"
- Push your branch to your fork:
git push origin fix/markdown-syntax-2212
- Open a Pull Request from your fork to the
mainbranch of this repo.
Some notes in this repo were originally written in Notion or Obsidian, which use slightly different Markdown flavors than GitHub. This means certain formatting may not render correctly when viewed on GitHub.
Common issues to look out for and fix:
- Callout blocks — Notion/Obsidian callouts (e.g.,
> [!NOTE]) may not render as expected on GitHub. - Embedded images — Obsidian uses
![[image.png]]syntax; GitHub requires standard Markdown:. - Internal links — Obsidian wiki-links like
[[Note Name]]are not supported on GitHub. Replace them with standard relative links:[Note Name](../path/Note%20Name.md). - LaTeX/Math — Obsidian renders inline math with
$...$; GitHub supports this in some contexts but may need$$...$$blocks for display math. - Checkboxes and task lists — Ensure they use standard GitHub syntax:
- [ ]and- [x].
If you find a note that doesn't render properly on GitHub, feel free to open a pull request with the fix.
You are able to change both the syntax and alter the content or meaning of the notes.
However, these changes (the altering of the note content) will most likely take more time to review and merge as maintainers will have to check it more thoroughly.
Image files in the assets/ folders sometimes have unclear or inconsistent names, making them hard to identify or link to. You can help by renaming them to be more descriptive and consistent.
Guidelines for renaming:
- Use PascalCase (e.g.,
WaterfallProcessModel.png) — this is the existing convention in the repo, please follow it. - The name should clearly describe what the image shows (e.g.,
UMLClassDiagramExample.pnginstead ofimg1.png). - After renaming a file, make sure to update any references to that file inside the corresponding
.mdnotes. - Keep the file extension lowercase (
.png,.jpeg).
Example:
Before: assets/SoftwareTesting/img_023.png
After: assets/SoftwareTesting/BoundaryValueAnalysisExample.png
And in the corresponding .md file, update:
Before: 
After: Have notes for a course not yet covered in this repo? Contributions of new notes are very welcome!
Guidelines for uploading notes:
- Notes must be written in Markdown format. If you're new to Markdown, refer to this cheat sheet: Markdown Cheat Sheet
- Place your notes in the correct year and course folder (e.g.,
Year2/2212/). If the folder doesn't exist yet, create it following the existing structure. - If your note includes images, place them in an
assets/<NoteName>/subfolder within the course folder and link them using relative paths. - Add a
README.mdto any new course folder briefly describing what the course covers. - Make sure your notes render correctly on GitHub before submitting (preview the file on GitHub after pushing to your fork).
Folder structure to follow:
YearX/
└── XXXX/ ← Course code
├── README.md
├── TopicName.md
└── assets/
└── TopicName/
ImageName.png
CSNotes/
├── README.md
├── Year1/
├── Year2/
│ ├── 2208/
│ ├── 2209/
│ ├── 2210/
│ ├── 2211/
│ ├── 2212/
│ │ ├── README.md
│ │ ├── SoftwareEngineering.md
│ │ └── assets/
│ │ └── SoftwareEngineering/
│ └── 2214/
│ ├── README.md
│ ├── Sets.md
│ └── assets/
│ └── Sets/
├── Year3/
└── Year4/
GitHub will pre-fill an issue or pull request form from the templates in .github/. Use those instead of a blank issue/PR when you can.
When opening a pull request, please include a brief description of:
- What you changed
- Why the change was needed (e.g., "Image links used Obsidian syntax which doesn't render on GitHub")
- Which files were affected
Thank you for contributing!