About us
This group is for individuals who are passionate about learning and self-teaching computer science.
I have recently started a job that requires programming. Being completely self-taught, there are many topics in computer science that I have never studied. As I believe in the power of knowing-what-you-do and learning things deeply, I want to understand computer science better.
While searching for resources, I found this very nice guide: https://teachyourselfcs.com/
The idea of this group is to study most of the materials suggested in this guide together, in order, every week. I think that the materials covered in the course of our meetings would roughly correspond to a (good chunk of a) Bachelor's degree in CS.
Contents and books:
- (DONE) Programming - DeNero: Composing Programs
- Computer Architecture - Bryant and O'Hallaron: Computer Systems: A Programmer's Perspective
- Algorithms and Data Structures - Skiena: The Algorithm Design Manual
- Operating Systems - Arpaci-Dusseau^2: Operating Systems: Three Easy Pieces
- Computer Networking - Kurose, Ross: Computer Networking: A Top-Down Approach
- Languages and Compilers - Nystrom: Crafting Interpreters
- Distributed Systems - Kleppmann: Designing Data-Intensive Applications
NOTE: It is not strictly required but extremely helpful to have at least some prior experience with programming. This is not a "Learn Python from Scratch" group, but the focus will more be on learning more deeply how computers, algorithms, etc., work. That being said, I myself am not a very experienced programmer, but I am willing to put in the work to close the gaps if necessary.
Upcoming events
1

CS:APP - Session 2: Representing, Manipulating Information (till Ch. 2.3)
·OnlineOnlineLet's Teach Ourselves Computer Science - Computer Systems! After finishing "Composing Programs", it's now time to dive into how computers really work!
We will follow Randall E. Bryant and David R. O'Hallaron's legendary book "Computer Systems: A Programmer's Perspective" (aka CS:APP). We will be using the "Third Global Edition" which can be found here:
https://www.cs.sfu.ca/~ashriram/Courses/CS295/assets/books/CSAPP_2016.pdfFor this session, please read Ch. 2.1-2.3 (Information Storage, Integer Representations, Integer Arithmetic), pp. 67 - 144, ideally before the meeting. It's a lot of pages, I know, but as it is mostly about integers it should hopefully not take too long! In the meeting, we can then discuss anything we did not understand or found particularly interesting!
If you like video lectures, there are some for this book by the authors (which do not cover everything but might be a very good complementary resource to reading the book).
2017 version (29 lectures, but bad audio)
https://www.youtube.com/watch?v=cEFXuhPm65k&list=PLtv4PQFH2yMas_SCMTEaE4eUIWWWiwISj&index=1
2020 version (26 lectures, good audio, Chinese subtitles :D)
https://www.youtube.com/watch?v=ScMxnXq6fbI&list=PLcQU3vbfgCc9sVAiHf5761UUApjZ3ZD3x&index=1***
In the professional world, this book is often described as the difference between a coder (someone who writes syntax) and a software engineer (someone who understands the system).
It is extremely useful if you want to learn about/work in, e.g. embedded systems, cybersecurity or backend development. And I think it will be just good "general knowledge" for anyone who is (planning on) working professionally with computers.The book uses the C programming language (from what I understand, one needs to know just the basics, and the book teaches the really hard stuff -- pointer arithmetic and memory allocation, for example -- from scratch) and teaches the x86-64 assembly language, which is the most used assembly language for PCs, especially with Intel or AMD processors. So get ready to learn some hardcore low level programming together -- it's gonna be great 😃
Here are the contents:
- A Tour of Computer Systems
- Representing and Manipulating Information
- Machine-Level Representation of Programs
- Processor Architecture
- Optimizing Program Performance
- The Memory Hierarchy
- Linking
- Exceptional Control Flow
- Virtual Memory
- System-Level I/O
- Network Programming
- Concurrent Programming
5 attendees
Past events
18

