/CS-Hypomnema

A (Personal) Computer Science Note Collection.

Primary LanguagePythonOtherNOASSERTION

CS-Hypomnema: Computer Science Note Collection

Licence: CC BY-NC-SA 4.0

Note-taker: Baksi

This repository curates divers computer science notes. Its scope is bounded by my own interests, and it will keep updating as limited knowledge will never suffice.

If you are looking for a structured CS course, you should probably go for a programme offered by accredited organisations. However, I will advice some courses/books for the subjects that are not covered but important.

Anyone is more than welcomed to give suggestions, or even raise a PR.

Lastly, please feel free to star this repository if you found it interesting or boring (yeah, p ∨ ¬p).

Catalogue

According to Curriculum Guidelines for Undergraduate Programs in Computer Science (p. 14) by ACM and IEEE Computer Society, there are eighteen knowledge areas (KA) that consist the body of knowledge, which are used to label notes in this collection for reference.

Keyword Table
Code Knowledge Area (continued)
AL Algorithms and Complexity OS Operating Systems
AR Architecture and Organization PBD Platform-base Development
CN Computational Science PD Parallel and Distributed Computing
DS Discrete Structures PL Programming Languages
GV Graphics and Visualization SDF Software Development Fundamentals
HCI Human Computer Interaction SE Software Engineering
IAS Information Assurance and Security SF Systems Fundamentals
IM Information Management SP Social Issues and Professional Practice
NC Networking and Communication

About learning gives more details on the structure of knowledge.

I. Computer Science

  1. Introduction to Computer Science Editing
    Note based on CS50 course blended with some theoretical flavour. It covers the basics of C, Python, SQL, Web Programming content like Javascript, HTML and CSS, and important concepts in theoretical computer science.

For reading materials, Algorithms by S. Dasgupta et al is a good and concise book recommended by UC San Diego courses; Introduction to Algorithms by T. H. Cormen recommended by MIT courses is quite detailed in proofs (solutions of the exercises also available). *
There are also many open-source collections of algorithm implementations, which are useful during study, e.g. in Python and Java.
In addition, for visualizations there is Data Structure Visualizations.

  1. Graph Theory and Algorithms (with Python) Editing
    This note is uploaded but still upon editing for mathematical details.
    A summary note from NET04x (IMTx) and ALGS202x (UCSanDiegoX) with a nicely balanced theoretical and practical content. In the end, an example on applying combinatorial game theory to win a game described by graph is provided.
    For anyone who wishes to go deeper in the computational theory (esp. after studied Chapter IV), reading of Complexity and NP-Complete Problems is highly recommended.

  2. Complexity and NP-Complete Problems Pending
    A note from ALGS203x (UCSanDiegoX). It covers NP problems, approximate algorithms and algorithm analysis.

II. Maths

Mathematical prerequisites are covered in Mathematics for Computer Science (MIT).

  • Coding theory (with Python) Pending
    This is a coding theory text (thanks to Prof. PPM) with Python implementations. Not ready to upload so far.

III. Scientific Computing

IV. Developments

Others
  • Zsh (Z shell) Introduction with Comparison to Bash Pending
    This is a Learn X in Y minutes-styled tutorial of Zsh. It act as a fast introduction for programmers, esp. those who have knowledge about Bash.

  • Introduction to Web Development Pending
    Note based on CS50w course structure. It covers Git, HTML/CSS, JavaScript, Web Frameworks like Flask, Django et.c.

V. Quantum Computing

For reading materials, Quantum Computation and Quantum Information (Cambridge, 2010) is the choice, though a bit dated, it is a classical reference for stepping into the field.

Others
  • D-Wave machine Introduction Pending
    This was part of my undergraduate thesis topic. The code is available now, see here.

Acknowledgement

Unless otherwise specified, the repository CS-Hypomnema and its contents are Copyright BaksiLi, and are licenced under the Creative Commons BY-NC-SA (Attribution-NonCommercial-ShareAlike 4.0 International) Licence.

I used Byword (with Standard Markdown Syntax) for taking notes. However, it might encounter problems of compilation on GitHub, esp. with LaTeX. I will try to tackle this in the future.

Copyright (c) 2019 BaksiLi