- Course: https://cs61a.org
- Textbook: Composing Programs
- Duration: 4-6 weeks
- Topics:
- Functional programming
- Object-oriented programming
- Data structures
- Recursion
- DB
- Interpreters
- Duration: 1-2 weeks
- Topics:
- UNIX philosophy
- Shell scripting
- File system hierarchy
- Process management
- I/O redirection and piping
- 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
- 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
- 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
- Duration: 1 week
- Project: Build a parser for INI configuration files
- Duration: 1-2 weeks
- Project: Implement a tool to decode DMIdecode output
- Duration: 1 week
- Project: Create a simple build system similar to Make
- Skills:
- Dependency graph creation and traversal
- Process execution
- Duration: 2-3 weeks
- Project: Build a simple RPC server and client based on Redis protocol
- Skills:
- Network programming
- RPC
- Course: YouTube Playlist
- Duration: 4-6 weeks
- Topics:
- Number representations and computer arithmetic
- RISC-V assembly language
More TBD