Skip to content

Latest commit

 

History

History
100 lines (69 loc) · 2.98 KB

File metadata and controls

100 lines (69 loc) · 2.98 KB

Learn Programming

Program: Input -> Computation -> Output.

output = f(input)

C is effectively Assembly with syntactic sugar. C + Compiler/Assembler? = Assembly/machine code

Assembler vs compiler

Curriculum

Vertical Stack Learning

Start with practical CRUD app development while looping back to computer science essentials.

What is the destination, and what is the journey? From what are we starting with?

Start with writing a Next.js app on day 1, while understanding the fundamental concepts of how a computer works. How computers communicate with each other over a network. What is happening behind the scenes?

Distill primitives and core concepts from everything. Front-end dev can be described in the core primitives of Text, View, Image. Design programs use the primitives of Rectangle/Frame, Text, Image. Code uses the primitives of string, number, etc. How can we apply common thinking to optimitally learn every concept and perform tasks with the minimal amount of work and learning? While having a deep understanding of the entire stack.

Code Examples

main.c

int main() {
  return 1;
}

hello.c

int main(int argc, char *argv[]) {
  printf("Hello, World!\n");
}
man 3 printf

Compiling a C program

gcc hello.c -o hello -Wall

Architecture

(borrow concepts from the architecture world)

Research -> Problem Definition -> Developing Alternatives -> Evaluating Alternatives -> Selection -> Communication

Design

(borrow concepts from the product design world)

Game Development (Practical Programming Experience)

  • https://www.youtube.com/watch?v=uh8XaC0Y5MA – Connecting Unity Clients to a Dedicated Server | C# Networking Tutorial - Part 1
    • Covers designing a communication protocol with UDP/TCP with a C# client and dedicated server in the context of game development.

Resources