Skip to content

Latest commit

 

History

History
104 lines (80 loc) · 2.38 KB

basics_to_systems.md

File metadata and controls

104 lines (80 loc) · 2.38 KB

From Basics to Systems Programming

1. Foundations of Computer Science and Programming

CS61A: Structure and Interpretation of Computer Programs

  • Course: https://cs61a.org
  • Textbook: Composing Programs
  • Duration: 4-6 weeks
  • Topics:
    • Functional programming
    • Object-oriented programming
    • Data structures
    • Recursion
    • DB
    • Interpreters

2. UNIX and Systems Programming

Introduction to UNIX

  • Duration: 1-2 weeks
  • Topics:
    • UNIX philosophy
    • Shell scripting
    • File system hierarchy
    • Process management
    • I/O redirection and piping

3. Go language

Go Programming Language Intro

  • Go Tour: https://go.dev/tour/
  • Go by Example: https://gobyexample.com
  • Learning Go: 2nd Edition
  • Duration: 2 weeks
  • Topics:
    • Go syntax and basic constructs
    • Concurrency with goroutines and channels
    • Error handling
    • Interfaces and structs
    • Go modules and packages

TDD: Learn Go with Tests

  • Resource: https://quii.gitbook.io/learn-go-with-tests
  • Duration: 2 weeks
  • Topics:
    • Test-driven development methodology
    • Go testing framework
    • Benchmarking and examples
    • Mocking and dependency injection
    • Property-based testing

4. Practical Projects

Building Coreutils

  • Duration: 1 week
  • Project: Implement basic versions of common UNIX utilities in Go
  • Utilities to implement:
    • cat, echo, head, tail, wc, grep, sort, uniq, yes, true, false
  • Focus on:
    • File I/O
    • String manipulation
    • Command-line argument parsing
    • Error handling

INI Parser Project

  • Duration: 1 week
  • Project: Build a parser for INI configuration files

DMI Decode Project

  • Duration: 1-2 weeks
  • Project: Implement a tool to decode DMIdecode output

Make-like Project

  • Duration: 1 week
  • Project: Create a simple build system similar to Make
  • Skills:
    • Dependency graph creation and traversal
    • Process execution

Redis-based Server/Client Implementation

  • Duration: 2-3 weeks
  • Project: Build a simple RPC server and client based on Redis protocol
  • Skills:
    • Network programming
    • RPC

5. Computer Architecture

CS61C: Great Ideas in Computer Architecture

  • Course: YouTube Playlist
  • Duration: 4-6 weeks
  • Topics:
    • Number representations and computer arithmetic
    • RISC-V assembly language

More TBD