Skip to content

Latest commit

 

History

History
146 lines (77 loc) · 7.76 KB

README.md

File metadata and controls

146 lines (77 loc) · 7.76 KB

Computer Science Study Notes

Favicon

We are all lost stars, trying to light up the dark.

中文版请移步这里

Visit here for the notes, and don't visit GitHub Pages:)

1 Intention & Background

When I began to study in the Physics Department of Peking University, I found myself not intersted in my major at all. During the period of exploring and learning, I was really surprised to realize I was keen on computer science. So I stepped on a journey to learn relative courses by myself, hoping that one day I may also make some contribution to this aspect. However, it's easier said than done. I met with tons of bewildering problems during this process, which made me doubt whether I really could learn by myself, and whether I could eventually succeed.

Thankfully, I turned to one of my CS teacher for help, who helped me with ardor and recommended me with two senior students. One told me the secret to his success in his research area; another introduced me with the cs-self-learning repository. Both the teacher and those two seniors fueled the light of hope with their selflessness. I began to study by myself again.

I took down notes carefully when studying. With the the content of my notes getting more and more, I suddenly thought:"Hey, wouldn't it be nice to integrate all the course notes I've taken and publish them on my website, so that others may refer to this when they are stuck like me?" That is how this note comes with luck. These notes may not be that accurate and perfect as you wish, but I will try my best to make them better.

2 Small Reminders

  1. The author of the notes does not major in computer science, and some errors and mistakes cannot be avoided. Sorry for any inconvenience it might cause.

  2. Some of the pictures in the notes come from Wikipedia. Out of consideration of copyright, I didn't modify the pictures. However, some of them do not have background, which cannot be seen clearly in the dark theme. The notes are in the dark theme by default; it is highly recommended that you turned into light mode by clicking the button on the left side of the search bar.

  3. The notes will be released in the form of pdf article, including Chinese edition. You will see it in the release part.

  4. Thank you for reading! Everyone is welcome to discuss with me via email.

3 References

If someone's original work is used but not mentioned, or being misused, either way please contact me via email for deletion, thanks.

Topic 1: Data Structures and Algorithms

  1. Algorithms Ⅰ & Ⅱ (Coursera) by Professor Robert Sedgewick & Kevin Wayne.

  2. CS61B: Data Structures and Algorithms (UC Berkeley) by Professor Josh Hug and the rest of CS61B staff.

  3. MIT 6.006: Introduction to Algorithms (MIT) by Professor Erik Demaine, Justin Solomonm, Dr. Jason Ku (Spring 2020).

  4. https://en.wikipedia.org/wiki/Tree_traversal.

  5. By The original uploader was Jasampler at Spanish Wikipedia. - Transferred from es.wikipedia to Commons., Public Domain, https://commons.wikimedia.org/w/index.php?curid=1755344.

  6. https://en.wikipedia.org/wiki/Catalan_number.

Topic 2: C++ Programming

  1. CS106L: Standard C++ Programming (Stanford University) by Professor Avery Wang, Anna Zeng and the rest of CS106L staff.

  2. CS61B: Data Structures and Algorithms (UC Berkeley) by Professor Josh Hug and the rest of CS61B staff.

  3. CS106B: Programming Abstractions (Stanford University) by Professor Marty Stepp and the rest of CS106B staff.

  4. CS61A: Structure and Interpretation of Computer Programs (UC Berkeley) by Professor John DeNero and the rest of CS61A staff.

  5. https://en.wikipedia.org/wiki/Standard_Template_Library.

  6. https://learn.microsoft.com/en-us/cpp/standard-library/cpp-standard-library-overview?view=msvc-170.

  7. https://en.wikipedia.org/wiki/C%2B%2B_Standard_Library.

  8. https://en.wikipedia.org/wiki/Namespace.

  9. https://en.cppreference.com/w/.

Note: Content of CS61A and CS61B are partly used for the Object-Oriented part.

Topic 3: Python Programming

  1. CS61A: Structure and Interpretation of Computer Programs (UC Berkeley) by Professor John DeNero and the rest of CS61A staff.

  2. https://en.wikipedia.org/wiki/Iterator.

Topic 4: Computer Architecture

  1. CS61C: Great Ideas in Computer Architecture (UC Berkeley) by Professor Dan Garcia, Lecturer Stephan Kaminsky, Sean Farhat, Jenny Song, Peyrin Kao, and the rest of CS61C staff.

  2. CMU 15-213: Introduction to Computer Systems (Carnegie Mellon University) by Professor Randal E. Briant, David R. O'Hallaron, Brian Railing, Phillip Gibbons, David Varodayan, Mohamed Farag, and the rest of CMU 15-213 staff.

  3. Computer Systems: A Programmer's Perspective (3rd Edition) by Randal E. Bryant & David R. O'Hallaron.

  4. https://en.wikipedia.org/wiki/Byte.

  5. https://en.cppreference.com/w/cpp/language/sizeof.

  6. https://en.wikipedia.org/wiki/Sizeof.

  7. By Aeroid - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=137790829.

  8. https://en.wikipedia.org/wiki/Segmentation_fault.

  9. https://en.wikipedia.org/wiki/Bus_error.

  10. https://en.wikipedia.org/wiki/Floating-point_arithmetic.

Topic 5: Operating System

  1. CS162: Operating System (UC Berkeley) by Professor John Kubiatowicz and the rest of CS162 staff.

Topic 6: Database System

  1. CS186: Introduction to Database Systems (UC Berkeley) by Professor Alvin Cheung, Joe Hellerstein and the rest of CS186 staff.

Topic 7: Rust Programming

  1. CS110L: Safety in Systems Programming (Stanford University) by Ryan Eberhardt, Julio Ballista, Thea Rossman and the rest of CS110L staff.

4 How to use it

For the colors in the notes, here are their meanings:

  • BlueViolet: to indicate different sections of a chapter.
  • OrangeRed: to highlight important parts.
  • DarkOrange: to indicate definitions.
  • Fuchsia: to indicate different points in a list.
  • LawnGreen: to indicate mathematical proof.
  • IndianRed: to indicate examples.

5 Contribute to This Project

All kinds of contributions, including opening issues & pulling request, are welcome! The notes are meant to help more people!

You can help refine this documentation by:

  1. Open an issue
  2. Pull request
  3. Use email to contact me and point out the mistakes: kekeandzeyu@gmail.com

These notes are taken and published using Writerside. If you are not familiar with this tool, you can also open an issue or contact me via email.

This repository is used for storing the original files edited in Writerside; csstudy repository is used for storing published web archive.

6 License

The notes are under MIT License.

All the references in the notes are under the original licenses.

7 Acknowledgements

Above all, I'd like to express my sincere gratitude to all those professors and TAs in the list above, who selflessly imparting his profound knowledge to us beginners, and made those learning resources public to everyone. The valuable knowledge has benefited me a lot and will be unforgettable for my whole life.

In addition, I'd like to express thanks to all those teachers and seniors who help me during my self-learning process.

Lastly, I'd like to reserve this part for my mother. For all these years, she has dedicated her life to nurture me, and . We have experiencd all those ups and downs together; it is incredibly hard to raise me under so much hard circumstances, and she has sacrificed all of herself to bring me up. During all this process of learning computer science myself, she always have my back, no matter what difficullties I encounter. This repository is certainly not even a little success, but I want to accredit everything I achieve to her sacrifice and hard work, without which I cannot accomplish anything.